urlrewrite测试配置

web-inf配置

<filter>
		<filter-name>UrlRewriteFilter</filter-name>
		<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
		<!-- 检查urlrewrite.xml加载设置时间为秒,开发时使用 -->
		<init-param>
			<param-name>confReloadCheckInterval</param-name>
			<param-value>6</param-value>
		</init-param>
		<init-param>
			<param-name>logLevel</param-name>
			<param-value>info</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>UrlRewriteFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


urlrewrite.xml配置:

	<!-- 以下是测试配置 开发完会清除掉 -->
	<rule>
		<name>测试有后缀的url</name>
		<note>
			测试有后缀的url美化后的url会加一个后缀如html
		</note>
		<from>^/t/normal(.html|.htm|.jsp|.do|.h5)$</from>
		<to>/test/normal</to>
	</rule>


	<rule>
		<from>^/test/rule$</from>
		<to>/test/normal</to>
	</rule>
	<outbound-rule>
		<from>/test/normal</from>
		<to>/test/rule</to>
	</outbound-rule>


	<rule>
		<name>测试多层次url</name>
		<note>
			测试多层次url
		</note>
		<from>^/r$</from>
		<to>/test/rule/abc</to>
	</rule>
	<outbound-rule>
		<from>/test/rule/abc</from>
		<to>/r</to>
	</outbound-rule>


	<rule>
		<name>测试单个参数url</name>
		<note>
			测试单个参数url
		</note>
		<from>^/rule/([0-9]+)$</from>
		<to>/test/rule_1?id=$1</to>
	</rule>
	<outbound-rule>
		<from>/test/rule_1\?id=([0-9]+)</from>
		<to>/rule/$1</to>
	</outbound-rule>


	<rule>
		<name>测试多个参数url</name>
		<note>
			测试多个参数url
		</note>
		<from>^/rule/([0-9]+)_([a-zA-Z0-9]+)_([0-9]+)_([0-9]+)$</from>
		<to>/test/rule_2?id=$1&name=$2&pageNo=$3&pageSize=$4</to>
	</rule>
	<outbound-rule>
		<from>/test/rule_2\?id=([0-9]+)&name=([a-zA-Z0-9]+)&pageNo=([0-9]+)&pageSize=([0-9]+)</from>
		<to>/rule/$1_$2_$3_$4</to>
	</outbound-rule>


	<rule>
		<name>测试多个参数含有特殊字符参数url</name>
		<note>
			测试多个参数url
		</note>
		<from>^/r/(.*)/(.*)/([0-9]+)_([0-9]+)$</from>
		<to>/test/rule_3?special=$1&zh=$2&pageNo=$3&pageSize=$4</to>
	</rule>
	<outbound-rule>
		<from>/test/rule_3\?special=(.*)&zh=(.*)&pageNo=([0-9]+)&pageSize=([0-9]+)</from>
		<to>/r/$1/$2/$3_$4</to>
	</outbound-rule>


	<rule>
		<from>^/rule/([0-9]+)/([a-zA-Z0-9]+)/([0-9]+)/([0-9]+)$</from>
		<to>/test/rule_2?id=$1&name=$2&pageNo=$3&pageSize=$4</to>
	</rule>
	<outbound-rule>
		<from>/test/rule_2\?id=([0-9]+)&name=([a-zA-Z0-9]+)&pageNo=([0-9]+)&pageSize=([0-9]+)</from>
		<to>/rule/$1/$2/$3/$4</to>
	</outbound-rule>


页面配置

