URLWriter

urlwriter之配置使用 NULL 博文链接:https://lbovinl.iteye.com/blog/2384584 立即下载

2010-06-25

java url重写

文章分类:Java编程

这几天蛋疼.看看别人url重写是怎么搞的..

1.解释下什么事url重写,以及它的优缺点:

 

URL重写,其实就是把带一大堆参数的url,变成一个看上去很规矩的url。

例:/viewthread.jsp?id=1234 

重写后,可以用/viewthread/1234.html

 

使用Url重写能给你网站带来哪些好处。

    第一:有利于搜索引擎的抓取,因为现在大部分的搜索引擎对动态页面的抓取还比较弱,它们更喜欢抓取一些静态的页面。而我们现在的页面大部分的数据都是动态的显示的。这就需要我们把动态页面变成静态的页面,有利于搜索引擎的抓取。

   第二:让用户更容易理解,很少有用户去关心你网站的页面的地址,但对一般的大中型网站增强可读性还是必须的。这样会让你的网站更加完美。

  第三:隐藏技术的实现,我们可以通过Url重写可以实现技术的隐藏。不至于暴露你所采用的技术,给一些想攻击你网站的爱好者提供方便。

  第四:可以很方便的重用,提高网站的移植性。如果我们后台方法改动的话,可以保证前台的页面部分不用改。这样就提高了网站的移植性。

   它虽然有这么多的优点,但是也有一点缺点的,因为它是通过过滤器原理来实现的,就以为着又多了一道访问,会多少影响点访问速度的,这个可以忽略不计

   首先让我们了解它的工作原理,说白了它就是一个简单的过滤器(Filter),将请求的url 转换成我们想要的url,再对它进行请求的过程。

url重写有好几种做法:

一、自定义过滤器示例:

 

1.配置过滤器一般在web.xml中

<filter>

    <filter-name>urlFilter</filter-name>

    <filter-class>com.url.filter.URLFilter</filter-class>

</filter>

 

<filter-mapping>

    <filter-name>urlFilter</filter-name>

    <url-pattern>*.shtml</url-pattern>

</filter-mapping>

2.新建解析规则配置文件 urlrewrite.xml

 

<?xml version="1.0" encoding="utf-8"?>

<urlrewrite>

  <rule>

     <from>^/(\w+)_(\w+)_(\d+)\.shtml$</from>  匹配表达式-正则表达式

     <to type="forward">/$1.do?$2=$3</to>  解析后URL

  </rule>

</urlrewrite>

3.过滤器处理类 URLFilter.java

public class URLFilter implements Filter {

    public void doFilter(ServletRequest servletRequest, ServletResponse    

                              servletResponse, FilterChain filterChain) throws 

                                        IOException,ServletException

    {

       HttpServletRequest request = (HttpServletRequest) servletRequest;

       HttpServletResponse response = (HttpServletResponse) servletResponse;

       String realPath

                    =request.getSession().getServletContext().getRealPath("/");

 

       String fileName = realPath + "WEB-INF\\urlrewrite.xml";

       String uri = request.getServletPath();

       String rewriteUrl = getRewriteUrl(uri, fileName);

       if (null != rewriteUrl) {

           request.getRequestDispatcher(rewriteUrl).forward(request, response);

           return;

       }

       filterChain.doFilter(servletRequest, servletResponse);

 

    }

 

private String getRewriteUrl(String url, String fileName) {

       DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();

       try {

           DocumentBuilder builder = f.newDocumentBuilder();

           Document document = builder.parse(fileName);

           NodeList list = document.getElementsByTagName_r("rule");

           for (int i = 0; i < list.getLength(); i++) {

              Element elemnt = (Element) list.item(i);

              NodeList list2 = elemnt.getElementsByTagName_r("from");

              Element element = (Element) list2.item(0);

              String formValue = element.getFirstChild().getNodeValue();

              NodeList list3 = elemnt.getElementsByTagName_r("to");

              Element element2 = (Element) list3.item(0);

              String type = element2.getAttribute("type");

              String toValue = element2.getFirstChild().getNodeValue();

              String rewriteUrl = url.replaceAll(formValue, toValue);

              if (url != null && !"".equals(url.trim()) &&

                                                    !url.equals(rewriteUrl)) {

 

                  return rewriteUrl;

 

              }

 

           }

 

       } catch (Exception ex) {

 

           ex.printStackTrace();

 

       }

 

       return null;

 

    }

 

}

 

