大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp、*.php页面。但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态——就是将*.jsp、*.php这种动态URL伪装成静态的HTML页面。

预备知识,掌握Filter的使用。我就假设你们都知道Filter的使用方法了。

方法非常简单:通过Filter拦截所有发向*.html请求,然后按某种规则将请求forward到实际的*.jsp页面即可。下面要使用的URL Rewrite开源项目就是为这种思路提供了实现。

如何利用URL Rewrite实现网站伪静态:

1、登录http://code.google.com/p/urlrewritefilter/downloads/list站点下载Url Rewrite的最新版本。我下的是urlrewritefilter-4.0.3.jar

2、将下载得到的urlrewritefilter-4.0.3.jar放在你构建的项目WEB-INF下的lib文件夹中

3、在web.xml文件中配置启用URL Rewrite Filter,在web.xml文件中增加如下配置片段(该片段放在所有的servlet标签的以前)

UrlRewriteFilter

org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

UrlRewriteFilter

/*

REQUEST

FORWARD

上面的配置片段指定使用URL Rewrite Filter 拦截所有的用户请求。

4、在你项目的WEB-INF路径下增加urlrewrite.xml文件,该文件定义了伪静态映射规则,这份伪静态规则是基于正则表达式的。

文件内容如下:

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

"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">

/userinf-(\w*).html

%{context-path}/userinf.jsp?username=$1

上面的规则文件中只定义了一个简单的规则:所有发向/user-(\w*).html的请求都将被redirect到userinf.jsp页面,并将(\w*)正则表达式所匹配的内容作为username参数值。根据这个伪静态规则,我们为这个应用提供一个userinf.jsp页面(该页面只是我们的一个测试页面,用户可以自己定义自己的页面)。代码如下:

String user = request.getParameter("username");

%>

的个人信息

out.println("现在时间是: "+new java.util.Date() +"
");

out.println("用户名: "+user);

%>

一切准备就绪后,重启tomcat,然后在浏览器地址栏输入userinf-xxxx.html的请求地址,例如:我构建的项目名称叫做webDemo那么我就可以输入:http://localhost:8080/webDemo/userinf-test.html,就可以得到如下结果:

java web 伪静态_【Java Web】使用URLRewrite实现网站伪静态相关推荐

  1. java web 项目伪静态_【Java Web】使用URLRewrite实现网站伪静态

    大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp.*.php页面.但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态--就是将 ...

  2. java web 速成_渐进式Web应用程序:速成课程

    java web 速成 Progressive Web Apps (PWAs) try to overlap the worlds of the mobile web apps and native ...

  3. java注册头像_实现web版用户注册(可以上传头像)

    界面: 点击注册按钮后: 代码: aspx中 .tb { border:1px double green; margin:0 auto; } #touxiang { width: 269px; } # ...

  4. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  5. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  6. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  7. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  8. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  9. java斗地主发牌_[Java源码]扑克牌——斗地主发牌实现

    --------------------------------------- --------------------------------------- ----------一个扑克牌核心和简单 ...

最新文章

  1. java 集合 接口_Java集合之Collection接口
  2. [bzoj1042][HAOI2008]硬币购物
  3. 用云函数快速实现图片爬虫
  4. 好记性不如烂博客之 Quartz InterruptableJob 可拦截任务
  5. js条件语句,用if...else if....else方程ax2+bx+c=0一元二次方程。求根
  6. sql SUBSTR
  7. C++面试宝典2011版
  8. 【搜索】$P1092$虫食算
  9. 中油即时通信电脑版_市场营销之即时通讯营销
  10. 推荐您使用 Markdown 来编辑文章
  11. html文档不是本地电脑,电脑浏览器打不开本地html文件
  12. Ubuntu 20.04 安装CUDA11.1 和cudnn 8.0.5
  13. Get value from agent failed:cannot connect to [[192.168.121.128]:10050]:[111Connection refused]]
  14. c串口一直读到缓存数据_STM32CubeMX之串口不定长数据接收(接收中断+空闲中断)...
  15. 潘多拉PandoraBox官网下载地址
  16. xp计算机找不到音量调节,关于电脑声音小喇叭图标XP中不见没有声音的恢复教程...
  17. 宏基品牌机 win7 系统激活
  18. 论文总结之任务型对话NLU
  19. html手机响应式布局,手机网页设计中的响应式布局
  20. 如何才能成为一个程序员

热门文章

  1. 快速分类–三向和双枢轴
  2. Java并发执行器的懒惰开发人员简介
  3. Java对象内存图三
  4. java iterator 嵌套_Java中的集合嵌套
  5. socket模拟http的登陆_Python网络爬虫之模拟登陆 !
  6. python读取和存入json文件
  7. 百分比单位始终根据父元素相应值来计算_CSS Viewport 单位,很多人还不知道使用它来快速布局!...
  8. c语言文件的读写通讯录,学C三个月了,学了文件,用C语言写了个通讯录程序
  9. 用python画大白_[Python][可视化]matplotlib基础入门
  10. python选项卡中文详细说明_pycharm窗口选项卡管理