<rapid:override name="content">

	<table border="1">
		<tr>
			<th width="5">ID</th>
			<th width="120" height="40">重写后的URL</th>
			<th width="400">实际URL(鼠标放到下面URL上显示美化过的URL)</th>
			<th width="350">作用</th>
			<th width="500">urlrewrite配置</th>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td>1</td>
			<td height="30"><a href="${ctx }/test/normal">/test/normal</a></td>
			<td><a href="<c:url value="/test/normal"/>">/test/normal</a></td>
			<td>不重写直接过去</td>
			<td>不需要配置</td>
		</tr>
		<tr><td>2</td>
			<td height="30"><a href="${ctx }/t/normal.htm">/t/normal.htm</a></td>
			<td><a href="<c:url value="/test/normal"/>">/test/normal</a></td>
			<td>重写后缀如:.html|.htm|.jsp|.do|.h5</td>
			<td>
				<rule> <br>
						  <from>^/t/normal(.html|.htm|.jsp|.do|.h5)?$</from> <br>
						  <to>/test/normal</to> <br>
				</rule>
		   </td>
		</tr>
		<tr><td>3</td>
			<td height="30"><a href="${ctx }/test/rule">/test/rule</a></td>
			<td><a href="<c:url value="/test/normal"/>">/test/normal</a></td>
			<td>Urlwriter优先于springmvc的控制器,因为他是filter,而springmvc的控制器是servlet.只会到/test/normal所以不会转到Controller对应的/test/rule</td>
			<td>
				<rule> <br>
						  <from>^/test/rule$</from> <br>
						  <to>/test/normal</to> <br>
				</rule>
					<br/>
				<outbound-rule> <br>
						  <from>/test/normal</from> <br>
						  <to>/test/rule</to> <br>
				</outbound-rule>
		   </td>
		</tr>
		<tr><td>4</td>
			<td height="30"><a href="${ctx }/r">/r</a></td>
			<td><a href="<c:url value="/test/rule/abc"/>">/test/rule/abc</a></td>
			<td>重写了资源文件目录</td>
			<td>
				<rule> <br>
						  <from>^/r$</from> <br>
						  <to>/test/rule/abc</to> <br>
				</rule>
				<br/>
				<outbound-rule> <br>
						  <from>/test/rule/abc</from> <br>
						  <to>/r</to> <br>
				</outbound-rule>
		   </td>
		</tr>
		<tr><td>5</td>
			<td height="30"><a href="${ctx }/rule/123456">/rule/123456</a></td>
			<td><a href="<c:url value="/test/rule_1?id=123456"/>">/test/rule_1?id=123456</a></td>
			<td>重写了资源文件目录并且重写 单个 参数</td>
			<td>
				<rule> <br>
						  <from>^/rule/([0-9]+)$</from> <br>
						  <to>/test/rule_1?id=$1</to> <br>
				</rule>
				<br/>
				<outbound-rule> <br>
						  <from>/test/rule_1\?id=([0-9]+)</from> <br>
						  <to>/rule/$1</to> <br>
				</outbound-rule>
		   </td>
		</tr>
		<tr><td>6</td>
			<td height="30"><a href="${ctx }/rule/5_v5zghw_1_20">/rule/5_v5zghw_1_20</a></td>
			<td><a href="<c:url value="/test/rule_2?id=5&name=v5zghw&pageNo=1&pageSize=20"/>">/test/rule_2?id=5&name=v5zghw&pageNo=1&pageSize=20</a></td>
			<td>多级目录加多参数重写  注意:这里的参数不要包含特殊字符 只包含了 数字或者26个字母大小写组成的内容</td>
			<td>
				<rule> <br>
						  <from>^/rule/([0-9]+)_([a-zA-Z0-9]+)_([0-9]+)_([0-9]+)$</from> <br>
						  <to>/test/rule_2?id=$1&name=$2&pageNo=$3&pageSize=$4</to> <br>
				</rule>
				<br/>
				<outbound-rule> <br>
						  <from>/test/rule_2\?id=([0-9]+)&name=([a-zA-Z0-9]+)&pageNo=([0-9]+)&pageSize=([0-9]+)</from> <br>
						  <to>/rule/$1_$2_$3_$4</to> <br>
				</outbound-rule>
			</td>
		</tr>
		
		<tr>
		<td>7</td>
			<td height="30"><a href="${ctx }/r/.,_:/汉字/9_2">/r/.,_:/汉字/9_2</a></td>
			<td><a href="<c:url value="/test/rule_3?special=.,_:&zh=汉字&pageNo=9&pageSize=2"/>">/test/rule_3?special=.,_:&zh=汉字&pageNo=9&pageSize=2</a></td>
			<td>多级目录加多参数重写 包含了特殊字符  注意:特殊字符或中文的可以用 / ,仅字母和数字的可以用 _ 组合</td>
			<td>
				<rule> <br>
						  <from>^/r/(.*)/(.*)/([0-9]+)_([0-9]+)$</from> <br>
						  <to>/test/rule_3?special=$1&zh=$2&pageNo=$3&pageSize=$4</to> <br>
				</rule>
				<br/>
				<outbound-rule> <br>
						  <from>/test/rule_3\?special=(.*)&zh=(.*)&pageNo=([0-9]+)&pageSize=([0-9]+)</from> <br>
						  <to>/r/$1/$2/$3_$4</to> <br>
				</outbound-rule>
			</td>
		</tr>

	</table>
	<a href="${ctx }/rule/1/show/2/10">测试-1</a>
	<c:url value="/test/rule_2?id=5&name=v5zghsdsddsw&pageNo=1&pageSize=20" var="tempUrl">
	</c:url>
	<a href="${tempUrl }">跳转-2</a><br/>
	
	注意事项:1.具有相同返回规则时:不应使用outbound-rule 看1.2.3中实际URL鼠标放上的地址是一样,是不正确的。
		   2.
