admin 管理员组文章数量: 887021
2023年12月17日发(作者:正则表达式生成神器)
研发部文档中心
文档编号 产品版本
2.0
密级
一般
共 页 名称:使用Eclipse开发struts2教程
使用Eclipse开发struts2教程
(仅供内部使用)
(注:文档命名规则:文档名+版本号-作者-时间)
例如:新浪宁波网短信业务概要设计2.0-黑山-
拟制:
审核:
审核:
批准:
版权所有 不得复制
黑山 日期:
日期:
日期:
日期:
2009/01/20
SourceWare Info Tech Ltd. Page:
1
使用Eclipse开发struts2教程
关键词:J2EE,iBatis,ORM
摘 要: 本文档是eclispe开发struts2的一个教程学习文档。
缩略语清单:
ORM:Object Relation Map
注意在引用这些缩略语是注意区别大小写,没有在此出现的不能被直接引用。例如:EJB统一为大写。
注:缩略语需要根据情况增减
修改历史:
修改历史清单
作者
黑山
名称
初稿
时间
2009-01-20
SourceWare Info Tech Ltd. Page:
2
一、 安装
1. 安装Eclipse:
去/downloads/网站上下载Eclipse IDE for Java EE
Developers(开发JAVA EE的IDE)。然后解压缩即可使用!
假设解压缩到D:eclipse目录。
2. 安装struts for eclipse的插件:(如果不想安装这个插件也可以,只是action映射文件要自己配置了)
去/ 网站上下载Alveole 这个插件也可以直接在线安装(比较慢)。先说直接下载插件再安装,下载下来以后解压缩,得到features和plugins两个目录,直接把这两个目录拷贝到d:/eclipse目录下即完成插件的安装。
在线安装方法:
运行,然后找到:
然后点Add site:
SourceWare Info Tech Ltd. Page:
3
在在线更新的地址拦里输/update/:
入地址:
确定以后形如:
然后选中需要安装的项目,点击install安装即可完成安装,其他可在线安装的插件安装方法也一样!
比如ibatis插件的安装,可以去/下载插件,然后
除了输入一个远程在线安装地址以外,还可以选择一个本地的文件夹(该文件夹包含features和plugins目录以及文件);也可以选择一个本地安装压缩包,这个zip包里包含了features和plugins目录以及文件。
Eclipse的插件非常丰富,此外还有hibernate插件,c++开发插件等等,但插件安装的越多,eclipse运行速度也会变得越慢,因此在不影响运行效率的前提下安装插件!
SourceWare Info Tech Ltd. Page:
4
二、 创建一个web项目
首先创建一个动态web项目,
SourceWare Info Tech Ltd. Page:
5
默认即可,然后点finish.
接下来给这个动态web项目增加struts2功能,设想如果没有struts2功能,我们必须手工编辑文件,在里面增加struts的listener等配置,以及的action配置文件等信息。现在有了这个struts2插件,这些事情就有插件帮您完成了,点file->new->others
找到:
SourceWare Info Tech Ltd. Page:
6
然后点下一步,
SourceWare Info Tech Ltd. Page:
7
输入文件名,这个文件主要是让eclipse记住一些可视化的配置信息,然后点finish。
这个时候插件就自动给我们生成好了开发struts的开发框架代码:
就类似于webwork里的文件。打开查看文件,发现也自动给我们添加好了
Filter等信息。
SourceWare Info Tech Ltd. Page:
8
三、 Struts2 Hello World
接下来创建一个action,双击文件,出来一个可视化编辑器,单击按牛,
输入以下信息,Node label只是这个action的别名,容易理解即可,action name是ie上访问的action名字,package是指加到里的哪个package下面,可以自己添加新的package,这里加到默认的alveole下面,action class选择ction
Action method不填写,默认即execute方法。点ok按牛,界面上出来一个图标:
,表示已经建好了一个struts2的action节点。
接下去新建一个action类,名字为ction,就不多说了。
以上已经建好了struts2的action节点,但是还没有配置result,继续双击文件打开可视化编辑器,单击按牛,创建一个jsp result,
SourceWare Info Tech Ltd. Page:
9
点ok,
然后我们在WebContent目录下创建一个文件,里面写hello world!。
以上图的界面上出来2个图标,一个是struts2的action节点,一个jsp result节点,然后我们点这个按牛,创建一个link,把鼠标移到hello world上,按下鼠标左键不动,然后拖到hello jsp上释放左建,在下方的编辑区会出来如图所示:
Link name也就是result的名字,fwd type也就是类型,可以选择多种结果类型,这里选择distpacher,参数可以根据你的需求选择是否加入。最后点ok。
Link就别创建成功了:
以上已经创建好了一个action名字叫hello,也有一个执行结果success了
接下去要运行这个web项目,但还要添加tomcat5.5
SourceWare Info Tech Ltd. Page:
10
选择server,然后点下一步,
SourceWare Info Tech Ltd. Page:
11
选tomcat5.5,
把项目加进去
这个时候去项目的server视图可以看到tomcat5。5了:
SourceWare Info Tech Ltd. Page:
12
先运行按牛运行一下。
可以看到ie上输出的预期的结果!
小结:发现和webwork相比,action类可以是一个pojo类,不继承任何父类,默认只要有一个public String execute 方法即可,也可以指定另外其他的方法。
四、 Velocity开发
现在我们要加入velocity模板技术,也就是让action配置的输出结果是一个velocity模板文件。
首先我们在web-inflib目录下拷贝以下jar包文件:
1.
2.
3.
4.
,刷新整个项目,查看是否在web-inflib目录下已经包含这些jar包。
如前所示,我们加入一个struts2 的结果,label写error,path写/,然后创建一个action到这个result的link :
SourceWare Info Tech Ltd. Page:
13
点ok,
创建一个文件,里面写$hello
修改类:
运行tomcat,则:
SourceWare Info Tech Ltd. Page:
14
和
注意:如果jar包没有加全,有可能会报:
No mapping found for dependency [type=ty 类似的错误!
采用velocity开发,会丧失jsp标签库的强大威力,因此建议采用freemarker模板技术,以便更好的和ajax技术相结合。
五、 Jsp struts2标签库开发
在先前建立的当中加入如下代码:
<%@ taglib uri="/struts-tags" prefix="s"%>
第一行代码是定义标签库,即使用哪个标签库,以及前缀是什么。
第二行是一个输出hello这个属性内容的标签。
注意中文乱码问题:
编辑ties文件,把ng=UTF-8修改成
ng=GBK,或者ng=GB2312
GBK的字符集要比GB2312大,因此如果使用GB2312会导致一些生僻的汉字无法正常显示,建议采用GBK.
另外jsp的contentType要定义字符集GBK,代码如下:
<%@ page contentType="text/html; charset=GBK" language="java"%>
SourceWare Info Tech Ltd. Page:
15
六、 Freemarker模板技术开发
按先前的方法,增加一个result,名字是input,然后对应的结果页面是,
如图:
这样就建立了一个result类型为freemarker的结果页面。
编辑文件,输入以下内容:
<#if hello=="2">input content is ${hello}#if>
Test hello: ${user!"user is null"}
${user!}
并修改HelloAction类:
public String execute(){
n("hello world!");
if(("1")){
return "success";
}else if(("2")){
return "input";
}else{
return "error";
}
}
测试一下:
SourceWare Info Tech Ltd. Page:
16
七、 Xslt模板技术开发
采用xslt模板技术一般需要输出一个xml文件,如先前所述,增加一个xslt 类型的result,页面名字为:,
如图:
XSLT是用来对XML文档进行转化的一种语言。它是XSL(可扩展样式表语言)的一部分。XPath是用作对XML文档各部分进行定位的语言。在XSL样式中,我们可以利用XPath表达式以一种紧凑而高效的形式选取XML文档的一部分进行处理。
通俗地讲,就是增加了一个result类型为xslt的结果:
/
如果 /不些,则输出一个xml文件,这个文件是一个xml的数据模型文件,那么现在我们要利用xslt去把这个xml里的数据解析出来,从而形成一个我们想要的html页面,因此我们配上这个转换模板文件,
文件内容可以为:
xmlns:xsl="/1999/XSL/Transform">
则输出了hello这个变量;xslt文件的查找xml数据语法是通过xpath来查找的,具体语法可以参考相关文档。
SourceWare Info Tech Ltd. Page:
17
八、 Spring整合struts2开发
首先给我们的web项目加上spring功能,编辑文件
加上一个spring的listener:
当启动tomcat的时候,会自动查找WEB-INF目录下的文件,并加载实例化里面所配置的所有bean,所以要在WEB-INF目录下创建一个文件,并把需要初始化的所有bean都配置在里面,比如,如果使用了ibatis 连接池等,都在里面实例化。
注意:如果想更换缺省目录或文件名,则需要在里加入以下参数:
把spring拷贝lib目录下。
新建一个 这个类,里面写一个方法:
public String getUsername(){
return "hello kobe!";
}
编辑文件,增加刚才编写的类,让spring去实例化它!:
这样我们就知道当tomcat启动的时候,就会自动实例化一个MyDao对象了;
接下去我们要在HelloAction这个类里增加一个myDao这个属性,别忘记添加set get方法。
把ties文件里
Factory = spring注释去掉,且保证有:
re = name
SourceWare Info Tech Ltd. Page:
18
注意:struts的版本要匹配,spring版本要2.0以上
我们这里使用的 struts版本是2.0.11,所以还要加入这个jar包。
不加这个 jar包会报:
Cannot locate the chosen ObjectFactory implementation: spring - [unknown
location]
加的版本不对会报:
严重: Exception starting filter
Dispatcher
eException: eException:
eException:
encyException:
nerImpl$MissingDependencyException: No mapping found for dependency [type=,
name='Respect'] in public
SpringObjectFactory(,,,tContext).
at
nerImpl$(:290)
at
nerImpl$(:117)
严格按以上要求操作,应该可以看到结果了
1.第一种集成spring方式:
在action里只要有跟spring定义的bean id相同的名字,就会被自动注入进去,
2.第二种集成spring方式:
在里加入:
然后修改action配置,把
name="hello"> 修改成: 执行一下发现,工作正常!不用再去自己在action里编写得到dao的方法了! SourceWare Info Tech Ltd. Page: 19 九、 iBatis开发 首先配一个数据库的连接池,这里采用已经非常熟悉的proxool连接池,因为它有网络中断以后自动重连的机制: 在里增加以下代码: class="lDataSource" destroy-method="close"> 告诉spring 实例化一个dataSource对象(即连接池对象,因为lDataSource这个类继承了urce) 注意: 在lib目录下增加和这2个jar包,一个是连接池第3方jar包,一个连接池使用的sqlserver的连接驱动包; 在里再增加一个bean: class="urceTransactionManager"> SourceWare Info Tech Ltd. Page: 20 实例化一个spring提供的事务处理对象。 然后把和拷贝到lib目录下,增加ibatis的jar包。 然后再在里增加一个bean: class="ClientFactoryBean"> 即实例化一个sqlMapClient,这样就知道去哪儿找sqlmap文件了; 在src目录下创建一个文件:文件 里面写: PUBLIC "-////DTD SQL Map Config 2.0//EN" "/dtd/"> maxSessions="128" maxTransactions="8" maxRequests="128" useStatementNamespaces="false"/> 即告诉ibatis在哪儿找具体的map配置。 让先前写的MyDao 继承 extends SqlMapClientDaoSupport 修改代码: public String getUsername() { } 在下创建文件: "/dtd/"> return (String) MapClientTemplate().queryForObject( "getUsername", null); SourceWare Info Tech Ltd. Page: 21 userInfo order by newid() 在页面输出dao的getUsername方法看看,是否能得到数据库值。 为了避免在HelloAction当中直接使用实现类,实际使用当中应该创建一个IMyDao接口类,把暴露给action的方法放在ImyDao接口当中,而MyDao具体实现这个类即可。 因此我们再创建一个接口类:IMyDao,里面定义一个方法String getUsername(); 接下去增加事务处理功能,事务处理的用途即保证多个数据库操作要么全部成功,要么全部失败。 在里增加一个bean class="ctionProxyFactoryBean"> 更改HelloAction里的属性myDao为myDaoProxy: private IMyDao myDaoProxy; 如果采用第2种方式注入dao还要把: 修改成: class="ction"> SourceWare Info Tech Ltd. Page: 22 修改内容: error page $rname() Ie里测试结果为: 十、 struts2增加ajax效果 struts2和dwr整合配置: 在里增加一个servelt: 然后在WEB-INF目录下创建一个的配置文件,里面输入: SourceWare Info Tech Ltd. Page: 23 "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "/dwr/"> match="tionAwareSupport"/> import ; import idator; (String, String, Map ]]> 具体含义可以去网上查找相关的文档,这里只介绍如何配置。 另外要注意的是里原先的struts配置要修改一下: 要改成/*,拦截所有请求,否则会出现struts/dojo/找不到等错误! 把 包加到lib目录下,注意不要使用2.0的。 编辑先前的页面: SourceWare Info Tech Ltd. Page: 24 删除原先的所有内容,然后加上如下代码: <%@ page contentType="text/html; charset=GBK" language="java"%> <%@ taglib prefix="s" uri="/struts-tags" %>
A submit button, with an indicator
src="${tPath}/images/"
alt="" style="display:none"/>
href="%{ajaxTest}" align="left" indicator="indicator"/> -------------------------------------------------------------- 这个struts标签是导入ajax所要用到的所有js文件。 是设置一个url变量. Ie测试一下: SourceWare Info Tech Ltd. Page: 25 点submit按牛: 点了submit,只刷新局部div里的内容。 十一、 struts2里加入ZK 这里只介绍如何在struts2里加入zk,采用jsp tag方式来实现。 下载zk jsp tags实现包,把加入到lib目录下。 编辑文件,往里面加入支持zk的 servlet: 注意load-on-startup一定要加。 然后再加一个servlet: 拷贝其他jar包: 1. 2. 3. 4. 5. 6. 7. 8. 9. 把以上jar包都加到lib目录下。 把先前写的清空,然后输入: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/jsp/zul" prefix="z" %> lass> SourceWare Info Tech Ltd. Page: 27 "/TR/html4/">
valid Comment, do not use
XML comment. --%>
ZK Jsp Capcha Demo
A simple Capcha component demo.
Same as the demo in zkdemo
: site. width="280px"> height="50px"/> onClick="Value(); =;"/> ; =;"/>
页面上访问一下测试:
SourceWare Info Tech Ltd. Page:
28
接下去谈一下如何在zk标签里使用动态数据。
十二、 Hibernate开发
>>待续…
SourceWare Info Tech Ltd. Page:
29
版权声明:本文标题:Eclipse开发struts2教程-黑山-2009-01-20 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702794105h431183.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论