UrlRewrite实现伪静态

  • UrlRewrite的含义

    UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。

    优点

    一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多
    二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
    三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息

    使用范围

    地址重写一般是用于将动态地址伪静态。如果本身就是静态就没必要了。地址重写后网站制作者可以通过输入地址名直接访问。

web.xml中配置:

 <filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>
            org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
        </filter-class>
    <init-param>
      <param-name>logLevel</param-name>
      <param-value>DEBUG</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>*.html</url-pattern>
  </filter-mapping>

WEB-INT下面添加:urlrewrite.xml

ule结点中form的规则默认使用的是正则表达式来匹配的,当用户访问服务器时的URL会与该配置相比较,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转

<?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>
		<note>查询注册用户</note>
		<from>^/admin/user/id_([A-Za-z0-9]+).html$</from>
		<to type="forward">/userIds.htm?id=$1</to>
	</rule>
</urlrewrite>

html页面发送请求: 
<td width="20%"><a href="$!webPath/admin/user/id_$!{obj.id}.html">用户详细信息</a></td>


controller控制层
/**
	 * 根据id查询用户
	 * 
	 * @param request
	 * @param response
	 * @param id
	 * @return
	 */
	@RequestMapping({ "/userId.htm" })
	public ModelAndView userById(HttpServletRequest request,
			HttpServletResponse response, String id) {
		ModelAndView mv = new JModelAndView(CONTEXT_URL_TEMPLATES
				+ "userid.html", request, response);
		mv.addObject("user", userService.findUserById(id));
		return mv;
	}


你可能感兴趣的:(urlrewrite)