博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java编程之伪静态(urlrewrite)
阅读量:4091 次
发布时间:2019-05-25

本文共 2068 字,大约阅读时间需要 6 分钟。

(Notice:欢迎交流和沟通,Wx:IT_Ezra,QQ 654303408。仅个人观点和个人理解有问题讨论也可联系我。)

对于伪静态,解释一下就是假的静态,说的官方点就是“地址重写,用户得到的全部地址都是经过处理后的URL地址”。

那么为什么要伪静态呢?

答:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多,另外还可以美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL,更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息

应用场景是什么?

最直接的就是SEO优化(上面“为什么要伪静态呢?”已提到)

效果图

效果图

后台代码后台代码

效果图

可以看到效果图,其实我们页面是没有15.html这个真实存在的html的,但是可以通过伪静态的方式,实现这种页面的访问。其本质有一种url重写和重定向的请求(个人理解)。

那么接下来给大家手把手教学实现:

1.导入依赖。都9012年了 大家都会用maven了吧。

org.tuckey
urlrewritefilter
4.0.4

2.配置web.xml

UrlRewriteFilter
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
UrlRewriteFilter
/*
REQUEST
FORWARD

3.新建urlrewrite.xml文件。

其中路径根据controller的请求mapping的value,自行理解。

^/news/news.html$
/news/news.jsp
^/news/([0-9]+).html$
/news/news/?Id=$1
^/news/news/\?Id=([0-9]+)$
/news/$1.html

在这里我给大家介绍一下请求的顺序。首先我们的url为http://localhost:8080/official/news/?id=15.html。先进入 outbound-rule里面,进行from,根据form的正则匹配规则,那么news/?id=15.html就被获取到。$1表示正则表达式里面 []的第一个参数,也就是[0-9]+, (ps:不懂正则匹配的可以自行学习),然后获取到这个之后进行“重写”,也就是to规则,变成了http://localhost:8080/official/news/15.html。这个规则就是图1里面的显示地址,然后再通过这个地址进行rule里面。根据from规则。匹配到,15.html,然后进行“重写”,变成http://localhost:8080/official/news/15。这样的一个地址实际上也就是一个请求,也是我们熟悉的springmvc的请求,然后就可以走后台服务器,进行数据交互,最终返给前段。

同样,还有一个重点就是,outbound-rule并不是必要的。如果你的请求格式一开始就是http://localhost:8080/official/news/15.html这种类型,那么就可以直接通过rule规则了,那么outbound-rule规则的意义在什么地方呢?那就是,他可以带参数,甚至多参数。通过&连接。举个例子http://localhost:8080/servlet/detail?magid=520&categoryId=205。那么outbound-rule就是

/servlet/detail\?magid=([0-9]+)&categoryId=([0-9]+)
/servlet/detail/$1_$2.html

怎么样,用java实现伪静态很简单吧。快去操作吧。

参考博客 https://blog.csdn.net/leroy008/article/details/8534199

参考博客 https://www.cnblogs.com/cat520/p/9579134.html

你可能感兴趣的文章
WPF中PATH使用AI导出SVG的方法
查看>>
QT打开项目提示no valid settings file could be found
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
fastcgi_param 详解
查看>>
搞定Java面试中的数据结构问题
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
Winform多线程
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>
《PostgreSQL技术内幕:查询优化深度探索》养成记
查看>>
剑指_复杂链表的复制
查看>>
FTP 常见问题
查看>>
shell 快捷键
查看>>
MODULE_DEVICE_TABLE的理解
查看>>