二、 Tomcat的过滤器组件

1:下载urlrewrite-2.6.0.现在最新版本是3.1 的。

  http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip

  http://urlrewritefilter.googlecode.com/files/urlrewritefilter-3.1.0.zip

  把 urlrewrite-2.6.0.jar拷到classpath下。

2:在WEB-INF目录下建一个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>^/(\w+)_(\w+)_(\d+)\.shtml$</from>

    <to type="forward">/$1.do?$2=$3&amp;pageSize=15</to>

</rule>

</urlrewrite>

解释:

<from></from>写上你自己定义的访问地址

<to type="forward></to>就是实际的访问地址。

比如我们实际的访问地址是:

/URLRewriterDemo/ uRLTestAction.do?pageNumber=123

而我们想把它重写:

/URLRewriterDemo/uRLTestAction_pageNumber_123.shtml

这样看起来比我们实际的要好看的多。我们就应该这样的写

<rule>

    <from>^/(\w+)_(\w+)_(\d+)\.shtml$</from>

    <to type="forward">/$1.do?$2=$3&amp;pageSize=15</to>

</rule>

注意:常用的&要用 &amp; 来表示。$1,$2代表与你配置正规表达式>/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward".

 

3:在web.xml中初始化。加上下面的代码:

    <filter>

       <filter-name>UrlRewriteFilter</filter-name>

       <filter-class>

           org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

       </filter-class>

    </filter>

    <filter-mapping>

       <filter-name>UrlRewriteFilter</filter-name>

        <url-pattern>*.shtml</url-pattern>

    </filter-mapping>

三、使用系统的404错误进行

当请求时肯定是找不见相关页面了,那就跳到Error.jsp 进行相应的处理

1.加入错误跳转配置 web.xml

<error-page>

       <error-code>404</error-code>

       <location>/error.jsp</location>

</error-page>

2.写错误页面 Error.jsp

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>

<% 

    response.setStatus(HttpServletResponse.SC_OK); 

    String key = (String)  

    request.getAttribute("javax.servlet.forward.servlet_path"); 

    String reg = "^/(\\w+)_(\\w+)_(\\d+).shtml$";

    String rewriteUrl = key.replaceAll(reg,"/$1.do?$2=$3&amp;pageSize=15");

    if(key != null || !key.equals(rewriteUrl)){

       request.getRequestDispatcher(rewriteUrl).forward(request,response);

    }

    else{

       out.print("对不起,您请求的页面没有找到! ");

    }

%> 

urlwriter使用教程 立即下载

相关推荐

重写连接地址urlwriter

重写连接地址重写连接地址重写连接地址重写连接地址重写连接地址重写连接地址重写连接地址

urlWrite

使用urlWrite功能很简单,只需三步 第一步引入urlwriter.jar包,下载地址:http://download.youkuaiyun.com/source/3149335 第二步,修改web.xml增加urlwriter过滤器,具体配置如下: UrlRewriteFilter org...

Prince20080503的专栏 1149

UrlWriter实现url重写的一个实例

UrlWriter实现url重写的一个实例,刚弄好的,发上来,也给自己挣点分

Urlrewrite(url地址重写)和UrlRewriteFilter

Urlrewrite(url地址重写)和UrlRewriteFilter Urlrewrite: urlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址 UrlRewrite的含义: 优点 1、提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回5

oatmeal2015的博客 988

UrlWriter 测试用例

UrlWriter 的简单的小功能实现,可运行,适合新学者理解

Marin说PCB之LPDDR5的布线注意事项--01

以上就是本期所有内容了,有些是通用的LPDDR5的设计准则,有的是针对单板的设计规则,严格意义说是没有哪一种规则是完全适用的LPDDR5的 通用规则的,不同的单板可能板厚,板材,层数,SOC以及DDR的型号都是不同的,一般的做法就是严格按照SOC手册上的LPDDR5的要求加上仿真同事给的建议修改优化就好了,我们下期文章不见不散。我们知道想要做好一个LPDDR颗粒,需要考虑的是因素有很多例如,电源完整性,信号完整性,层叠的设计,布局的摆放,布线的合理规划,去耦电容的摆放等等。

