Jsp通过Filter实现UrlRewriter原理
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>UrlRewriterHelper</filter-name>
<filter-class>helper.UrlRewriterHelper</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriterHelper</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
web.xml
UrlRewriterHelper文件:
package helper; import java.io.IOException;
import java.net.HttpRetryException; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; public class UrlRewriterHelper implements Filter { @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest arg0, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
if (arg0 instanceof HttpServletRequest) {
HttpServletRequest request = (HttpServletRequest) arg0;
String url = request.getRequestURI();
int beginIndex = url.lastIndexOf(".htm");
if (beginIndex == url.length() - 4) {
String newUrl = url.substring(0, beginIndex) + ".jsp";
String contextRoot = request.getContextPath();
beginIndex = newUrl.indexOf(contextRoot);
if (beginIndex == 0) {
newUrl = newUrl.substring(contextRoot.length());
RequestDispatcher dispatcher = request.getRequestDispatcher(newUrl);
dispatcher.forward(request, response);
return;
}
}
}
arg2.doFilter(arg0, response);
} @Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub } }
UrlRewriterHelper
Jsp通过Filter实现UrlRewriter原理的更多相关文章
- Invalid /admin/*.jsp in filter mapping
完成错误信息 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache ...
- Bloom Filter概念和原理【转】
Bloom Filter概念和原理 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合.Bloom Filter的这种高效是有 ...
- jsp基本语法及运行原理
一.jsp简介 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导.许多公司参与一起建立 ...
- [Java] JSP笔记 - Filter 过滤器
一.什么是Web过滤器 Servlet API 很久以前就已成为企业应用开发的基石,而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充. Servlet 过滤器是可插入的 Web 组件, ...
- jsp 过滤器 Filter 配置
.如果要映射过滤应用程序中所有资源: <filter> <filter-name>loggerfilter</filter-name> <filt ...
- JSP过滤器Filter配置过滤类型汇总
一.配置方法1 映射过滤应用程序中所有资源<filter> <filter-name>loggerfilter</filter-name> <fi ...
- jsp生命周期和工作原理
jsp的工作原理jsp是一种Servlet,但是与HttpServlet的工作方式不太一样.httpservlet是先由源代码编译为class文件后部署到服务器下的,先编译后部署.而jsp则是先部署后 ...
- JSP入门 Filter
Filter,它的名字是过滤器,可以批量拦截修改servlet的请求和响应. 需要实现接口Filter 配置 <filter> <filter-name>EncodingFil ...
- spring-cloud-Zuul学习(三)【中级篇】--Filter链 工作原理与Zuul原生Filter【重新定义spring cloud实践】
这里开始记录zuul中级进阶内容.前面说过了,zuul主要是一层一层的Filter过滤器组成,并且Zuul的逻辑引擎与Filter可用其他基于JVM的语言编写,比如:Groovy. 工作原理 Zuul ...
随机推荐
- 金蝶KIS下载地址
升级方法: 您好,建议您先升级到标准版7.5,再升级到标准版8.1,直接用7.5的软件打开金蝶2000的账套,会提示升级,再用8.1的软件打开7.5的账套,升级前,需先备份账套. 金蝶KIS标准版和业 ...
- 第十九章 springboot + hystrix(1)
hystrix是微服务中用于做熔断.降级的工具. 作用:防止因为一个服务的调用失败.调用延时导致多个请求的阻塞以及多个请求的调用失败. 1.pom.xml(引入hystrix-core包) <! ...
- AngularJS driective 封装 自动滚动插件
1.ui-smooth-scroll.js文件内容 angular.module('app') .directive('uiSmoothScroll', ['$location', '$anchorS ...
- ECMAScript5之Object学习笔记(一)
随着IE的逐步追赶,目前到IE11已经能够很好的支持ECMAScript5标准了,其他的现代浏览器像firefox,chrome,opera就更不用说了. 再加上nodejs使得javascript在 ...
- [Webpack] Analyze a Production JavaScript Bundle with webpack-bundle-analyzer
Bundle size has a huge impact on JavaScript performance. It's not just about download speed, but all ...
- Silverlight 之 断点调试
silverlight程序经常会遇到无法调试的情况,下面来总结解决方案. 一.问题描述 在Silverlight开发过程中,经常时不时的会碰到Silverlight无法调试的问题.如下几种情况: 1. ...
- UML类图聚集与组合的区别
http://blog.csdn.net/zwf0713/article/details/2025922 设计模式中组合和聚集好像挺相似,但有一定区别. 1-在图上的区别是,聚集用空心,组合用实心: ...
- hadoop的namenode无法启动的解决的方法
安装hadoop集群时,启动集群,发现master节点的namenode没有启动成功.这一般都是没有格式格式化namenode的缘故.格式化一下就可以,格式化namenode的命令:在hadoop安装 ...
- windows安装sqlite
1.下载 sqlite的官方下载地址为http://www.sqlite.org/download.html (sqlite-shell-win32-x86-3090200) 2.将sqlite加入 ...
- java 动态生成类再编译最后代理
package spring.vhostall.com.proxy; public interface Store { public void sell(); } ------------------ ...