struts2的基本用法
来源:互联网 发布:python获取命令行参数 编辑:程序博客网 时间:2024/06/05 11:47
一、执行流程
二、配置文件加载顺序
- default.properties struts2-core-2.3.15.3.jar\org\apache\struts2 不能修改
- struts-default.xml struts2-core-2.3.15.3.jar 不能修改
- struts-plugin.xml 在struts2提供的插件jar包中 不能修改
- struts.xml 我们的应用中 我们修改的:推荐
- struts.properties 我们的应用中 我们修改的
- web.xml 我们的应用中 我们修改的,可以给过滤器配置参数
三、action类的三种 创建方式
第一种:无侵入式创建(实际开发中基本不用)
/** * 我们的第一个动作类 * 动作类的第一种创建方式: * 无侵入式的创建。*/public class HelloAction { /** * @return */ public String sayHello(){ System.out.println(this); System.out.println("HelloAction中的sayHello方法执行了。。。。"); return "success"; }}<action name="hello" class="wb.web.action.HelloAction" method="sayHello"> <result name="success" type="dispatcher">/success.jsp</result></action>
第二种:实现Action接口的定义方式 (实际开发中用的也不多)
/** * 动作类的第二种创建方式: * 实现Action接口 */public class Hello2Action implements Action{ @Override public String execute() throws Exception { System.out.println("Hello2Action的execute方法执行了............"); return ERROR; } }默认的动作方法是:execute(),所以可以不指定method属性<action name="hello2" class="com.itheima.web.action.Hello2Action"> <result name="success" type="dispatcher">/success.jsp</result></action> Action接口中的常量 SUCCESS:一般多用于成功 ERROR:一般多用于动作方法执行失败 LOGIN:一般多用于返回登录页面 NONE:一般用于不返回任何结果视图,和return null作用是一样的 INPUT:一般多用于数据回显,也是struts2中数据回显时的默认返回值。
第三种:继承ActionSupport (实际开发中采用的方式)
/** * 动作类的第三种创建方式: * 继承ActionSupport*/public class Hello3Action extends ActionSupport{} <action name="hello3" class="com.itheima.web.action.Hello3Action"> <result name="success" type="dispatcher">/success.jsp</result></action>
四、访问Servlet的API的两种方式
1、使用ServletActionContext
* static HttpServletRequest getRequest():获取Web应用的HttpServletRequest对象。
* static HttpServletResponse getResponse():获取Web应用的HttpServletResponse对象。
* static ServletContext getServletContext():获取Web应用的ServletContext对象。
* static PageContext getPageContext():获取Web应用的PageContext对象。
2、通过实现接口的方式
- ServletRequestAware:实现该接口的Action可以直接访问Web应用的HttpServletRequest实例。
- ServletResponseAware:实现该接口的Action可以直接访问Web应用的HttpServletResponse实例。
- SessionAware:实现该接口的Action可以直接访问Web应用的HttpSession实例。
- ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例。
五、ContextMap概述
它是OGNL上下文对象,是struts2中封装数据最大的对象。我们一次请求中所有用到的信息都可以在它里面找到。它是一个Map结构的对象,其中key是字符串,value是一个Object。
1、ActionContext
ActionContext就相当于对ContextMap进行了一次再封装,是对ContextMap进行操作的,而ContextMap中封了我们一次请求的所有数据,所以它的创建应该是每次请求访问Action时,即核心控制器(StrutsPrepareAndExecuteFilter)的doFilter方法执行时。
2、ValueStack
ValueStack是Struts的一个接口,字面意义为值栈,OgnlValueStack是ValueStack的实现类,客户端发起一个请求struts2架构会创建一个action实例同时创建一个OgnlValueStack值栈实例,OgnlValueStack贯穿整个 Action 的生命周期。它是ContextMap中的一部分,里面的结构是一个List,是我们可以快速访问数据一个容器。它的封装是由struts2框架完成的。
六、拦截器
拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者在定义的action执行的前后加入执行的代码,也可以在一个action执行前阻止其执行。也就是说它提供了一种可以提取action中可重代码,统一管理和执行的方式。
拦截器链 (Interceptor Chain),在Struts 2中称为拦截器栈Interceptor Stack, 在不修改源码的基础上,已有的方法进行动态增强。
在访问struts2核心内部时,在动作方法执行之前先正序执行,然后执行动作方法,执行完动作方法和结果视图之后,再倒序执行。所以它是先进后出,是个栈的结构。
执行原理:
①接口中的init()方法,在拦截器被创建后立即被调用,它在拦截器的生命周期内只被调用一次,可以在该方法中对相关资源进行必要的初始化;
②每拦截一个请求,intercept()方法就会被调用一次;
③destory()方法将在拦截器销毁之前被调用。
实现拦截器的三种方式:
①定义一个类,实现Interceptor接口
②定义一个类,继承AbstractInterceptor
③定义一个类,继承MethodFilterInterceptor
- struts2的基本用法
- struts2的基本用法
- Struts2的基本用法<一>
- struts2标签的一些基本用法
- struts2基本用法
- struts2 + jquery ajax 基本用法
- Struts2中的Result基本用法
- struts2中checkboxlist和radio的基本用法
- struts2(十一)OGNL表达式的基本语法和用法
- struts2-struts2的基本配置
- OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例及 EL的基本用法
- Struts2的基本流程
- struts2的基本配置
- Struts2基本的配置
- struts2的基本流程
- Struts2的基本配置
- Struts2 的基本流程
- Struts2 的基本应用
- 算法题:求最后一个单词长度
- java并发中的wait(),notify(),notifyAll()方法和Condition接口
- Chapter4 表达式
- STL-deque容器
- LeetCode刷题(4)
- struts2的基本用法
- js函数、作用域、闭包、执行上下文
- 多态
- Java300StudyNote(7)-Java各版本JavaSE、JavaEE、JavaME
- 学习日记-css3 @supports | @media | @keyframes | rem字体
- uefi模式下修复windows启动分区:使用bcdboot.exe工具
- 运行JFinal时jdk报错:A JNI error has occurred,please check your installation and try again
- 《啊哈算法》里快排要从右开始的原因
- 锁的优化