主要内容
- Struts2简介
- 环境搭建
- Struts2的执行过程及原理
- Struts2的基本配置
- Struts2的配置元素
- Struts2的Action
- 配置结果集
Struts2简介
Struts2是Apache发行的MVC开源框架,它只是表现层的MVC框架。
Struts1也是Apache发行的MVC开源框架,其核心是Servlet,随着业务的增大,弊端也被不断放大。Struts2是基于WebWork的框架技术,而不是沿用Struts1的核心技术。因此,Struts2和Struts1并没有太大的关系。
环境搭建
1.读者去http://struts.apache.org下载最新版本的安装包。
解压后看到
2.新建一个web工程,导入jar包
找到Struts2自带的例子中,struts-blank的war包,在它的\WEB-INF\lib目录下的jar包全拷贝。
3.在src下新建一个struts.xml文件并添加dtd约束
`<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="p1" extends="struts-default">
<action name="" class="" method="">
</action>
</package>
</struts>`
4.新建一个dtd文件夹,放入dtd
5.为dtd配置映射
6.配置控制器web.xml
` <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>`
7.启动Tomcat,如果不报错,那么恭喜你环境ok了。
Struts2的执行过程及原理
看一下这张大图
此图并非原创,感谢作者此图并非原创,感谢作者。。。。
这张图很详细的分析了运行流程及原理
Struts2的基本配置
1.配置Struts框架的核心Filter(web.xml)
` <filter>
//配置核心Filter的名字
<filter-name>struts2</filter-name>
//配置核心Filter的类名
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
//要拦截的URL,/*指拦截所有用户
<url-pattern>/*</url-pattern>
</filter-mapping>`
2.配置struts.xml
`<struts>
<package name="p1" extends="struts-default">
<action name="" class="" method="">
</action>
</package>
</struts>`
package中name属性必须唯一,继承了struts-default,struts-default.xml中配置了很多内建的Bean,结果类型,拦截器,和拦截器栈,及默认的拦截器栈。Struts2框架每次都会自动加载这个struts-default.xml文件,之后再加载自己写的struts.xml文件
Struts2的配置元素
1.配置常量(constant)
有3种方式
- 在struts.properties中配置,不建议使用
- struts.xml中配置,推荐,可以使用constant标签
- web.xml中配置,不建议。原因是对于和Web整合的框架来说,应尽量在框架自身的文件(struts.xml)中配置和框架相关的信息
既然有多种方式配置常量,那么加载顺序是什么呢?
数字大的会覆盖数字小的
设置Struts2的工作模式为开发模式,此时当修改xml文件内容时,不必重新部署Tomcat了
`<constant name="struts.devMode" value="true"></constant>`
2.配置包含(include)
Struts2允许将一个配置文件分解成多个配置文件,从而达到更容易维护。
`<include file="other.xml"></include>`
注意:other.xml最好和struts.xml都放到WEB-INF/classes目录中,other.xml必须也有dtd约束等信息。
3.配置包(package)
`<package name="p1" extends="" namespace="" abstract="">`
- name属性必选,唯一值
- extends属性可选
- namespace属性可选,定义了包的命名空间
- abstract属性可选,在当前包下是否为一个抽象包,抽象包不能包含Action
4.配置命名空间
上面提到的namespace属性,如果不写,默认是"",如果namespace="/test" 那么可以这么访问:http://localhost:8080/项目名称/test/动作名称.action
5.配置拦截器
拦截器是Struts中的非常重要的概念,这里先简单介绍。接下来的一篇文章我就是写拦截器的。
拦截器简单点说就像Java Web应用的过滤器。就是在多个Action处理之前或之后加入开发人员自定义的代码。
声明一个拦截器:
`<interceptors>
<interceptor name="loginintercepter" class="com.wty.intercepter.MyIntercepter"></interceptor>
</interceptors>`
使用拦截器:
`<interceptor-ref name="loginintercepter"></interceptor-ref>`
Struts2的Action
`<action name="" class="">
<result>/main.jsp</result>
</action>`
name属性:动作名称
class属性:动作类全名。默认的动作类是:com.opensymphony.xwork2.ActionSupport
method:动作类中的方法名称。默认是public String execute(){}
要求:
要求:
-
public
-
返回值必须是String
-
没有参数
动作类:继承ActionSupport
`public class RegisterUser extends ActionSupport{}`
配置结果集
1、result元素
作用:
为动作指定结果视图
属性:
name:逻辑视图的名称,对应着动作方法的返回值。
<result name="success">/success.jsp</result>
如果name属性不写,默认是success
2、result元素中type的取值
dispatcher:(默认值)
使用请求转发,转向一个页面。
redirect:
使用重定向,转向一个页面。
redirectAction:注意:使用的是重定向。
a.重定向到另一个相同名称空间的动作。
b.重定向到不同名称空间的动作
chain:注意: 使用的是请求转发。
a.转发到另一个相同名称空间的动作。
b.请求转发到不同名称空间的动作
结语###
Struts2的知识点还有许多,这里只是简单的介绍一下基本概念。下一篇不出意外是写拦截器的文章吧!
网友评论