</rapid:override>

Java代码:

package com.aolai.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestReurlController {

    @RequestMapping("/test/normal")
    public String testNormal(ModelMap model) {
        String realUrl = "/test/normal";
        model.put("realUrl", realUrl);
        System.out.println(realUrl);
        return "test/index";
    }

    @RequestMapping("/test/rule")
    public String testRule(ModelMap model) {
        String realUrl = "/test/rule";
        model.put("realUrl", realUrl);
        System.out.println(realUrl);
        return "test/index";
    }

    @RequestMapping("/test/rule/abc")
    public String testRuleAbc(ModelMap model) {
        String realUrl = "/test/rule/abc";
        model.put("realUrl", realUrl);
        System.out.println(realUrl);
        return "test/index";
    }

    @RequestMapping("/test/rule_1")
    public String testRule1(String id, ModelMap model) {
        String realUrl = "/test/rule_1?id=" + id;
        model.put("realUrl", realUrl);
        System.out.println(realUrl);
        return "test/index";
    }

    @RequestMapping("/test/rule_2")
    public String testRule2(String id, String name, Integer pageNo, Integer pageSize, ModelMap model) {
        String realUrl = "/test/rule_2?id=" + id + "&name=" + name + "&pageNo=" + pageNo + "&pageSize=" + pageSize;
        model.put("realUrl", realUrl);
        System.out.println(realUrl);
        return "test/index";
    }
    
    @RequestMapping("/test/rule_3")
    public String testRule3(String special, String zh, Integer pageNo, Integer pageSize, ModelMap model) {
        String realUrl = "/test/rule_3?special=" +special + "&zh=" + zh + "&pageNo=" + pageNo + "&pageSize=" + pageSize;
        model.put("realUrl", realUrl);
        System.out.println(realUrl);
        return "test/index";
    }

    @RequestMapping("/test/out_bound_rule")
    public String testOutBoundRule(ModelMap model) {
        System.out.println("/test/out_bound_rule");
        return "test/index";
    }

    @RequestMapping("/test/out_bound_rule1")
    public String testOutBoundRule1(String id, ModelMap model) {
        System.out.println("/test/out_bound_rule1?id=" + id);
        return "test/index";
    }

    @RequestMapping("/test/out_bound_rule2")
    public String testOutBoundRule2(String id, String name, Integer pageNo, Integer pageSize, ModelMap model) {
        System.out.println("/test/out_bound_rule2?id=" + id + "&name=" + name + "&pageNo=" + pageNo + "&pageSize=" + pageSize);
        return "test/index";
    }
    @RequestMapping("/rule2")
    public String test2(String id, String name, Integer pageNo, Integer pageSize, ModelMap model) {
        System.out.println("/test/out_bound_rule2?id=" + id + "&name=" + name + "&pageNo=" + pageNo + "&pageSize=" + pageSize);
        return "test/index";
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值