struts2

来源:互联网 发布:手机数据永久删除 编辑:程序博客网 时间:2024/06/18 11:58

跳转的结果类型
dispather 转发,不指定默认为转发
redirect 重定向
redirectAction重定向到action资源
stream 文件下载的时候用
拦截器
拦截器的功能与过滤器功能类似
区别
共同点:都可以拦截资源
区别:
过滤器:拦截所有的资源
拦截器:只拦截action请求

拦截器是struts的概念,只能在struts中用
过滤器是servlet的概念,可以在struts项目、servlet中用

struts一共定了32个拦截器
为了拦截器引用方便,可以通过栈的方式引用拦截器
此时如果引用了栈,栈中的拦截器都会被引用。
如果拦截器被称为 文件的话 那么
栈就可以称为文件夹

defaultStack
默认的栈,其中定义默认要执行的18个拦截器,按顺序执行的。

Struts2执行流程

服务器启动
1.加载项目的web.xml
2.创建struts核心过滤器对象,执行filter—init()

访问
3.用户访问action,服务器根据访问路径的名称,找对应的action配置,创建action对象
4.执行默认拦截器栈中定义的18个拦截器
5.执行action**业务处理方法**

面试题
拦截器什么时候执行?(访问/启动) 先执行action类创建,还是先执行拦截器?
用户访问的时候按顺序执行18个拦截器
先执行的是action类的创建,再执行拦截器,最后拦截器执行完,再执行业务方法

!!!!
配置文件没有提示的问题
解决:工具没有找到dtd文件
在window中打开属性,搜xml catalog –add—local 找到你复制出来的dtd文件就ok!
1.jar包
2.在web.xml中配置核心拦截器,其他拦截器需要写在核心拦截器上面。可以跟servlet一起用 !不能在url-pattern 使用/*
根据需要来配置url *.action
3.action的开发
4.配置struts.xml
在总配置文件中可以引入其他所有配置文件

struts2的action的开发的几种方式

方式1:继承ActionSupport
如果用struts的数据校验功能,就必须继承此类。

方式2:实现一个action接口
接口中有五个常量,一个方法。默认的方法,要覆盖。
常量就是经常使用的一些常量。

方式3:不继承任何类,不实现任何接口

通配符
在struts中配置信息中 ,可以用*与{1}可以优化配置

访问路径namespace +name
struts2中路径匹配原则
http://localhost:8080/struts02/user/a/b/user_login
localhost 找到访问哪一台机器
8080 找到tomcat
Struts02 找到项目名称
/user/a/b 先看有没有这个名称空间,没找到继续向下; 找到就返回
/user/a 先看有没有这个名称空间,没找到,继续向下;找到就返回
/user 先看有没有这个名称空间,没找到,继续向下
/ 默认名称空间,还没找到,报错;; 找到就返回

struts 常量
struts 中默认访问的后缀
struts1中默认访问的后缀是*.do
struts2中默认访问的后缀是*.action

如何修改默认访问后缀:
1.struts2的.action访问后缀在哪里定义?
Struts-core-2.34-1.jar/org.apache.struts/default.properties
struts.action.extension=action
2.在struts.xml中通过常量修改
这里写图片描述
然后在struts.xml中进行全局配置 修改struts默认的访问后缀
struts.action.extension=action,,
可以默认为 action ,do,
value=“action,do,” 访问后缀:action/do/不带后缀
value=“action,do” 访问后缀:action或do
value=“action” 只能是action

修改xml自动重新加载
- struts.configuration.xml.reload = true
动态方法调用

原创粉丝点击