介绍:通过对java的高度抽象,把通行性做到极致。每次申请一个连接,只要把包名,类名填写好,就可以自动执行。

通过继承接口,来实现不同类的通用性。继承Action,new的时候直接newAction类型就好,不必考虑类型不一样而造成的通用性降低的问题。

先记录一下连接的提交格式

包名/类名.action

如      test/test.action      第一个test为包名   第二个test为类名。

过程:

1.通过注册,配置过滤器,设置好提交连接时过滤的后缀名。xml文件如下

<filter ><filter-name>Test</filter-name><filter-class>Jf.Filter.IllegalityLoginFilter</filter-class><init-param><param-name>aa</param-name><param-value>utf-8</param-value></init-param></filter>    <filter-mapping><filter-name>Test</filter-name><url-pattern>*.action</url-pattern></filter-mapping>

设置提交时连接为.action的后缀名的连接进行截取过滤。

2,提交的连接

For.Test/classss.action

3 .接口

package Jf.Filter;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public interface ActionIntepacee
{public String excute(HttpServletRequest request , HttpServletResponse response) throws IOException ,ServletException ;
}

4实现

package For.Test;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import Jf.Filter.ActionIntepacee;public class classss implements ActionIntepacee
{public String excute(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {System.out.println("classs");return null;}}

5过滤器类

package Jf.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 test.test;public class IllegalityLoginFilter implements Filter
{HttpServletRequest request;HttpServletResponse response;public void destroy() {}public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {request = (HttpServletRequest)arg0;response = (HttpServletResponse)arg1;String url = request.getRequestURI(),url2;String pack,classs,method;DealWithPackAndClasss DealW = new DealWithPackAndClasss();      //   For.Test/classss*url2 = DealW.DealWith(url);pack = url2.substring(0, url2.indexOf("/"));classs = url2.substring(url2.indexOf("/")+1, url2.lastIndexOf("*"));//System.out.println(pack+"  "+classs);try {ActionIntepacee  a = (ActionIntepacee)Class.forName(pack+"."+classs).newInstance();System.out.println( "1111"+a.excute(request, response) );} catch (Exception e) {e.printStackTrace();}}

手动设置处理连接,截取类名和方法名

package Jf.Filter;public class DealWithPackAndClasss   //         /5555/For.Test/classss.action
{/*public static void main(String args[]){DealWith("/5555/For.Test/classss.action");}*/public static String  DealWith(String url){String url1 = url , url2 ,url_p, url_cla;url1 = url1.substring(1);                                                //  5555/For.Test/classss.actionurl1 = url1.substring(url1.indexOf("/")+1,url1.lastIndexOf(".")+1);      //    For.Test/classss.url_p = url1.substring(0, url1.indexOf("/"));url_cla = url1.substring(url1.indexOf("/")+1,url1.lastIndexOf("."));System.out.println(url_p+"/"+url_cla+"*");return url_p+"/"+url_cla+"*";}}

以上就是对servlet的改进,既通过请求的连接(连接填写包名/类名),即可直接执行填写的类

在java web 中使用过滤器+反射机制+代理模式,来改进servlet相关推荐

  1. java web开发(过滤器)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 过滤器,或许换成拦截器更合适一点.看到这个词,让我想到了linux kernel里面的netfi ...

  2. Java的反射机制 工厂模式综合讲解【转载自51CTO】

    2019独角兽企业重金招聘Python工程师标准>>> Java的反射机制 工厂模式综合讲解 1.什么叫反射 Java.lang.reflect包下 正常情况下我们可以通过类实例化一 ...

  3. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  4. Java Web中的中文编码问题分析

    一.为什么需要编码 在计算机中存储信息的最小单位是1个字节,即8bit,所以能标识的最大字符范围是0~255,而人类自然语言中例如汉语.日语要表示的符号太多,无法单纯用一个字节来完全表示,为了解决这个 ...

  5. java 控制jsp_JSP学习之Java Web中的安全控制实例详解

    普通用户界面 修改登录的Servlet,修改后的代码如下: LoginProcess.java代码: package servlet; import javabean.User; import jav ...

  6. 第三章 深入分析Java Web中的中文编码问题

    3.1 几种常见的编码格式 3.1.1 为什么要编码 一个字节 byte只能表示0~255个符号,要表示更多的字符,需要编码. 3.1.2 如何翻译 ASCII码:有128个,用一个字节的低7位表示. ...

  7. 用servlet路径访问一个html,java web中servlet、jsp、html 互相访问的路径问题

    在html">java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. html">java web中的路径使用按我的分法可以分两种情况,当 ...

  8. java web 中 读取windows图标并显示

    java web中读取windows对应文件名的 系统图标 ....显示 1.获取系统图标工具类 package utils;  import java.awt.Graphics;  import j ...

  9. Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

    Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 参考文章: (1)Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 (2)https://www.cnblog ...

最新文章

  1. Mac安装PhoneGap3
  2. (转)事务是什么,以及事务四个特性
  3. EF 关系规则(一对一、一对多、多对多...)
  4. java SpringMVC mybatis 多数据源 代码生成器 SSM java redis shiro ehcache
  5. tty,串口,控制台与驱动程序
  6. VirtualCopy()操作I/O口 物理地址为什么要移8位
  7. influxDb 异常:{“error“:“retention policy not found: default“}
  8. ZetCode 杂项教程
  9. anki 插入表格_Anki+思维导图的两种方法(Anki+表格,Anki+幕布)
  10. Java中Minio基础使用
  11. 论发SCI论文和生孩子的共同点:那我这篇怀的也太久了!
  12. 廖雪峰python学习笔记之访问数据库
  13. 达梦数据库管理工具介绍
  14. 单片机学习(四)——ESP8266(最全教程和说明)
  15. python apply函数不打印_Python Pandas dataframe shift在apply函数中不起作用
  16. JAVA Timer 定时器原理
  17. 扩展spring之ext-spring-cache
  18. LXDE桌面系统设置快捷键
  19. 攻防世界 reverse leaked-license-64
  20. go test 单元函数测试

热门文章

  1. 七牛云撤回赴美IPO申请:上市一波三折 阿里云锋是股东
  2. c++语言计算圆周率,求C++计算圆周率小数点后10000位的程序,感谢。不知道怎么实现大数...
  3. 华为p7android5.1系统,华为 P7 超窄边框设计 直升安卓5.1系统
  4. 有了特斯拉光伏屋顶 未来不需要电网?
  5. 基于Python+Django+Vue+MYSQL的古诗词在线学习系统
  6. 计算机与通信网络潘书文答案,消防物联网系统测试方法
  7. 电影院订票选座网站系统 毕业设计毕设源码毕业论文参考(1)功能概要
  8. LHS拉丁超立方采样matlab程序,对于均匀分布与正态(高斯)分布的变量进行拉丁超立方采样
  9. Asp,Net中,怎么获取页面上的标签?标签forecolor属性在后台怎么设置?
  10. Android 11.0 QuickQSPanel添加亮度进度条布局