weixin_45223454的博客 3163

URLWrite

添加一个global.asax文件新增如下代码 protected void Application_BeginRequest(object sender, EventArgs e) { string oldUrl = HttpContext.Current.Request.RawUrl; UrlRewrite(oldUrl, @"^(.*)/In...

deluo7944的博客 288

ANSYS APDL 后处理:用*GET和ETABLE命令把节点/单元应力结果导出到TXT文件(附完整命令流)

本文详细介绍了在ANSYS APDL中使用*GET和ETABLE命令导出节点和单元应力数据到TXT文件的完整方案。通过节点解和单元解的核心逻辑分析,提供了从基础到进阶的数据导出方法,包括节点应力、单元应力数据的提取与格式化输出,以及高级技巧如选择性导出与数据过滤。帮助工程师高效完成有限元分析后处理工作。

weixin_26805597的博客 631

struts结合urlwriter的使用

struts结合  urlwriter的好处         1.满足搜索引擎的要求。         2.隐藏技术实现,提高网站的移植性。 实现步骤        1 将struts所用用到的jar包 和urlwriter的jar包导入到WEB-INF的lib目录下        2 在WEB-INF下的web.xml下  加入如下配置

weijinbo5741的专栏 1367

小白学电路之cadance搭建buffer电路

Buffer(缓冲器)是一种放大器或驱动电路,主要用于隔离输入和输出,以防止负载对前级电路造成干扰或影响。本文作者在电路方面是小白水平,目前正在学习,有不足之处欢迎指正。3.创建新的cellview,对此buffer进行仿真验证。2.创建buffer的symbol。电路中的V2的详细参数。

weixin_58051657的博客 1988

OpenCV机械臂手眼标定

这篇文章总结了手眼标定的原理,利用OpenCV自带的函数套用参数即可完成眼在手上和眼在手外两种标定。

Q先森的博客 6590

通过Filter实现UrlWriter

每个网页或请求都是一个url地址,一般,这个地址可能是.do .action .php之类的并加上'?'号、'&'号查询串等构成的一个长长的的url。不利于阅读,同时将实际的地址暴露给用户,容易遭到攻击。 一般的url----------------------------------------------------------较好的 url http://www.xxx.net/us...

Code Of Life 191

Nacos2.X 源码分析:为订阅方推送、服务健康检查、集群数据同步、grpc客户端服务端初始化

而Nacos2.X 从http请求改为了grpc请求的方式了,在健康检查这方面就是基于长连接来实现的。客户端发送心跳是在构建grpc连接时会有一个线程每隔5s发送一次,NacosClient端发送心跳的代码在。我们能大致猜测:当一个服务的实例进行了更新,那么是不是应该推送给所有订阅了该服务的客户端?当我订阅了某个服务,是不是应该将该服务信息推送给我?在服务实例检查检查流程中,如果出现了要注销的服务实例就会发布。在服务发现时,进行订阅服务的最后会发布一个。服务注册与服务订阅流程中发布的事件最终会被。

qq_44027353的博客 1594

struts与urlwriter实现javaweb伪静态或者url隐藏

开题:相信玩过apache php的朋友都知道php怎么实现伪静态页面的访问,那么问题来了,JAVAWEB应用怎么实现相同的功能呢?什么是伪静态?举个例子,当你访问http://www.yxweb.cc/demo/5.html 这个地址的时候,如果服务端使用的伪静态,你访问的页面就不一定是demo目录下的5.html文件了哦。它可能访问的实际地址是http://www.yxweb.cc/demo!

曾庆国的博客 4479

AD620仪表放大器模块实战:从双电源切换到单电源供电的完整指南(附原理图)

本文深入探讨了AD620仪表放大器模块从双电源切换到单电源供电的常见陷阱与正确方案。通过解析AD620的内部架构与电气特性,指出其“天生”依赖双电源,简单的跳线改装会导致芯片损坏或失效。文章提供了基于AD623芯片的真正单电源替代方案,并附有原理图与实战波形对比,为便携式设备设计提供了完整指南。

weixin_29231027的博客 367

3D深度饼图的QT实现

首先,我们需要创建一个QT项目并创建一个窗口,用于显示我们的饼图。在QT Creator中,选择创建一个新的QT Widgets应用程序项目,并创建一个新的窗口类。在本文中,我将介绍如何使用QT实现一个3D深度饼图(Pie 3D)的可视化效果。在构造函数中,我们将创建一个饼图(QChartView)并设置饼图的数据。这是一个简单的示例,您可以根据需要自定义和扩展代码来创建更复杂的饼图。现在,我们已经完成了3D深度饼图的QT实现。您将看到一个具有相应数据的3D深度饼图显示在窗口中。3D深度饼图的QT实现。

CodeJolt的博客 277

asp.net+IIS6+URLWriter配置

本人的程序为VS2008下采用.net 3.5的框架开发的,参考:http://www.cnblogs.com/NetSos/archive/2010/04/17/1714470.html  在IIS/你的站点/属性/主目录/配置/映谢 加入一个扩展名为“.*”配置跟 aspx页面相同的扩展名项。注意“确认文件是否存在”不要勾选,否则会出现找不到文件。或者虚拟目录下右键、属性...

eNet 2170

自顶向下与自底向上编程思想的对比

一、核心定义与本质差异自顶向下编程思想如同绘制一幅完整的地图,从整体轮廓逐步细化到局部细节。其本质是从系统的整体目标出发,通过逐层分解将复杂问题简化为可实现的子问题,强调先定义 “做什么”,再考虑 “如何做”。自底向上编程思想则类似于搭建积木,从基础组件开始逐步构建复杂系统。其本质是从现有资源和基础功能出发,通过组合和扩展简单组件来实现复杂功能,强调先解决 “如何做” 的细节,再整合为 “做什么” 的整体。二、设计起点与逻辑流程对比设计起点:以系统的整体目标和业务需求为起点。例如设计一个电商平台,首先明确

二进制君 834

url重写 试用后总结

1:下载UrlWriter 2:安装下载的UrlWriter 3

hyhyct的专栏 634

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

asp.net对于URL重写,支持无后缀url请求

 通过简单对iis配置,再利用urlwriter就可以完美解决url重写的问题可以将http://abc.domain.com/blog转向到http://www.domain.com/xxx.aspx?username=abc当然首先要将主机的泛域名支持打开。做法是A。打开IIS,右击站点(虚拟目录)-》属性-》主目录-》配置-》插入-》C:/WINDOWS/Microsoft.NET/Fr

1896

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java filter 域名_Java 之Filter 应用实例--UrlWriterFilter 仿urlrewrite 用来支持二级域名重写...

一、背景之前的文章介绍了用Java 做301重定向,即使用Url Rewrite 进行URL 重写来实现网站的伪静态。现在产品这边又多了一个需求,需要网站支持二级域名跳转,比如访问abc.baidu.com 能够跳转到 www.baidu.com/abc。这个功能其实和301 重定向原理是一样的,只不过我们需要自己自定义一个重定向规则。二、代码实现UrlWriterFactory 工厂类publi...

weixin_36070745的博客 262

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

解决 ”To prevent a memory leak, the JDBC Driver has been forcibly unregistered“

         在开发过程中,添加完UrlWriter之后,部署到了服务器环境,发生了如下错误      To prevent a memory leak, the JDBC Driver has been forcibly unregistered.         原来Tomcat6会起一个线程检测是否有内存泄露 写道 Ignore those warnings. Tom...

Program_newbie的博客 983

偶需要学习的东东

CacheURLWriterFlexORMJQueryWebTrends

猫猫的专栏 263

IIS短文件名漏洞修复

IIS短文件名漏洞解决办法

qq_24851835的博客 1786

三、生成静态页

1、使用freemarker当用户访问指定的servlet时,servlet加载指定的模板文件。并从数据库,或其他指定的地方获取目标数据,然后,将数据填充到模板文件中。将填充好的文件保存成静态页面。将用户的请求重定向到保存好的静态文件。新建servlet文件FreeMarkerServle.javapublic class FreeMarkerServlet extends ...

weixin_33991727的博客 82
上一篇: 网页QQ在线离线显示
下一篇: 豆丁网文库下载器,版本:201…
jarry.liu
博客等级 码龄16年 36粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jarry.liu

如果对您有帮助,鼓励下博主吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值