Struts2工作原理及xml配置文件简介
Posted 全栈攻城狮之道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2工作原理及xml配置文件简介相关的知识,希望对你有一定的参考价值。
温馨提示
决定抛弃struts2 了,所以在此记录一下关于struts2的使用,便于日后用到可以回过头来翻阅复习。所以我不会写的很详细,只是做些笔记。
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器来建立模型与视图的数据交互。
struts2工作原理图(图片来源于网络):
工作原理:
客户端向tomcat服务端发送一个请求(Request),
tomcat通过web.xml映射请求,将(无后缀名的url)请求交给struts2(StrutsPrepareAndExecuteFilter)
struts2通过ActionMapper获得Action的信息,调用ActionProxy
ActionProxy读取struts.xml文件获取action和interceptor stack的信息,把request请求传递给ActionInvocation
ActionInvocation依次调用action和interceptor
根据action的配置信息产生result,result信息返回给ActionInvocation
struts2产生一个HttpServletResponse响应发送给客服端。
项目中使用struts2需要导入的jar包。
struts2-core-2.3.32.jar
xwork-core-2.3.32.jar
ognl-3.0.19.jar
freemarker-2.3.22.jar
commons-logging-1.1.jar
commons-fileupload-1.3.2.jar
commons-io-2.2.jar
commons-lang.jar
如果需要配置result为json类型数据,还需要导入以下jar包
struts2-json-plugin-2.3.32.jar
constant:
struts.serve.static.browserCache,设置浏览器是否缓存静态内容,默认值为true
struts.configuration.xml.reload,当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false
struts.devMode,设置true可打印出更详细的错误信息
struts.ui.theme,设置默认的视图主题
struts.i18n.encoding,设置编码,解决乱码
上传文件:
struts.multipart.maxSize,指定允许上传的文件最大字节数
struts.multipart.saveDir,设置上传文件的临时文件夹,默认使用javax.servlet.context.tempdir
websocket:
struts.action.excludePattern
<constant name="struts.action.excludePattern" value="/push/.*,ws://.*" />
过滤掉ws://请求,以支持websocket
package:
package提供了将多个Action组织为一个模块的方式
package的名字必须是唯一的,package可以扩展,当一个package扩展自另一个package时该package会在本身配置的基础上加入扩展的package的配置,父package必须在子package前配置。
name:package名称
extends:继承的父package名称
abstract:值true|false ,设置package的属性是否为抽象的,抽象的package不能定义action
interceptors:
定义拦截器和拦截器栈
interceptor 定义拦截器
name:拦截器名称
class:拦截器类路径
interceptor-stack 定义拦截器栈
default-interceptor-ref:
定义默认的拦截器,每个Action都会自动引用,如果Action中引用了其它的拦截器 默认的拦截器将无效。
global-results:
全局results配置action:
Action配置
一个Action可以被多次映射(只要action配置中的name不同)
name:action名称
class: 对应的类的路径
method: 调用Action中的方法名
Action中的{
interceptor-ref:引用拦截器
name:拦截器名称或拦截器栈名称
result:节点配置
name : result名称 和Action中返回的值相同
type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher
}
default-action-ref:配置默认Action
项目中使用struts2:
第一步:将项目所需的 jar包导入到项目的lib目录下
第二步:在项目的web.xml文件中配置struts2的拦截器
第三步:在项目的src目录下新建struts.xml配置文件
对于古老的技术我也不做过多介绍了,就通过一个实际项目的struts.xml配置文件记录一下struts2的使用吧。
设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
开发模式下使用,设置为true可以打印出更详细的错误信息
使用utf8编码,解决乱码
项目中使用到文件上传功能的配置
配置struts2过滤掉ws://请求,交给tomcat处理websocket
将项目中的所有接口配置在一个package下:
API包(package中的配置):
用户登录拦截器:
com.wujiuye.interceptor.UserInterceptor
响应错误信息的action:
com.wujiuye.interceptor.ResponseErrorAction
配置默认访问的action,当访问的action不存在时
com.wujiuye.api.DefaultAction
如果是web网页,要让用户不能直接访问.jsp文件需要将需要保护的.jsp文件放到WEB-INF目录下,WEB-INF目录是受保护的,然后配置action,访问action时根据action配置的result返回相应的jsp文件。
就到这吧^_^。
以上是关于Struts2工作原理及xml配置文件简介的主要内容,如果未能解决你的问题,请参考以下文章