`

URLRewriter c url标签

    博客分类:
  • java
阅读更多

1.urlRewriter  用UrlRewriteWrappedResponse 重写了Response的encodeURL方法。

 

2.帮助文档中说明中,jsp 可以通过

    <%

    response.endoceURL("/hello.do?param=1");

 

   %>

或者

 <c:url value="/hello.do?param=1">

说明response会编 url

来由urlRewriter来自动转成你在<outbound-rule>标签中想要的url

 

在standrad中找到org.apache.taglibs.standard.tag.common.core.UrlSupport.class

用jadx  反编译出来的某段源代码如下:

 

   HttpServletResponse response = (HttpServletResponse)pageContext.getResponse();
    result = response.encodeURL(result);

也是response.encodeURL();

 

结论

说明:实现自定义url标签的时候,可以像c:url一样通过调用 response.encodeURL() 来实现urlRewriter的 页面url转换

      

 

       或者自己实现urlRewriter 通过extends HttpServletResponseWrapper

   实现它的encodeurl方法 来重写页面上的url

 

 

简单模拟下:

response
package com.isvi.web.filter;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class URLReWriterResponse extends HttpServletResponseWrapper {

	public URLReWriterResponse(HttpServletResponse response) {
		super(response);
		
	}
	@Override
	public String encodeUrl(String url) {
		System.out.println("encode url");
		return "myURLRewirter 页面 href 转换";
	}
	@Override
	public String encodeURL(String url) {
		// TODO Auto-generated method stub
		System.out.println("encode url 2");
		return "myURLRewirter 页面 href 转换2";
	}

}

 

filter
package com.isvi.web.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyURLRewriter extends FilterWrapper {

	@Override
	public void doFilter(HttpServletRequest arg0, HttpServletResponse arg1,
			FilterChain chain) throws IOException, ServletException {
			System.out.println("doFilter");
			URLReWriterResponse ur=new URLReWriterResponse(arg1);
			chain.doFilter(arg0, ur);
		

	}

}

  

 测试jsp

<c:url value="测试"></c:url>
被改写成下边
myURLRewirter 页面 href 转换2

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics