java编程之伪静态(urlrewrite)

article/2025/9/16 23:19:52

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

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

那么为什么要伪静态呢?

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

应用场景是什么?

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

效果图

效果图

后台代码后台代码

效果图

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

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

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

<!-- 伪静态url -->
<dependency><groupId>org.tuckey</groupId><artifactId>urlrewritefilter</artifactId><version>4.0.4</version>
</dependency>

2.配置web.xml

<!--伪静态url重写-->
<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>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher>
</filter-mapping>

3.新建urlrewrite.xml文件。

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

<urlrewrite>
<rule><from>^/news/news.html$</from><to>/news/news.jsp</to>
</rule>
<rule><from>^/news/([0-9]+).html$</from><to>/news/news/?Id=$1</to>
</rule>
<outbound-rule><from>^/news/news/\?Id=([0-9]+)$</from><to>/news/$1.html</to>
</outbound-rule>
</urlrewrite>

在这里我给大家介绍一下请求的顺序。首先我们的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就是

<outbound-rule><from>/servlet/detail\?magid=([0-9]+)&amp;categoryId=([0-9]+)</from><to>/servlet/detail/$1_$2.html</to></outbound-rule>

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

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

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


http://chatgpt.dhexx.cn/article/0bdrYDK3.shtml

相关文章

Web服务器群集——URL地址重写(Rewrite)

URL地址重写&#xff08;Rewrite&#xff09; 一、什么是URL地址重写 &#xff08;Rewrite &#xff09;&#xff1f;二、Rewrite 相关指令三、Rewrite flag四、Rewrite匹配参考示例4.1 Rewrite 案例一4.2 Rewrite 案例二4.3 Rewrite 案例三4.4 Rewrite 案例四4.5 Rewrite 案例…

UKSM KSM在Android上的表现

作为一个系统管理程序&#xff08;hypervisor&#xff09;&#xff0c;Linux 有几个创新&#xff0c;2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通过合并内存页面来增加并发虚拟机的数量。Linux UKSM 是国人自主研发的一个 Linux 内核相…

针对低端机KSM的优化

&#xfeff;&#xfeff; 简介&#xff1a; KSM的基本概念和思想可参考如下的分析 http://blog.csdn.net/summer_liuwei/article/details/6013255 http://blog.csdn.net/haitaoliang/article/details/25003395 代码分析 一&#xff0c; 编译设置&#xff0c;初始化 1. kernel-…

Linux KSM共享内存

简介&#xff1a;作为一个系统管理程序&#xff08;hypervisor&#xff09;&#xff0c;Linux 有几个创新&#xff0c;2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通过合并内存页面来增加并发虚拟机的数量。本文探索 KSM 背后的理念&am…

Linux KSM

转载&#xff1a;http://www.cnblogs.com/zhangzhang/archive/2012/05/23/2514336.html 简介&#xff1a;作为一个系统管理程序&#xff08;hypervisor&#xff09;&#xff0c;Linux 有几个创新&#xff0c;2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许…

KSM应用实践

KSM应用实践 原创 lyonger 网易游戏运维平台 2019-08-17 lyonger 18年加入网易&#xff0c;先后负责过多个游戏产品的运维工作&#xff0c;多年运维生涯。负责小游戏CI/CD、事件处理平台开发、游戏Nomad运维模式探索、gitlab平台维护等工作。主要关注Linux性能优化、DevOps、云…

linux ksm,内存页面共享-KSM

导读 本文适合有基本Linux内存管理概念的新手阅读&#xff0c;且本文旨在从工作流程和设计思想上介绍KSM&#xff0c;在涉及到源代码的地方&#xff0c;进行了部分删减&#xff0c;如果想详细了解KSM&#xff0c;推荐阅读源代码及源代码中的注释。 作者也是初次接触Linux内核源…

Linux内存管理 之 KSM功能介绍

目录 前言1. 概述1.1 使用 madvise 控制 KSM1.1 KSM 守护进程 sysfs 接口 2.KSM技术应用场景3. KSM技术实践3.1 查看KSM运行情况3.2 KSM设置3.3 对vm的设置 前言 KSM(Kernel Samepage Merging) 共享内存的概念在现代操作系统中很常用了&#xff0c;比如&#xff0c;一个程序启…

HTTP 401 错误 - 未授权: (Unauthorized)

