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

Struts2学习笔记

2016-05-09 17:42 453 查看
本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-149.html

1、 Struts2框架介绍

Struts2框架是MVC流程框架,适合分层开发。框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计。

2、 Struts2框架的流程原理





1)请求先到达Filter中央控制器

2)然后为Action创建代理类

3)将各个服务存放在拦截器中,执行完拦截器后再去执行action类行action类,action类调用service,再调用dao

4)得到结果字符串,创建result对象

5)转向相应的视图。

程序流程图如下:





3、 使用步骤:

(1) 导入基础jar包;

(2) 建立struts.xml配置文件:

A. 定义Action包:

<package name="example" namespace="/example" extends="struts-default">

Name:包名;

Namespace:包相对webapp根目录的路径;

Extends:继承的包名;

B. 配置Action:

<action name="login" class="com.silence.struts2.adtion.LoginAction">

<result >/WEB-INF/jsp/HelloWorld.jsp</result>

</action>

Name:action名称;

Class:Action的类路径;

Result:和JSF的根据返回值确定跳转页面,name属性和返回值对应;

C. 全局共享配置:

<global-results>和<global-exception-mappings>

D.<package/>外<include file="example.xml"/>,包含子配置文件;

E.<constant />配置Struts2常量配置参数,决定了Struts2的一些运行时环境;

(3)web.xml配置Struts2过滤器:

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

访问路径:/ProjectName/namespace/ActionName.action

(3) 继承ActionSupport即可写Action;

4、 执行流程:

(1) http://localost:8080/ProjectName/namespace/ActionName.action从浏览器访问,先根据web.xml进入Struts2的过滤器;

(2) 查找配置文件,根据namespace和action名称找到对应Action的类路径,创建一个该Action的代理对象,并把请求参数通过反射注入到Action中的对应属性上;

(3) 将HTTP相关的对象封装到ActionMapper中,若需要在Action中操作到HTTP对象,可以从ActionMapper或ActionContext获取;

(4) 跳转到Action中后,调用业务处理对象,进行相应的业务操作,validator()用于表单校验,然后根据返回字符串通过<result/>映射出Result对象,跳转到相应的视图。

注:action是多例的,也是线程安全的。





5、 注意事项:

(1) 自定义过滤器需要添加在Struts2核心过滤器前面;

(2)

6、 struts.properties:类路径下,Struts2的全局配置文件,可以用struts.xml的<constant />替换。

7、 Action搜索方式:在一个包没找到会跳到上一个包,直到找到默认根位置也找不到才报错(少用)。

8、 <default-action-ref name="" />:默认Action,找不到的就找他。

9、 设置Struts2后缀:

<constant name="struts.action.extension" value="action "></constant>

10、 表单参数提交方式:(三种方式)

(1) 属性驱动模式:Action中设置表单提交的属性参数,一一对应,提供set方法,Struts2自动反射注入;

(2) 模型驱动模式:Action中将所有属性参数封装成一个表单实体(必须实现实例化一个空对象),Action实现ModelDriven接口,重写getModel()方法,Struts2将会把表单参数通过反射注入到表单实体的对应属性上;(不推荐)

(3) 域驱动模式:Action中将所有属性参数封装成一个表单实体(需要set和get),在jsp页面的表单参数名用user.usercode这种形式的,将会自动注入;

(4) List类型表单:<input type="text" name="list[0].username">这样填入List集合

11、 表单验证:重写Validator()方法。

12、 <result />处理结果类型:

内置类型:SUCCESS(默认值),NONE,ERROR,LOGIN,INPUT(请求页面)

如何跳转根据开发需求适当使用。

Type属性:指定转发到视图的方式,默认的dispatcher支持JSP技术,freemarker支持FreeMarker模板引擎,stream文件流下载等,具体查看文档。

13、 其他功能:国际化,标签,文件上传下载,表单号等高级特性

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-149.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: