一、Struts2概述
应用于 JavaEE三层结构中的 web层框架
struts2作用:解决BaseServlet需要复杂代码的问题。(BaseServlet需要写到底层反射,较复杂)
servlet和action区别:
Servlet:默认在第一次访问时候创建,只创建一次。是单实例对象
Action:访问时候创建,每次访问都会创建。是多实例对象
版本:struts-2.3.24-all.zip
了解:web层常用框架:struts2、springMVC
作用流程:

二、Struts2入门
1)导包
2)创建action(三种方式)
1)创建普通类,不继承任何类,不实现任何接口。
2)创建类,实现接口 Action
public class HelloAction implements Action{...}
需要导包:import com.opensymphony.xwork2.Action;
3)创建类,继承类 ActionSupport(建议使用!!!)
public class HelloAction extends ActionSupport{...}
3)配置struts2核心配置文件(action类访问路径)
1)创建struts2核心配置文件
- 位置:必须在src下面,
- 名称:必须是struts.xml
2)引入dtd约束
在struts.xml中
3)struts配置
<package name="">
<action name="">
<result></result>
</action>
</package>
4)配置struts2过滤器
1)进入到web.xml中,在<display-name>标签的下一行添加:
<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>
2)按ctrl点击<filter-class>内容,导入源码(源码路径:struts-2.3.24 / src)

Struts2执行过程:

三、structs.xml配置讲解
1)package标签:类似于代码包。
name属性:
作用:起指明package的作用
属性值要求:一个配置文件中可以有多个package标签,其各自name属性值不能相同
extends属性:
作用:使package里面配置的类具有action功能
属性值要求:属性值固定为struts-default。
namespace属性:
属性值:"/"
作用:namespace属性值和action标签里面的name属性值构成访问路径
2)action标签:配置action访问路径
name属性:
1)namespace属性值和action标签里面的name属性值构成访问路径
2)一个package标签里面写多个action标签,每个action的name属性值不能相同。
class属性:值为:action全路径
method属性:
1)指定执行action里面的方法,使用method进行配置。
2)不配置则默认执行action中的execute方法。
3)result标签:根据action的方法返回值,配置到不同的路径里面
name属性:属性值和被执行的方法返回值相同。
type属性:
1)配置如何到路径中(转发或者重定向)。默认为转发。
- dispatcher:转发
- redirect:重定向
- chain:转发到action
- redirectAction:重定向到action
标签内容为跳转页面
代码示例:
<?xml version="1.0" encoding="UTF-8"?>
<!-- dtd约束 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 分模块开发:引入配置文件(引入后则下面不需要配置)
<include file="配置文件全路径"></include>
-->
<!-- 修改常量值 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- package标签:类似于代码包。 -->
<package name="aaa" extends="struts-default" namespace="/">
<!-- action标签:配置action访问路径 -->
<action name="hello" class="action.HelloAction">
<!-- result标签:根据action的方法返回值,配置到不同的路径里面-->
<result name="ok">/index.jsp</result>
</action>
</package>
</struts>
四、分模块开发、过滤器源码、struts常量:
1)分模块开发方式:
作用: 解决代码来回修改的问题
使用场景: 适用于多人合作开发
做法:单独写配置文件,把配置文件引入到核心配置文件中
<!-- 分模块开发:引入配置文件
<include file="配置文件全路径"></include>
-->
2)过滤器源码:
1)实现Filter接口
2)过滤器在服务器启动时候创建,创建过滤器时候执行init方法
init方法中主要加载配置文件
- 包含自己创建的配置文件和struts2自带配置文件
1)struts.xml
2)web.xml
3)struts2常量:
作用:struts2常量里面封装一部分功能
struts2的默认常量存放位置:
struts2-core-2.3.23.jar --> org.apache.struts2 --> default.properties。
修改常量值的三种方式:
1)struts.xml中进行配置 (推荐使用)
操作:在<struts>标签中使用<constant>标签进行配置.
name:常量名.
value:常量值
示例:<constant name="struts.i18n.encoding" value="UTF-8"></constant>
2)在src下面创建 struts.properties,进行修改 (了解)
3)在web.xml进行配置 (了解)
五、访问action的方式(三种)
第一种:使用action标签的method属性.在属性里面写执行的action的方法

第二种:使用通配符方式实现


第三种:动态访问实现(不用)