http://blog.csdn.net/patronsaint/article/details/5639962 介绍 您的Web服务器认为&#xff0c;客户端&#xff08;例如您的浏览器或我们的 CheckUpDown 机器人&#xff09;发送的 HTTP 数据流是正确的&#xff0c;但进入网址 (URL) 资源 &#xff0c; 需要用户身份验证 &a…

403错误(已解决)

问题描述&#xff1a; 取得到图片的地址&#xff0c;但是显示图片无法加载 浏览器开发者模式报错403 问题解决&#xff1a; 图片的url部署在阿里云的oss存储仓库上&#xff0c;登陆阿里云发现是欠费导致的oss文件存储功能失效 补充&#xff1a; 403 Forbidden错误的原因和解…

Error:Request failed with status code 401

Error:Request failed with status code 401 错误示例&#xff1a; // 获取个人信息 export const getUserInfoAPI () > {return request({url: /v1_0/user/profile,method: GET,Headers: {Authorization: Bearer ${getToken()}}}) }正确做法 // 获取个人信息 export co…

服务器发送了 HTTP 状态代码 401: Unauthorized

根据wsdl连接生成客户端代码&#xff0c;调用接口报错&#xff1a;服务器发送了 HTTP 状态代码 401: Unauthorized。查询此错误的原因是没有访问权限&#xff0c;想到客户再提供接口wsdl访问连接的时候提供了用户名和密码。 解决办法&#xff1a; 增加此类 在接口运行前增加此…

前端401错误 解决方法:响应拦截器

目录 1.该问题出现的原因 2.处理401问题的解决方案原理 3.使用响应拦截器解决问题 1.该问题出现的原因 在前后端分离项目中&#xff0c;最常见的是前端点击登录后&#xff0c;后端返回token字符串&#xff0c;这个token可以看作是一个“令牌”&#xff0c;就比如你去酒店办理…

解密网站401错误:了解发生原因和修复方法

​  每个网站都会有不同的错误码&#xff0c;其中&#xff0c;401错误被认为是相对常见的错误码。那么&#xff0c;什么是网站401错误呢?在摸清了这一点之后&#xff0c;我们也需要学习一下如何解决它。 什么是 401 状态码? 401 状态代码是 Web 服务器发送给浏览器的 HTTP …

401 错误原因和解决方案

401.1 您未被授权查看该页 HTTP 错误 401.1 - 未经授权&#xff1a;访问由于 凭据无效被拒绝。 出现问题的原因&#xff1a; 计算机用户名ftpname帐号的密码和IIS中记录的不一致。 出现这个问题的原因就是手工到IIS中修改了用户的登录密码&#xff0c;从而导致计算机用户名…

401错误 解决方法:响应拦截器

关于401错误 401错误场景 1. 用户未登录,代码报401,应该回到登录页 2. 登录用户的token过期 : 怎样理解token过期? . 就是登录成功了以后,后端会返回一个token值,这个值在后续请求时带上&#xff08;就像是开门钥匙), 但是&#xff0c;这个值一般会有有效期&#xff08;具…

点到超平面的距离公式

超平面&#xff1a; 第一步&#xff1a;求出超平面的法向量 超平面上任意两点, 则向量一定垂直于该超平面的法向量。这两点满足&#xff1a; 两式相减&#xff1a; 就是向量&#xff0c;由此可以看出超平面的法向量就是向量 第二步&#xff1a;求出点到超平面的距离r 假设…

模式识别中的最优分类超平面与线性支持向量机

模式识别中的最优分类超平面与线性支持向量机 本章的内容需要你理解一下的基础知识。 模式识别部分&#xff1a;线性分类器基本概念、感知器 数学基础部分&#xff1a;拉格朗日乘子法、拉格朗日对偶问题 当然&#xff0c;以上的基础知识不需要你现在就看&#xff0c;可以在阅…

平面、超平面的法线,平行超平面的距离

1. 法线 一个平面或超平面由一个方程&#xff08;不是一组方程&#xff09;定义&#xff1a; { x ∣ a T x b } \{x\mid a^Txb\} {x∣aTxb} 其中 a a a 是一个非零的列向量&#xff0c;而 b b b 是一个实数。那么它的法线&#xff08;垂线&#xff09;向量是 a a a。 例如…

如何理解超平面?

超平面的公式 首先明确几个定义&#xff1a;(1) 超平面是指n维线性空间中维度为n-1的子空间。它可以把线性空间分割成不相交的两部分。比如二维空间中&#xff0c;一条直线是一维的&#xff0c;它把平面分成了两块&#xff1b;三维空间中&#xff0c;一个平面是二维的&#xf…