一.自定义的struts.xml(开发时频繁使用)
<?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:代表一个包,用于管理action ,一个包下不能有同名action
name:包名,在一个项目中不能有同名的包,一个项目中一个模块一个包或者小项目中前后台分别一个包
extents:继承,类似于类的继承,如果一个包继承另一个包,那么会把父包的功能继承下来,(我们写的struts.xml中包必须继承默认包struts-default)
namespace;名称空间,区分不同包的访问路径,默认为”/“
用户访问action路径索索规则:
若输入:http://localhost:8080/项目名称/user/a/b/c/login.action
会先搜索:http://localhost:8080/项目名称/user/a/b/c/login.action若没有
会继续搜索:http://localhost:8080/项目名称/user/a/b/login.action若没有
会搜索:http://localhost:8080/项目名称/user/a/login.action知道找到匹配项
abstract:用于表示当前包是否抽象,若为抽象则不能放入action子标签(若包中不做具体逻辑业务,如只是声明拦截器等那就可以设为抽象包)
-->
<package name="xxx" extends="struts-default" namespace="/name" abstract="true">
<!--
配置action:http://localhost:8080/项目名称/login.action
1.
name:action的名称,用于访问此antion的路径
class:action业务对象的类名(包名+类名),struts2使用反射构造Action对象
method:执行的业务方法,默认为execute
2.result标签的配置
name:视图的标记,在一个action中名称不要重复
type:跳转类型
redirect:重定向
dispatcher:转发
redirectAction:重定向到action
chain:转发到action,可以在不同action中用request共享数据
ServletActionContext.getRequest().setAttribute("","");放入
stream:用于下载文件的时候
文本内容:跳转的页面或者antion
-->
<action name="login" class="com.study.action.LoginAction" >
<result name="success" type="redirect">/index.jsp</result>
</action>
</package>
</struts>
注意:structs.xml中的package各个模块可以分出来放入不同的.xml文件中,只需要在主struts.xml中加入<include file="包名/xxx.xml"></include>
即可(注:若两个package中出现完全相同的action则先导入(include)的先执行)
二.web.xml中配置启动struts2核心过滤器
<filter>
<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三.项目启动过程
1)创建核心过滤器对象
2)执行过滤器的init方法依次读取三个xml文件
struts-default:默认配置文件
struts-plugin:插件配置文件(如文件io等)
struts:自己写的业务配置
3)在内存中查询相应的action配置,得到class内容,创建action对象、
5)读取action中的method内容,执行action对象对应的方法
四.struts2中action使用的三种方式
1.直接写public class UserAction{}
不实现任何接口和继承任何类
缺点:没有规则和统一规范,里面的方法随意写
2.实现Action类pu