其实我觉得urlrewritefilter做的就是将浏览器中一个动态的地址变成静态的,比如我在浏览器中输入
http://localhost:8080/wapDemo/13浏览器如何去执行以前那个完整的写法呢
http://localhost:8080/wapDemo/infoList.do?corp_account=13 再者http://localhost:8080/wapDemo/13/24 他就会执行
http://localhost:8080/wapDemo/infoDisp.do?corp_account=13&corp_product=24
大家首先会想到写个过滤器在web.xml中配置一下,这当然是可以的,而其我已经写好了类似的处理
比如请看我的AuthFilter.java
package com.running.wap.support;
import java.io.IOException;
import java.util.regex.Pattern;
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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AuthFilter extends HttpServlet implements Filter{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterchain) throws IOException, ServletException {
boolean b,b2;
String account=null;
String account2=null;
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
//获得浏览器中输入的url地址
String url = req.getRequestURL().toString();
//得到请求uri,比如url为http://localhost:8080/wapDemo/13,则uri为
//http://localhost:8080/ 以后的东西,此时为wapDemo/13
String uri=req.getRequestURI();
//如果url不是以.do结尾
if (!url.endsWith(".do")){
//接着就是对该uri这个字符串进行处理的过程,大体思路是获得第一个/的位置,如果有两个就获得两个/的位置
//接着看你截获的字符串是不是数字类型的,然后获得那一个或两个数值,将其当做参数传到相应的位置
int index=uri.lastIndexOf("/");
int index2=uri.lastIndexOf("/",index-1);
if(index>-1&&index2>-1){
account=uri.substring(index + 1);
account2=uri.substring(index2+1,index);
b = Pattern.compile("\\d+").matcher(account).matches();
b2 = Pattern.compile("\\d+").matcher(account2).matches();
if(b&&b2){
int corp_account,corp_product;
corp_product = Integer.parseInt(account);
corp_account = Integer.parseInt(account2);
resp.sendRedirect("../infoDisp.do?corp_account="+corp_account+"&corp_product="+corp_product);
}
else if(b&&b2==false){
int corp_account;
corp_account = Integer.parseInt(account);
resp.sendRedirect("infoList.do?corp_account="+corp_account);
}
}
if(url.equals("http://192.168.1.5:8080/wapDemo/")){
resp.sendRedirect("index.do");
}
}else{
filterchain.doFilter(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
但因为现在流行比较火的处理该问题的jar包urlrewritefilter的诞生,我们就不用写这些了,直接在urlrewrite.xml中配置就行了,看我的相应的配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite>
<rule>
<from>^/(\d+)$</from>
<to type="redirect">%{context-path}/infoList.do?corp_account=$1</to>
</rule>
<rule>
<from>^/(\d+)/(\d+)$</from>
<to type="redirect">%{context-path}/infoDisp.do?corp_account=$1&corp_product=$2</to>
</rule>
<!--
<outbound-rule>
<from>index.jsp</from>
<to>/</to>
</outbound-rule>
-->
</urlrewrite>
就可以了,不用再伤脑筋写你自己的过滤器了。
还有就是web.xml中
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
配置的作用,就是说当用户在浏览器中输入http://Ip:port/项目名/ 之后会去找你的index.jsp页面,所以可以在你的
index.jsp中这样写
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%
response.sendRedirect("index.do");
%>
相当于在浏览器中输入http://IP:port/项目名/index.do 一个效果,是不是很巧妙呢。
分享到:
相关推荐
最新的urlrewritefilter最新的urlrewritefilter最新的urlrewritefilter
UrlRewriteFilter架包和文档
urlrewritefilter实现伪静态urlrewritefilter实现伪静态urlrewritefilter实现伪静态
urlrewritefilter-4.0.3.jar
urlrewritefilter-4.0.4 下载
jsp,过滤器,urlrewritefilter
这是urlrewritefilter-4.0.3.jar下载,通过java的Filter过滤器对URL进行重写,用户得到的全部都是经过处理后的URL静态地址,本质上通过伪地址进行页面跳转。 软件介绍 urlrewritefilter-4.0.3.jar是有时候项目中的...
urlrewritefilter-3.2.0 struts伪静态 jsp伪静态
urlrewritefilter 2.6源码
解压后直接是urlrewritefilter-4.0.3.jar包,放入Web应用的WEB-INF\lib目录下即可。
urlrewritefilter-3.1.0.zip,包含urlrewritefilter-3.1.0.jar和urlrewrite.xml
使用URL Rewrite实现网站的伪静态实例,包括urlrewritefilter-4.0.3.jar
urlrewritefilter-3.1.0.jar
urlrewritefilter-3.2.0.zipurlrewritefilter-3.2.0.zip
urlrewritefilter-4.0.4.jar 这个jar包之前自己也是找了很久,这次自己上传一个,有需要的朋友可以下载使用
urlrewritefilter包。重写url,实现url伪静态,可以将长url命名成指定短url,或者重命名url隐藏敏感信息。