Struts2详解

  • 格式:doc
  • 大小:66.00 KB
  • 文档页数:16

一、Action方面的问题:1、Struts2的手工配置:◆将Struts2的配置文件拷贝到项目的src文件下。

◆将Struts2的jar包拷贝到WEB-INF的lib中。

◆配置web.xml文件。

2、Struts的执行过程:◆由客户端(浏览器)敲一个地址。

◆浏览器将请求发给tomcat,tomcat回去将请求交给那个webapplicaton去处理,到找到那个webapplicaton之后,tomcat会参考web.xml配置文件。

◆根据web.xml配置文,将请求交给Struts2filter去处理,执行Struts.xml配置文件(namaspace、action、result。

)。

◆forword给对应的jsp文件。

◆jsp文件将内容反馈给客户端。

3、Struts的作用:把请求与视图分开。

4、<package name="default"namespace="/"extends="struts-default"><action name="helloStruts2"><result>/hello.jsp</result></action></package>◆namespace决定了action的访问路径,默认为“”,可以接受所有路径的action(http://localhost:8080/Struts2/ hello.jsp|| http://localhost:8080/Struts2/erewrrewr/ hello.jsp),namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action,或/xxx/yyy/index.action。

namespace最好也用模块来进行命名。

Namespace必须用“/”开头。

◆package在Struts2的配置文件(Struts.xml)中的作用和Java中的作用是一样的,将action打一个包,这样同名的action放在不同的package中使用就不会冲突了。

◆namespace和package命名的时候一般用模块来命名。

例如:Package中name=”user” namespace=”/user”。

◆extends中的内容不要动。

◆注意:result中的jsp页面前面要加“/”5、具体的Action的实现可以是一个普通的Java类,里面有public String execute方法即可或者实现Action接口,不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法。

6、在Struts1 中Action对象只有一个,这样就要考虑线程同步的问题;而Struts2每次访问Action时就new一个新的对应Action对象出来,避免了线程同步的问题。

(这是Struts1与Struts2的重要区别)7、当在配置文件中没有配class时,struts默认执行内部的一个class 对象(ActionSupport)8、路径问题:Struts2中的路径问题是根据Action的路径而不是jsp路径来确定,所以尽量不要使用相对路径,统一使用绝对路径来解决。

使用MyEclipse经常用的,指定basePath。

MyEclipse中的base标签:指的是当前页面中的所有连接,默认在前面都会加上basePath。

9、在url地址中动态指定Action的调用:(参考Struts2_003项目)浏览器地址栏中输入:http://localhost:8080/Test/hello!addAction的配置:<action name="hello"class="com.sodi.action.Action1"><result name="success">/hello.jsp</result></action>10、通配符的配置:(参考Struts2_004、Struts2_004项目)通配符一定要遵守的原则:约定优于配置。

浏览器地址栏中输入:http://localhost:8080/Struts2_02/studentadd Action的配置:<package name="student"namespace="/"extends="struts-default"> <action name="student*"class="com.sodi.action.studentAction" method="{1}"><result name="success">/{1}Student.jsp</result></action></package>注意:result中的内容“/{1}Student.jsp”斜杠不能少。

11、Action的匹配问题:有三个Action:<action name="student_add"><result name="success">/{1}Student.jsp</result></action><action name="student*"><result name="success">/{1}Student.jsp</result></action><action name="*_*"><result name="success">/{1}Student.jsp</result></action>寻找Action的过程:当有一个Action叫student_add Action,它会首先匹配最精确的Action,也就是第一个Action。

第二个与第三个哪个先调用呢?因为两个是属于一个级别的,所以在配置文件中哪个位置在前面,就先调哪个。

12、Action的接收参数问题:在Action中有三种接收参数的方式:◆在Action中设置几个属性,调用get,set方法可以获得参数的值。

在Struts中不用我们手动调用,Struts会自动帮我们调用get,set 方法。

(参考Struts2_006项目)◆设置域模型(Domain Model)接收参数。

在Action中不用去new一个对象。

Struts会自动帮我们new一个对象。

(参考Struts2_007项目);还有一个模型:DTO,DTO的作用就是接收数据,同时将数据封装到Domain Model中。

在url中输入方式:http://localhost:8080/Struts2_007/userAction!add?=aaa &user.age=8在jsp中要取到parameters中的值:<s:property value="#parameters['']"/><br/><s:property value="#parameters['user.age']"/>◆这种方法并不常用。

ModelDriven<User>,要加泛型。

14、Struts2的中文处理问题:(参考Struts2_008项目)15、Struts2的简单数据校验:(参考Struts2_009项目)<s:property value="[0]"/>这个标签可以取得action 中的各种属性,参考<s:debug></s:debug>标签。

Errors {name=[name is error]}16、获得request ,session ,application ,HttpServletRequest ,HttpSession ,ServletContext 方式:(参考Struts2_010项目:有四种方式,在项目中只有一种常用的方式)attr :整个范围(request ,session ,application )17、IOC :Inverse of Control (控制反转)DI :dependency injection (依赖注入)向request ,session ,application 中存值。

18、在struts2中包含另外一个配置文件,也就是在Struts.xml 中包含另外一个配置文件,只要在Struts.xml 中配置如下代码:<include file="login.xml" />。

19、默认Action :当访问的Action 找不到时,就默认使用这个Action 。

(参考Struts2_011项目) 值栈 Name Value key Value map数组20、<constant name="struts.devMode" value="false" />这个的意思是开发模式,当正的发布版本的时候要设置为false。

二、Action总结:1、实现一个Action的最常用方式:从ActionSupport继承2、Action的动态方法调用“!”3、通配符的配置*{1}{2}4、接收参数的方法(一般用属性或者DomainModel来接收)5、简单的参数验证addFirldError6、访问Web元素(四种方式,只有一种方式常用)7、包含文件配置8、默认Action处理三、result的配置:1、result的类型:(参考Struts2_012项目)Dispatcher:运用服务器跳转,只能forward到页面(jsp|html),不能是ActionRedirect:运用客户端掉转,只能跳转到页面(jsp|html),不能是ActionChain:运用服务器跳转,forward到一个Action;result中注意:<result name="success" type="chain">result1</result>,在result1前面不要加“/”RedirectAction:运用客户端掉转,跳转到一个Action中Freemarker:Httpheader:发一个http的头信息Stream:下载Velocity:Xslt:xml相关的修饰Plaintext:显示源码Tiles:把页面分成几块,每块的内容可以自己动态的指定。