您的位置:首页 > 编程语言 > Java开发

Struts2应用分析

2010-03-20 10:35 176 查看
Struts2与Struts1的区别:
Struts1:每次调用的时候可能是同一个对象。(可能会存在同步的问题)
Struts2:每次访问都会创建一个对象。(不会)
JDK1.5与JDK1.6的区别:
JDK1.5里实现的是接口。是不能写@Override,JDK1.6里实现的是接口,可以写@Override。

学习方法:任何东西下载下来之后大概看下他里面的内容。
copy过来的项目必须更改项目的上下文路径:选择项目右击->prederences-> MyEclipse-> web-> Web Context-root->单击OK
项目注意事项:如果copy过来的项目出问题可能是JRE System Library 出错,把然来的删了,把你自己的加进去,就可以了。
修改编码:Windows->Perferences->Jsp.修改Encoding值。为Chinese,National Stanadard.
Struts2的讲解
1>创建Struts2项目
2>设置Struts2项目:
2.1.1Windows->prederences->My
eclipse Enterprise Workbench->Servers->Tomcat(设置Tomcat位置)
2.1.2Windows->prederences->Java->Installed JREs(设置JDK的位置)
3>确认jar包:JRE System Libeary :是JDK包
Java EE 5 Libraries是MyEclipse 自带的
4>Struts2 jar包:apps:式例程序、 docs:文档、lib:Struts2 jar包、src:源码。
4.1.1 apps:里*.war文件可以直接用WR解压打开。
第一步:copy class 下的struts.xml文件到src 目录下。小技巧:打开Navigator示图可以查看详细内容
第二步:copy lib下的jar包。注意:junit-3.8.1.jar和spring-tes-2.5.6.jar(写单元测试)是不必要的。
common-io-1.3.2.jar(文件上传下载)
第三步:配置web.xml文件
配置一个filter。
注意:<url-pattern>/*</url-pattern>属性建不要去更改。
<constant name="struts.devMode" value="true" />把开发模式值改成true。(不用再重启服务)

读取Struts2jar包的源码: 选择Struts2-core-2.1.8.1jar包右键选择->Perderences->Java Source Attachment->单击Extrnal Floder->选择以下路径:/StrutsTool/struts-2.1.8-src/struts-2.1.8/src/core/src/main/java->点击OK
读取Struts2文档:选择Struts2-core-2.1.8.1jar包右键选择->Perderences->Javadoc Location->选择Struts2的以下路以下路径: /StrutsTool/struts-2.1.8.1-docs/struts-2.1.8.1/docs/struts2-core/apidocs/

Struts2--namespace
注意:namespace必须要以"/"开头。
注意:namespace决定了action的访问路径,默认为"",可以接收所有的action。
namespace 可以写为/,或者/XXX,或者/XX/XXXX,对应的action访问路径为/index.action,/XX/index.jsp,或者/XXX/YYY//index.action.
namespace =""表示只要用户输入action中的任意一个name都可以进入。
result name属性默认值为:“success”(可以不写)。

Struts2---Action
1.>具体视图的返回可以由用户自己定义的Action来决定。
2.>具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容。
3.>具体Action的实现可以是一个普通的java类,里面有public String execute方法即可或者是实现Action接口。
不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2的封装的方法。
Action中的class属性用来指定跳转的类。例:class="com.hdl.t67test.IndexAction" Action 当中的class 他会应射到对应的Java Bane 如果当中存在execute方法返回值为String ,那可以当成一个Action映射。
如何查看xwork源码:xwork jar包上右击->Perferences->Java Source Attaachment->External Folder-->选择路径:xwork jar包下的/src/java->单击OK。
Struts2--路径问题说明:
1.>注意一点:Struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
1.1>可以用redirect方法解决,但redirect方式并非必要。(不建见采用)
2.解决办法:统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径,或者使用MyEclipse经常用的,指定basePath).
解决方法二:在<herd></herd>标签里加上一个<base href="<%=basePath%>">。
Struts2--动态方法调用
1.>Action执行的时候并不一定要执行execute方法,可以在配置文件中配置Action的时候用method属性来指定调用那个方法,也可以在URL地址中动态指定(DMI动态方法调动)(推荐)。
Struts2--使用通配符配制struts.xml文件
1.>使用通配符优点:可以将配制量降到最低。 注意:一定要遵守“约定优于配制”的原则。
2.>注意:如果Action有多个相同的Action,那它最先匹配最精确的。。
3.>注意:如果Action都是同一等级的,谁在前面先调用谁。。
Struts2--Action当中参数传递(三种)
1.>第一种:在你自己的Action当中定义你须要接收的参数属性,生成get,set方法。
执行原理:当new Action时候它回把参数拿过来设置好。
注意:在执行的时候所调用的是属性的set方法。
2.>第二种:使用DomainModel(域模型[开发使用比较多])注意:在域模型当中提到一种用DTO方式接收参数(本人现在没有弄清楚)
vo:ValueOpject、do:DataOpject(数据对象)、dto(数据传输对象):
3.>第三种:使用ModelDriven(模型驱动) 注意:在Action当中是实现了ModelDriven接口,采用模型驱动,模型必须自己new出来。struts2不会帮你new。
Struts2--解决中文乱码问题:
学习方法:遇到struts.xml文件中的属性如果不知道怎么配置,查struts2API.
1.>注意:如果接收的参数当中有中文form表单提交使用post方法。
2.>配置国际华:<constant name="struts.i18n.encoding" value="GBK"> i18n--国际华(internationalization)
3.>如何配置struts.xml文件中的常量属性。选择Referenced Librearies-->struts core.jar-->org.apache.struts2-->default.properties属性文件(常用属性配置里面都有)
注意:如果配置际华属性还是不能觖中文乱码问题,就将web.xm.文件中的Filetr-class改成2.0<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
Struts2--简单数据校验
学习方法:解读别人或者自己的源码时,因该是先从页面,然后再到业务逻辑,最后到数据库。一条线读到尾。
1.>在Action中它会去调用类本身的方法:addFieldError()用来向view层显示错误信息。
2.>在JSP页面上使用struts标签接收addFieldError()方法传过来来的错误信息。
3.>jsp页面上导入struts-tags头标签:<%@ taglib uri="/struts-tags" prefix="s" %> 注意:J2EE5.0之后struts-tags.tld不一定要在WEB-INF文件夹下。只要放在struts2的jar包里,程序运行时会自动去找。struts2标签文件路径:Referenced Libraries-->struts2-core.jar-->NETA_INF-->struts-tags.tld.
4.>struts2s标签:s:fielderror标签的name属性。它所拿到的就是Action当中的addFieldError()方法的参数。
4.1.1>s:property标签就是取ValueStack里的值
4.1.2>s:debug标签可以的打开所有的debug内容。没有属性直接可以用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: