锁定老帖子 主题:urlrewriter使用时请注意
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-16
<dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>3.1.0</version> </dependency> 在WEB.XML中进行过滤器的配置 <filter> <filter-name>rewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>confPath</param-name> <param-value>/WEB-INF/urlrewrite.xml</param-value> </init-param> </filter> <filter-mapping> <filter-name>rewriteFilter</filter-name> <url-pattern>*.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> <filter-mapping> <filter-name>rewriteFilter</filter-name> <url-pattern>*.html</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 在WEB-INF下新建一个urlrewrite.xml文件[color=red][/color] <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd"> <urlrewrite> <rule> <from>/index.html$</from> <to>/index.jsp</to> </rule> <outbound-rule> <from>/index.jsp</from> <to>/index.html</to> </outbound-rule> </urlrewrite> 这个主要是测试用的,现在在根目录下新建一个index.jsp页面。代码如下 <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>Insert title here</title> </head> <body> <a href="index.jsp">无标签的URL输出首页地址</a> <br/> <br/> <br/> <br/> <a href="<c:url value='/index.jsp' />">有标签的URL输出首页地址</a> </body> </html> 启动容器,输入项目路径 http://localhost:8080/index.html,输出如下HTML代码 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>Insert title here</title> </head> <body> <a href="index.jsp">无标签的URL输出首页地址</a> <br/> <br/> <br/> <br/> <a href="/index.html;jsessionid=62408E24FEA0F75AFB9B0CACA9314006">有标签的URL输出首页地址</a> </body> </html> 综上所述,urlrewriter如果要重写成功,要把需要重写的URL用标签输出,直接输出URL是不会重写URL的! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-11-17
说了好多,其实LZ就是想问问不用 标签怎么输出 urlrewrite里面 outbound-rule配的对应连接是吗?
<%= response.encodeURL("/index.jsp") %> |
|
返回顶楼 | |
发表时间:2010-11-17
我赞成不用。因为静态化需求时使用html来进行请求,那么意味着所有的链接应该都可以由html来调用。那么为什么不直接使用html后缀,逻辑性更强,还避免了转出时进行转换。
|
|
返回顶楼 | |
发表时间:2010-11-17
蔡华江 写道 我赞成不用。因为静态化需求时使用html来进行请求,那么意味着所有的链接应该都可以由html来调用。那么为什么不直接使用html后缀,逻辑性更强,还避免了转出时进行转换。
如果有天产品不想用html,而想用htm或者shtml,那是不是所有的页面都要进行修改? |
|
返回顶楼 | |
发表时间:2010-11-18
这个插件用着还可以啦!
效果基本都能达到! jstl <%= response.encodeURL("/index.jsp") %> 都可以! 这个只是视觉效果! 并且附加一定的损耗! 不建议全部使用! 在适当的地方用用就OK! |
|
返回顶楼 | |
发表时间:2010-11-18
zhb870815 写道 蔡华江 写道 我赞成不用。因为静态化需求时使用html来进行请求,那么意味着所有的链接应该都可以由html来调用。那么为什么不直接使用html后缀,逻辑性更强,还避免了转出时进行转换。
如果有天产品不想用html,而想用htm或者shtml,那是不是所有的页面都要进行修改? 如果你有这个需求。。。urlwriter当然可以。。。 虽然我个人认为这个有点。。 当然并不意味着不用就不能实现,web总是基于请求的,如果你有这个需求,在转入时候将html转为htm/shtml又何仿。 要知道,在页面中使用html,可以让代码清淅,且方便跳转,在IDE下支持就更好了。 <a href="b.html"/>你一看就知道到了那里, 如果加上c:out,总是多隔了一层。 同样,如果命名真的很规范你也可以无视。。 |
|
返回顶楼 | |
发表时间:2010-11-18
jstl标签可以解析到urlrewriter的啊?那不错,你的方法我很赞同啊,如果直接写index.html虽然简单,但是确实不灵活,如果一般不会轻易改变为htm shtml的话,直接写html也是不错的选择
|
|
返回顶楼 | |
发表时间:2010-11-18
zhb870815 写道 蔡华江 写道 我赞成不用。因为静态化需求时使用html来进行请求,那么意味着所有的链接应该都可以由html来调用。那么为什么不直接使用html后缀,逻辑性更强,还避免了转出时进行转换。
如果有天产品不想用html,而想用htm或者shtml,那是不是所有的页面都要进行修改? 其实这个只是欺骗用户,让他不知道你是用什么语言开发的。而且还影响效率建议还是用Apache web 服务器,进行配置 |
|
返回顶楼 | |
发表时间:2010-11-18
楼主,urlrewriter和JSTL标签中的c:url有什么关系吗? urlrewriter主要是URL规则的一种对应转换;而JSTL标签中的c:url只是对URL中特殊字符,比如:中文,进行了URL编码,还有对不支持cookie的浏览器,jsessionid附加到了URL的后面. 所以,在urlrewriter中使用不使用c:url完全是功能的需要.比如:你例子中的首页,就完全没有必要使用 |
|
返回顶楼 | |
发表时间:2010-11-18
个人觉得这个与真实的静态化配合使用比较好,如果单为伪静态而耗损这样的性能不值得,当然部分页面用一下也是可以的。另外,在用urlrewrite的时候是要经过服务器解析的(就是web.xml配置的经过urlrewrite过滤器),所以直接写自然不行了。
|
|
返回顶楼 | |