Struts2学习笔记
1. 定义
Struts是流行和成熟的基于MVC设计模式的Web应用程序框架
2. 使用Struts的目的
为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
3. MVC模式
JSP+Servlet+JavaBean=Model2。
MVC是模型视图控制器(Model View Controller),一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
4. Struts发展历史
Struts2不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证,同时吸收了Struts1和WebWork两者的优势。
5. Struts环境要求
Servlet API 2.4以上
JSP API 2.0以上
Java 5以上
注意:在Struts2中会用到Annotation,所以要将JDK升级到1.5以上。
6. 搭建Struts2环境步骤
第一步:下载相关Jar包
第二步:创建Web项目
第三步:创建并完善相关配置文件
第四步:创建Action并测试启动
下载地址:① http://struts.apache.org/
② http://people.apache.org/builds/struts/
7. Struts2的工作原理及文件结构
8. Web.xml
l 任何MVC框架都需要与web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。
l 通常,所有的MVC框架都需要web应用加载一个核心控制器,对于Struts2框架而言,需要加载
Ø StrutsPrepareAndExecuteFilter,只要Web应用负责加载
Ø StrutsPrepareAndExecuteFilter
Ø StrutsPrepareAndExecuteFilter将会加载Struts2框架。
9. Struts.xml
Struts.xml中包含的内容:
① 全局属性
② 用户请求和响应Action之间的对应关系
③ Action可能用到的参数和返回结果
④ 各种拦截器的配置
10. Struts.properties
struts框架的全局属性文件,自动加载。
该文件包含很多key-value对。
该文件完全可以配置在struts.xml文件中,使用constant元素。
11. 访问Servlet API
Protected void doGet(HttpServletRequset request,
HttpServletResponse response)throws ServletException,IOException{
}
Protected void doPost(HttpServletRequset request,
HttpServletResponse response)throws ServletException,IOException{
}
Struts2提供了三种方式去访问Servlet API。
① ActionContext
② 实现***Aware接口
③ ServletActionContext
12. Action搜索顺序
Http://localhost:8080/struts2/path1/path2/path3/student.action
第一步:判断package是否存在,如:path1/path2/path3
存在
第二步:判断action是否存在,如果不存在则去默认的namespace的package里面寻找action
第三步:如果没有,则报错。
不存在
第二步:检查上一级路径的package是否存在(直到默认namespac),重复第一步
13. 动态方法调用
动态方法调用就是为了解决一个Action对应多个请求的处理以免Action太多
① 指定method属性
② 感叹号方式
③ 通配符方式
Ø 三级通配符<action name="*_*_*" method="{2}"
class="com.vanish.{3}.{1}Action">
<result>/result.jsp</result>
<result name="add">/{2}.jsp</result>
<result name="update">/{2}.html</result>
</action>
Ø 二级通配符<action name="*_*" method="{2}"
class="com.vanish.action.HelloWordAction">
<result>/result.jsp</result>
<result name="add">/{2}.jsp</result>
<result name="update">/{2}.html</result>
</action>
Ø 一级通配符<action name="helloworld_*" method="{1}"
class="com.vanish.action.HelloWordAction">
<result>/result.jsp</result>
<result name="add">/{1}.jsp</result>
<result name="update">/{1}.html</result>
</action>
14. 指定多个配置文件
<include file=”login.xml”></include>
<include file=”system.xml”></include>
<constant name=”struts.i18n.encoding” value=”UTF-8”></constant>
15. 默认Action
<default-action-ref name="index"></default-action-ref>
<action name="index">
<result>/error.jsp</result>
</action>
16. 接收参数
①、使用Action的属性接收参数
②、使用DomainModel接收参数
③、使用ModelDriven接收参数
17. 处理结果类型
<result name=”success”>/success.jsp</result>
result元素中name就是result元素的逻辑视图名称
<result>/success.jsp</result>
如果省略了name属性,系统将采用默认的name属性值,默认的name值是success。
处理结果是通过在struts.xml使用<result/>标签配置结果。
根据位置的不同,分为两种结果:
①. 局部结果 将<result/>作为<action/>元素的子元素配置
②. 全局结果 将<result/>作为<global-result/>元素的子元素配置
<result name=’.....’>
<param name=”location”>resource</param>
</result>
子标签<param>具有两个属性:
①.location:该属性定义了该视图对应的实际视图资源。
②.parse:该参数指定是否可以在实际视图名字中使用OGNL表达式
Struts2框架默认该属性为true,即支持OGNL表达式