URLRewrite地址重定向的实现

article/2025/9/17 4:15:17

URLRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。其优点有:

(1)提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多。

(2)美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL。

(3)更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息。

 

         实现过程:

 

1 参考http://blog.csdn.net/haishu_zheng/article/details/51490299,用第二种方法创建一个名为urlrewrite_demo的Maven工程。

 

2 文件目录结构如下图所示



3 在pom.xml中添加四个jar包:

spring-webmvc

spring-context-support

urlrewritefilter

freemarker

添加完之后的完整内容为

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>urlrewrite_demo</groupId><artifactId>urlrewrite_demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>urlrewrite_demo</name><description /><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.2.9.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>3.2.9.RELEASE</version></dependency><dependency><groupId>org.tuckey</groupId><artifactId>urlrewritefilter</artifactId><version>4.0.3</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version></dependency><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version><scope>provided</scope></dependency></dependencies><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>2.2</version><configuration><version>3.1</version><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build>
</project>


4 web.xml中的完整内容为

<?xml version="1.0"encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><display-name>urlrewrite_demo</display-name><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><servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/config/spring/applicationContext-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/service/*</url-pattern></servlet-mapping>
</web-app>

5 /src/main/reources/config/spring/applicationContext-mvc.xml中的完整内容为

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.2.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"><!-- 有 @Controller注解的表现层控制器组件 --><context:component-scan base-package="com.zheng.controller" /><!-- 配置freeMarker模板加载地址 --><bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"><!-- 视图解析器在/WEB-INF/views/路径下扫描视图文件 --><property name="templateLoaderPath" value="/WEB-INF/views/" /><property name="freemarkerSettings" ref="freemarkerConfiguration" />   </bean><!-- 配置Freemarker属性文件路径 --><bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="location" value="classpath:config/properties/freemarker.properties"/></bean><!-- 配置freeMarker视图解析器 --><bean id="freemakerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/><property name="suffix" value=".ftl" /> <property name="contentType" value="text/html; charset=UTF-8" />   </bean></beans>

6 /src/main/resources/config/properties/freemarker.properties中的完整内容为

tag_syntax=auto_detect
classic_compatible=true
whitespace_stripping=true
template_update_delay=2
default_encoding=UTF-8
output_encoding=UTF-8
url_escaping_charset=UTF-8
locale=zh_CN
date_format=yyyy-MM-dd
time_format=HH:mm:ss
datetime_format=yyyy-MM-dd HH\:mm\:ss


7 /src/main/java/com/zheng/controller/TestController.java中的完整代码为

package com.zheng.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
@RequestMapping("/login")
public class TestController {@RequestMapping("/toLoginIndex")public String toLoginIndex(){return "/test";}
}


8 /src/main/webapp/WEB-INF/views/test.ftl中的完整代码为:

<html>
<head><title>Insert title here</title>
</head>
<body>Hello, World!
</body>
</html>

9 /src/main/webapp/WEB-INF/urlrewrite.xml中的完整代码为

<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite decode-using="UTF-8"><rule><from>/$</from><to>/service/login/toLogin</to></rule>
</urlrewrite>

注意:这里的<from>和<to>决定了

http://localhost:8080/urlrewrite_demo 映射为

http://localhos:8080/urlrewrite_demo/service/login/toLoginIndex

 

假如<from>/$</from>改为<from>/abc</from>,则

http://localhost:8080/urlrewrite_demo/abc 映射为

http://localhos:8080/urlrewrite_demo/service/login/toLoginIndex

 

10 将urlrewrite_demo添加进Tomcat7中并运行



在浏览器中输入http://localhost:8080/urlrewrite_demo

显示结果为

 


在浏览器中输入http://localhost:8080/urlrewrite_demo/service/login/toLoginIndex

显示结果为



11 源码下载地址

CSDN:http://download.csdn.net/detail/haishu_zheng/9540381

Github:https://github.com/zhenghaishu/urlrewrite_demo

 


http://chatgpt.dhexx.cn/article/Gi0AfpGY.shtml

相关文章

URLRewrite,地址重写.

我们为什么要使用URLRewrite重写url技术呢&#xff0c;在网上搜了一下&#xff0c;有篇文章说是有主要三个原因 1、满足搜索引擎的要求 2、隐藏技术实现&#xff0c;提高网站的移植性 3、满足美感的要求 首页&#xff0c;访问其官网&#xff1a;我下载的是最新的目前还处于B…

urlrewriter 用法

1、简介 UrlRewriteFilter是一个用于改写URL的Web过滤器&#xff0c;类似于Apache的mod_rewrite。适用于任何Web应用服务器&#xff08;如Resin&#xff0c;Orion&#xff0c;Tomcat等&#xff09;。其典型应用就把动态URL静态化&#xff0c;便于搜索引擎爬虫抓取你的动态网页…

UrlRewrite 的配置和使用总结

UrlRewrite就是我们通常说的地址重写&#xff0c;用户得到的全部都是经过处理后的URL地址。 主要优点 一&#xff1a;提高安全性&#xff0c;可以有效的避免一些参数名、ID等完全暴露在用户面前&#xff0c;如果用户随便乱输的话&#xff0c;不符合规则的话直接会返回个404或错…

IIS 无法安装URL重写模块的解决办法 UrlReWrite (.NET`SQL技术交流 群号206656202)

下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装。 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开IIS(Internet 信息服务管理器),在管理器主页中找到管理项,打开Web平台安装程序,如下图: 在Web平台…

java编程之伪静态(urlrewrite)

&#xff08;Notice&#xff1a;欢迎交流和沟通&#xff0c;Wx:IT_Ezra&#xff0c;QQ 654303408。仅个人观点和个人理解有问题讨论也可联系我。&#xff09; 对于伪静态&#xff0c;解释一下就是假的静态&#xff0c;说的官方点就是“地址重写&#xff0c;用户得到的全部地址…

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;从而导致计算机用户名…