Jsp通过Filter实现UrlRewriter原理
web.xml文件:

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 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"> 4 <welcome-file-list> 5 <welcome-file>index.jsp</welcome-file> 6 </welcome-file-list> 7 <filter> 8 <filter-name>UrlRewriterHelper</filter-name> 9 <filter-class>helper.UrlRewriterHelper</filter-class> 10 </filter> 11 <filter-mapping> 12 <filter-name>UrlRewriterHelper</filter-name> 13 <url-pattern>/*</url-pattern> 14 </filter-mapping> 15 </web-app>
UrlRewriterHelper文件:

1 package helper; 2 3 import java.io.IOException; 4 import java.net.HttpRetryException; 5 6 import javax.servlet.Filter; 7 import javax.servlet.FilterChain; 8 import javax.servlet.FilterConfig; 9 import javax.servlet.RequestDispatcher; 10 import javax.servlet.ServletException; 11 import javax.servlet.ServletRequest; 12 import javax.servlet.ServletResponse; 13 import javax.servlet.http.HttpServletRequest; 14 15 public class UrlRewriterHelper implements Filter { 16 17 @Override 18 public void destroy() { 19 // TODO Auto-generated method stub 20 21 } 22 23 @Override 24 public void doFilter(ServletRequest arg0, ServletResponse response, 25 FilterChain arg2) throws IOException, ServletException { 26 // TODO Auto-generated method stub 27 if (arg0 instanceof HttpServletRequest) { 28 HttpServletRequest request = (HttpServletRequest) arg0; 29 String url = request.getRequestURI(); 30 int beginIndex = url.lastIndexOf(".htm"); 31 if (beginIndex == url.length() - 4) { 32 String newUrl = url.substring(0, beginIndex) + ".jsp"; 33 String contextRoot = request.getContextPath(); 34 beginIndex = newUrl.indexOf(contextRoot); 35 if (beginIndex == 0) { 36 newUrl = newUrl.substring(contextRoot.length()); 37 RequestDispatcher dispatcher = request.getRequestDispatcher(newUrl); 38 dispatcher.forward(request, response); 39 return; 40 } 41 } 42 } 43 arg2.doFilter(arg0, response); 44 } 45 46 @Override 47 public void init(FilterConfig arg0) throws ServletException { 48 // TODO Auto-generated method stub 49 50 } 51 52 }
分类:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2012-04-27 .NET Winform也能画出类似QQ、飞信这样的窗口风格和控件效果