Struts2(四)
以下内容是基于导入struts2-2.3.32.jar包来讲的
1.struts2配置文件加载的顺序
struts2的StrutsPrepareAndExecuteFilter拦截器中对Dispatcher进行了初始化,在Dispatcher类的init方法中定义了配置文件的加载顺序,加载的顺序依次是:
0.web.xml
1.default.properties文件
作用:定义了struts2框架中所有常量
位置: struts2-core-2.3.32.jar/org/apache/struts2/default.properties
2. struts-default.xml
作用:配置了bean,interceptor,result等。
位置:在struts的core核心jar包.struts2-core-2.3.32.jar/struts-default.xml
struts-plugin.xml
它是struts2框架中所使用的插件的配置文件。
struts.xml
我们的struts2所使用的配置文件。
3.自定义的struts.properties
就是可以自定义常量。
注意:后加载文件中的配置会将先加载文件中的配置覆盖。
2.struts2结果集
struts-default.xml 默认的结果集
在我们的struts.xml中的<result>标签中的type中可以使用,不写的时候默认dispatcher转发
3.拦截器
struts-default.xml 默认就有拦截器
- AliasInterceptor alias 在不同请求之间将请求参数在不同名字件转换,请求内容不变
- ChainingInterceptor chain 让前一个Action的属性可以被后一个Action访问,chain类型的result结合使用。
- CheckboxInterceptor checkbox 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。
- CookiesInterceptor cookies 使用配置的name,value来是指cookies
- ConversionErrorInterceptor conversionError 将错误从ActionContext中添加到Action的属性字段中。
- CreateSessionInterceptor createSession 自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。
- DebuggingInterceptor debugging 提供不同的调试用的页面来展现内部的数据状况。
- ExecuteandWaitInterceptor execAndWait 在后台执行Action,同时将用户带到一个中间的等待页面。
- ExceptionInterceptor exception 将异常定位到一个画面
- FileUploadInterceptor fileUpload 提供文件上传功能
- I18nInterceptor i18n 记录用户选择的locale
- LoggerInterceptor logger 输出Action的名字
- MessageStoreInterceptor store 存储或访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。
- ModelDrivenInterceptor model-driven 如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。
- ScopedModelDriven scoped-model-driven 如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。
- ParametersInterceptor params 将请求中的参数设置到Action中去。
- PrepareInterceptor prepare 如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。
- ScopeInterceptor scope 将Action状态存入session和application的简单方法。
- ServletConfigInterceptor servletConfig 提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。
- StaticParametersInterceptor staticParams 从struts.xml文件中将中的中的内容设置到对应的Action中。
- RolesInterceptor roles 确定用户是否具有JAAS指定的Role,否则不予执行。
- TimerInterceptor timer 输出Action执行的时间
- TokenInterceptor token 通过Token来避免双击
- TokenSessionInterceptor tokenSession 和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中
- ValidationInterceptor validation 使用action-validation.xml文件中定义的内容校验提交的数据。
- WorkflowInterceptor workflow 调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面
- ParameterFilterInterceptor N/A 从参数列表中删除不必要的参数
- ProfilingInterceptor profiling 通过参数激活profile
自定义拦截器:
A.实现Interceptor接口,创建拦截器类
- package com.rong.web.intercept;
- import com.opensymphony.xwork2.ActionInvocation;
- import com.opensymphony.xwork2.interceptor.Interceptor;
- public class OneIntercepter implements Interceptor {
- private static final long serialVersionUID = -1077492315481012347L;
- @Override
- public void destroy() {
- System.out.println("OneIntercepter destroy!");
- }
- @Override
- public void init() {
- System.out.println("OneIntercepter init!");
- }
- @Override
- public String intercept(ActionInvocation invocation) throws Exception {
- System.out.println("OneIntercepter放行前执行代码!");
- //invoke方法是放行!放行执行的是Action要执行的方法,如execute方法。
- invocation.invoke();
- System.out.println("OneIntercepter放行后执行代码!");
- //如果没有放行,则返回该字符串的视图结果有效;否则无效,无效时,采用的是放行Action里执行方法的返回值。
- return "error";
- //return null;
- }
- }
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 name="default" namespace="/" extends="struts-default" >
- <interceptors>
- <!-- 配置自定义拦截器 -->
- <interceptor name="oneInterceptor" class="com.rong.web.intercept.OneIntercepter">
- </interceptor>
- <!-- 配置自定义的拦截器栈 -->
- <interceptor-stack name="oneStack">
- <!-- 必须要有引用默认的拦截器栈 -->
- <interceptor-ref name="defaultStack"></interceptor-ref>
- <!-- 引用自定义的拦截器 -->
- <interceptor-ref name="oneInterceptor"></interceptor-ref>
- </interceptor-stack>
- </interceptors>
- <default-interceptor-ref name="oneStack"></default-interceptor-ref>
- <action name="action" class="com.rong.web.action.MyAction">
- <result>/one.jsp</result>
- </action>
- </package>
- </struts>
多个拦截器的情况:
- <?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 name="default" namespace="/" extends="struts-default" >
- <interceptors>
- <!-- 配置自定义的多个拦截器 -->
- <interceptor name="oneInterceptor" class="com.rong.web.intercept.OneIntercepter">
- </interceptor>
- <interceptor name="twoInterceptor" class="com.rong.web.intercept.TwoIntercepter">
- </interceptor>
- <!-- 配置自定义的拦截器栈 -->
- <interceptor-stack name="oneStack">
- <!-- 必须要有引用默认的拦截器栈 -->
- <interceptor-ref name="defaultStack"></interceptor-ref>
- <!-- 引用自定义的拦截器 -->
- <interceptor-ref name="oneInterceptor"></interceptor-ref>
- <interceptor-ref name="twoInterceptor"></interceptor-ref>
- </interceptor-stack>
- </interceptors>
- <default-interceptor-ref name="oneStack"></default-interceptor-ref>
- <action name="action" class="com.rong.web.action.MyAction">
- <result>/one.jsp</result>
- </action>
- </package>
- </struts>
拦截器栈——拦截器链
以栈的方式穿过拦截器链——一来一回(后进先出)
B.继承AbstractInterceptor抽象类,创建拦截器类
- package com.rong.web.intercept;
- import com.opensymphony.xwork2.ActionInvocation;
- import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
- public class ThreeIntercepter extends AbstractInterceptor {
- private static final long serialVersionUID = -7964326236393832363L;
- @Override
- public String intercept(ActionInvocation invocation) throws Exception {
- System.out.println("ThreeIntercepter intercept before!");
- invocation.invoke();
- System.out.println("ThreeIntercepter intercept after!");
- return null;
- }
- }
- <?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 name="default" namespace="/" extends="struts-default" >
- <interceptors>
- <!-- 配置自定义的多个拦截器 -->
- <interceptor name="oneInterceptor" class="com.rong.web.intercept.OneIntercepter">
- </interceptor>
- <interceptor name="twoInterceptor" class="com.rong.web.intercept.TwoIntercepter">
- </interceptor>
- <interceptor name="threeInterceptor" class="com.rong.web.intercept.ThreeIntercepter">
- </interceptor>
- <!-- 配置自定义的拦截器栈 -->
- <interceptor-stack name="oneStack">
- <!-- 必须要有引用默认的拦截器栈 -->
- <interceptor-ref name="defaultStack"></interceptor-ref>
- <!-- 引用自定义的拦截器 -->
- <interceptor-ref name="oneInterceptor"></interceptor-ref>
- <interceptor-ref name="twoInterceptor"></interceptor-ref>
- <interceptor-ref name="threeInterceptor"></interceptor-ref>
- </interceptor-stack>
- </interceptors>
- <default-interceptor-ref name="oneStack"></default-interceptor-ref>
- <action name="action" class="com.rong.web.action.MyAction">
- <result>/one.jsp</result>
- </action>
- </package>
- </struts>
4.常量配置
常量配置是放在default.properties文件里
A.URL后缀修改
默认的:
在struts.xml更改:
更改后使用rjl、do、action后缀或者没有后缀都可以访问网页
B.是否开启动态方法调用
略。详细请点击:http://www.cnblogs.com/57rongjielong/p/8157966.html
C.指定默认编码集
默认的:一般不修改,看实际情况是否需要更改
D.设置浏览器是否缓存静态内容
开发阶段一般关闭,上线(生产)阶段打开
E.系统是否自动重新加载文件
开发阶段最好打开,打开后效果仍然不明显。
F.开发模式
默认关闭:
修改并且添加两个文件:
G.视图主题
默认:
更改:
H.指定由spring负责action对象的创建
与spring集成时,指定由spring负责action对象的创建
I.上传文件的大小限制
J.自动加载国际化资源文件
当国际化资源修改时,自动加载国际化资源文件,默认值为false
Struts2(四)的更多相关文章
- Struts2(四)——页面相关内容
上篇博客总结了数据流转各个方面的内容,这篇重点说一下框架对于界面上知识. 一,说到页面,记得在总体介绍中,说到Struts2比Struts1的一方面优势就是它支持更多的视图技术(Freemarker, ...
- struts2(四) ognl表达式、值栈、actionContext之间的关系
今天来说说ognl表达式在struts2中的运用. --wh 一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任 ...
- 框架学习之Struts2(四)---拦截器和标签
一.拦截器概述 1.1 在struts2框架中封装了很多功能,struts2里面封装的功能都是在拦截器里面,struts2里面又很多拦截器,但不是每次这些拦截器都执行,每次执行型默认的拦截器. 默认拦 ...
- Struts2(四)Action一接收参数
一.属性接收参数并输出 导入struts2的包,导入需要的包 和struts.xml配置文件 <?xml version="1.0" encoding="UTF-8 ...
- Struts2 (四) — 拦截器
一.拦截器 1.概述 1.1什么是拦截器 在struts2中,拦截器(Interceptor)是用来动态拦截Action执行的对象. 拦截器有点类似以前Servlet阶段的Filter(过滤器 ...
- Struts2(四):在Action中如何访问Web资源
1.什么WEB资源? HttpServletRequest,HttpServletRespone,HttpApplication,ServletContext,HttpSession等原生Servle ...
- Struts2 四、Struts2 处理流程
1. 一个请求在Struts2框架中的处理步骤: a) 客户端初始化一个指向Servlet容器的请求: b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可 ...
- 浅谈Struts2(四)
一.Struts2的拦截器(Intercept) 作用:把多个Action中的共有代码,提取至拦截器,从而减少Action中的冗余代码. 1.Action拦截器 a.编写interceptor类 pu ...
- Struts2(四)Struts2配置文件的配置
Struts2的常见配置 1.Struts2的配置文件的加载顺序: 每次从客户端发送到请求到服务器都要先从Struts2的核心过滤器StrutsPrepareAndExeccuteFilter,这个过 ...
- Struts2(四.注册时检查用户名是否存在及Action获取数据的三种方式)
一.功能 1.用户注册页面 <%@ page language="java" contentType="text/html; charset=UTF-8" ...
随机推荐
- 详解Linux运维工程师高级篇(大数据安全方向).
hadoop安全目录: kerberos(已发布) elasticsearch(已发布)http://blog.51cto.com/chenhao6/2113873 knox oozie ranger ...
- go语言带cookie的net客户端请求与[]byte转string
前些日子参加了一个叫Advent of Code的编程大赛,每天一道题,快活似神仙.这每道题都有自己的拼图数据输入puzzle input,要做题就需要用到该数据,把数据复制过来感觉又太麻烦,于是就兴 ...
- Go学习笔记02
前言 上篇内容,介绍了如何在不同的系统上安装 Go 开发环境和部分参数的配置,也简单介绍了 package 的概念.导入方式和我对包的初始化过程的理解,关于初始化顺序的理解,可能有错误,后期会有修改, ...
- scala (5) 可变序列和不可变序列
/** * 序列分为可变长和不可变长,序列其实就是list,底层是链表结构 * 特点:插入有序,可重复,增加和移除元素很快,查询慢 * 不可变长序列:List * 可变长序列:ListBuffer * ...
- PL/SQL轻量版(一)——入门介绍
一.概述 1.概念对比: SQL:结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目 ...
- 20155234 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 ...
- [BZOJ3218]a + b Problem-[主席树+网络流-最小割]
Description 传送门 Solution 此处我们按最小割的思路考虑. 暴力:S->i表示该点选黑色的权值b[i]:i->T表示该点选白色的权值w[i].考虑如果某个点i受点j为白 ...
- 微信小程序:页面跳转时传递数据到另一个页面
一.功能描述 页面跳转时,同时把当前页面的数据传递给跳转的目标页面,并在跳转后的目标页面进行展示 二.功能实现 1. 代码实现 test1页面 // pages/test1/test1.js Page ...
- Yii 2.0 使用片段缓存
网站首页footer中的菜单标题是从数据库读取并显示处理的. 也就是 <footer>标题里面是foreach.这样每个人打开网站就查询遍历效率会很低. <footer class= ...
- Linux系统中Oracle11g数据库的安装与验证
1.查看Linux系统的位数 2.下载Oracle10g数据库软件 https://blog.csdn.net/xiezuoyong/article/details/81197688 (需要注册Ora ...