Struts2 Servelet重构
这是利用action模仿请求Servelet(单例)
作用:
1.减少web.xml代码量
2.将servelet中的代码转移到action中,只需要在action中定义业务逻辑则可。
1.定义一个过滤器
package com.struts2.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.struts2.action.Action;
import com.struts2.action.HelloWorldAction;
import com.struts2.utils.ServletUtils;public class DispatchFilter implements Filter {private HttpServletRequest request;private HttpServletResponse response;@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain arg2) throws IOException, ServletException {/*** 1.先获取HttpServletRequest,HttpServletResponse* 2.获取HelloWorldAction.action中的HelloWorldAction* 3.利用java的反射机制进行调用*/this.request=(HttpServletRequest) request;this.response=(HttpServletResponse) response;String requestURI = this.request.getRequestURI();System.out.println(requestURI);String actionName = ServletUtils.convert(requestURI);//利用java的反射机制调用该方法try {//利用java反射机制创建一个新的HelloWorldAction对象HelloWorldAction action = (HelloWorldAction) Class.forName("com.struts2.action."+actionName).newInstance();String forward = action.execute(this.request, this.response);/*** 2种跳转方法* *重定向* request里的参数不起作用* this.response.sendRedirect(jsp页面)* *转发* 放在 request中的值可以取出来* this.request.getRequestDispatcher("index.jsp").forward(this.request, this.response);* */this.request.getRequestDispatcher("index.jsp").forward(this.request, this.response);} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}@Overridepublic void init(FilterConfig arg0) throws ServletException {}}
web.xml中配置为:
<filter><filter-name>DispatchFilter</filter-name><filter-class>com.struts2.filter.DispatchFilter</filter-class></filter><filter-mapping><filter-name>DispatchFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping>
当接受到一个请求后
<a href="HelloWorldAction.action">请求一个action</a>
当过滤器接受到一个请求以后,进行过滤
1.先取出请求uri.
2.根据java反射机制取出action
package com.struts2.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class HelloWorldAction implements Action {@Overridepublic String execute(HttpServletRequest request,HttpServletResponse response) {System.out.println("Hello World Struts2");return "index.jsp";}}
3.取出action以后,就可以执行action中的方法
4.利用request/response转发
/*** 2种跳转方法* *重定向* request里的参数不起作用* this.response.sendRedirect(jsp页面)* *转发* 放在 request中的值可以取出来* this.request.getRequestDispatcher("index.jsp").forward(this.request, this.response);* */this.request.getRequestDispatcher("index.jsp").forward(this.request, this.response); // 这句话的意思是,上面返回了一个字符串"index.jsp",那么这里就是去寻找这个index.jsp,并将request和response放进去。
转载于:https://www.cnblogs.com/callyblog/p/7481847.html
Struts2 Servelet重构相关推荐
- jQuery学习之:Validation表单验证插件
http://polaris.blog.51cto.com/1146394/258781/ 最近由于公司决定使用AJAX + Struts2来重构项目,让我仔细研究一下这两个,然后集中给同事讲讲,让每 ...
- idea创建Struts2 项目并运行
Struts2的框架已经是很老的框架了 但是有老的项目使用的还是SSH架构,而且很难重构 所以还是需要了解一下的 New-Project 选择Web Application – Struts2 有三种 ...
- struts2拦截器的实现原理及源码剖析
拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理.同时,拦截器也可以让你将通用的 ...
- 深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate.似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和 ...
- struts2+kindeditor4.0.5的上传图片的实现
今天开始用kindeditor,主要是因为kindeditor界面干净,API齐全.但上传图片的时候遇到各种问题,我就来个各种解决.kindeditor中jsp的demo是用纯jsp实现,如果你的项目 ...
- kindeditor图片上传 struts2实现
一.kindeditor以及struts2部署搭建不再赘述,如须要请參考kindeditor用法 Struts2框架搭建 二.kindeditor图片上传所依赖jar包在kindeditor\jsp\ ...
- Struts2 表单和非表单标签
学习内容 Struts 2表单标签 Struts 2非表单标签 能力目标 熟练使用Struts 2表单标签开发表单 熟练使用Struts 2非表单标签 本章简介 上一章讲述了ognl和Struts2标 ...
- java之struts2的action的创建方式
首先action是用来处理请求的, 这里struts2中的action的3中创建方式. 1.无侵入性的创建方式. 无侵入性:使用第三方的框架,不直接继承或实现第三方提供的类或者接口就说是无侵入性的. ...
- Struts2的简单使用
一.准备工作及实例 1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文件存放 ...
最新文章
- java 中和_java中的和=是什么意思
- 实战解读增长黑客在 B 端业务中的应用
- 获取某个地址的utxo的三种方法
- 抓取epsg.io的内容
- vss中项目与服务器断开绑定之后进行重新绑定得方法
- 我常用的15 款开发工具!
- Leetcode 304.二维区域和检索-矩阵不可变
- Veritas Backup Exec 21.3 Multilingual (Windows)
- MAC下的SVN工具
- 计算两个日期之间,相差多少天C语言详解
- Matlab获取线粒体序列及核苷酸初步分析
- 数字藏品文博周将至,拙政园主题数字藏品全网首发
- QQ动态表情包如何制作, 制作软件哪个好
- 【沐风老师】3dMax Gyroid Minimal Surface 极小曲面建模详细教程
- babel-预设和插件
- 可编程数据平面(论文阅读)
- NKOJ 4247 老蒋的数列(乱搞)
- 成都百知教育跨境电商人物专访| Shopee大卖“朔风”
- 百人计划 图形1.4 PC手机图形API介绍
- vue实现Cnode具体有axios分页请求 | filters(过滤器)解决时间转秒前 分钟前 小时前 月前 年前
热门文章
- 小目标神器!TPH-YOLOv5:将Transformer预测加载Yolov5!
- 人脸检测,微软提出用RNN代替CNN
- Github | 微软-计算机视觉最佳实践、代码示例和相关文档
- 我喜欢阅读和计算机英语,关于自考中的计算机专业
- jav中什么是组织java程序_Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指()。A.Java调试器B.Java剖析工具C.Jav...
- 深度强化学习-DDPG算法原理和实现
- 数据结构(十四)归并排序
- 部编版是什么版本_教材部编版和人教版的区别
- android 读取xlsx文件,android怎么解析表格.xlsx文件
- 2019年信息安全工程师备考技巧