Struts2工作原理及xml配置文件简介

Posted 全栈攻城狮之道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2工作原理及xml配置文件简介相关的知识,希望对你有一定的参考价值。

温馨提示


决定抛弃struts2 了,所以在此记录一下关于struts2的使用,便于日后用到可以回过头来翻阅复习。所以我不会写的很详细,只是做些笔记。

Struts2简介与工作原理


Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器来建立模型与视图的数据交互。


  struts2工作原理图(图片来源于网络):

工作原理:

  1. 客户端向tomcat服务端发送一个请求(Request),

    tomcat通过web.xml映射请求,将(无后缀名的url)请求交给struts2(StrutsPrepareAndExecuteFilter)

  2. struts2通过ActionMapper获得Action的信息,调用ActionProxy

  3. ActionProxy读取struts.xml文件获取action和interceptor stack的信息,把request请求传递给ActionInvocation

  4. ActionInvocation依次调用action和interceptor

  5. 根据action的配置信息产生result,result信息返回给ActionInvocation

  6. struts2产生一个HttpServletResponse响应发送给客服端。


struts2项目的jar包


项目中使用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


struts.xml配置


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


了解strtus2的使用和配置


项目中使用struts2:

第一步:将项目所需的 jar包导入到项目的lib目录下

第二步:在项目的web.xml文件中配置struts2的拦截器

Struts2工作原理及xml配置文件简介

第三步:在项目的src目录下新建struts.xml配置文件

Struts2工作原理及xml配置文件简介


对于古老的技术我也不做过多介绍了,就通过一个实际项目的struts.xml配置文件记录一下struts2的使用吧。



设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭

Struts2工作原理及xml配置文件简介

当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开

Struts2工作原理及xml配置文件简介

开发模式下使用,设置为true可以打印出更详细的错误信息 

Struts2工作原理及xml配置文件简介

使用utf8编码,解决乱码

Struts2工作原理及xml配置文件简介

项目中使用到文件上传功能的配置

Struts2工作原理及xml配置文件简介

配置struts2过滤掉ws://请求,交给tomcat处理websocket

Struts2工作原理及xml配置文件简介


将项目中的所有接口配置在一个package下: 

Struts2工作原理及xml配置文件简介

API包(package中的配置):

Struts2工作原理及xml配置文件简介

Struts2工作原理及xml配置文件简介

Struts2工作原理及xml配置文件简介

Struts2工作原理及xml配置文件简介


用户登录拦截器:

com.wujiuye.interceptor.UserInterceptor

Struts2工作原理及xml配置文件简介

Struts2工作原理及xml配置文件简介


响应错误信息的action:

com.wujiuye.interceptor.ResponseErrorAction

Struts2工作原理及xml配置文件简介

Struts2工作原理及xml配置文件简介


配置默认访问的action,当访问的action不存在时

com.wujiuye.api.DefaultAction

Struts2工作原理及xml配置文件简介



如果是web网页,要让用户不能直接访问.jsp文件需要将需要保护的.jsp文件放到WEB-INF目录下,WEB-INF目录是受保护的,然后配置action,访问action时根据action配置的result返回相应的jsp文件。

 Struts2工作原理及xml配置文件简介

就到这吧^_^。



Struts2工作原理及xml配置文件简介




以上是关于Struts2工作原理及xml配置文件简介的主要内容,如果未能解决你的问题,请参考以下文章

Struts2简介及入门

Struts2入门2

struts2学习笔记--struts.xml配置文件详解

Struts2 引入

Struts2速记手册

java之struts2的配置讲解