URLRewrite地址重定向的实现
来源:互联网 发布:javascript经典实例pdf 编辑:程序博客网 时间:2024/06/10 05:52
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/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://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_detectclassic_compatible=truewhitespace_stripping=truetemplate_update_delay=2default_encoding=UTF-8output_encoding=UTF-8url_escaping_charset=UTF-8locale=zh_CNdate_format=yyyy-MM-ddtime_format=HH:mm:ssdatetime_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
- URLRewrite地址重定向的实现
- [urlrewrite]使用urlrewrite进行地址自动重定向
- Java URLRewrite重定向
- URL重定向 UrlRewrite
- urlrewrite实现地址的重写
- UrlRewrite实现地址重写
- PHP网站实现地址URL重定向
- PHP网站实现地址URL重定向
- 利用http302临时重定向实现不可重入地址的后退
- HttpClient获取重定向地址的代码
- 获取重定向地址
- IP地址重定向
- nginx地址重定向
- nodejs地址重定向
- urlrewrite地址重写的使用
- urlrewrite地址重写的使用
- 用urlrewrite.dll做重定向后postback问题
- HTTP请求重定向的接口,获取该接口重定向地址
- kubernetes开山篇(继续讲解vagrant)
- 更改linux文件系统为只读的方法
- html学习笔记
- 基于ALIENTEK MINISTM32开发板 ADC+DMA 8通道显示
- org.springframework.beans.NotWritablePropertyException
- URLRewrite地址重定向的实现
- Plist获取版本号等
- POJ1163动态规划
- COCOS2D学习日记之 moveto 与 moveby
- AngularJS的一些定义和理解
- 80端口和8080端口是两种不同的端口
- React入门笔记(三) — 数据流
- 经典算法之直接插入排序(三种实现)
- 排序--InsertSort优化