zoukankan      html  css  js  c++  java
  • URLRewrite地址重定向的实现

    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

    添加完之后的完整内容为

     

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">  
    3.     <modelVersion>4.0.0</modelVersion>  
    4.     <groupId>urlrewrite_demo</groupId>  
    5.     <artifactId>urlrewrite_demo</artifactId>  
    6.     <version>0.0.1-SNAPSHOT</version>  
    7.     <packaging>war</packaging>  
    8.     <name>urlrewrite_demo</name>  
    9.     <description />  
    10.     <properties>  
    11.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    12.     </properties>  
    13.     <dependencies>  
    14.         <dependency>  
    15.             <groupId>org.springframework</groupId>  
    16.             <artifactId>spring-webmvc</artifactId>  
    17.             <version>3.2.9.RELEASE</version>  
    18.         </dependency>  
    19.         <dependency>  
    20.             <groupId>org.springframework</groupId>  
    21.             <artifactId>spring-context-support</artifactId>  
    22.             <version>3.2.9.RELEASE</version>  
    23.         </dependency>  
    24.         <dependency>  
    25.             <groupId>org.tuckey</groupId>  
    26.             <artifactId>urlrewritefilter</artifactId>  
    27.             <version>4.0.3</version>  
    28.         </dependency>  
    29.         <dependency>  
    30.             <groupId>org.freemarker</groupId>  
    31.             <artifactId>freemarker</artifactId>  
    32.             <version>2.3.23</version>  
    33.         </dependency>  
    34.         <dependency>  
    35.             <groupId>javax</groupId>  
    36.             <artifactId>javaee-api</artifactId>  
    37.             <version>7.0</version>  
    38.             <scope>provided</scope>  
    39.         </dependency>  
    40.     </dependencies>  
    41.     <build>  
    42.         <plugins>  
    43.             <plugin>  
    44.                 <artifactId>maven-compiler-plugin</artifactId>  
    45.                 <version>2.3.2</version>  
    46.                 <configuration>  
    47.                     <source>1.7</source>  
    48.                     <target>1.7</target>  
    49.                 </configuration>  
    50.             </plugin>  
    51.             <plugin>  
    52.                 <artifactId>maven-war-plugin</artifactId>  
    53.                 <version>2.2</version>  
    54.                 <configuration>  
    55.                     <version>3.1</version>  
    56.                     <failOnMissingWebXml>false</failOnMissingWebXml>  
    57.                 </configuration>  
    58.             </plugin>  
    59.         </plugins>  
    60.     </build>  
    61. </project>  

    4 web.xml中的完整内容为

     

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0"encoding="UTF-8"?>  
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    3.     xmlns="http://xmlns.jcp.org/xml/ns/javaee"  
    4.     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"  
    5.     id="WebApp_ID" version="3.1">  
    6.     <display-name>urlrewrite_demo</display-name>  
    7.    
    8.     <filter>  
    9.         <filter-name>UrlRewriteFilter</filter-name>  
    10.         <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>  
    11.     </filter>  
    12.     <filter-mapping>  
    13.         <filter-name>UrlRewriteFilter</filter-name>  
    14.         <url-pattern>/*</url-pattern>  
    15.         <dispatcher>REQUEST</dispatcher>  
    16.         <dispatcher>FORWARD</dispatcher>  
    17.     </filter-mapping>  
    18.    
    19.     <servlet>  
    20.         <servlet-name>dispatcher</servlet-name>  
    21.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    22.         <init-param>  
    23.             <param-name>contextConfigLocation</param-name>  
    24.             <param-value>/WEB-INF/classes/config/spring/applicationContext-mvc.xml</param-value>  
    25.         </init-param>  
    26.         <load-on-startup>1</load-on-startup>  
    27.     </servlet>  
    28.     <servlet-mapping>  
    29.         <servlet-name>dispatcher</servlet-name>  
    30.         <url-pattern>/service/*</url-pattern>  
    31.     </servlet-mapping>  
    32. </web-app>  

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

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    4.     xmlns:context="http://www.springframework.org/schema/context"  
    5.     xmlns:aop="http://www.springframework.org/schema/aop"   
    6.     xmlns:p="http://www.springframework.org/schema/p"  
    7.     xmlns:tx="http://www.springframework.org/schema/tx"  
    8.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
    9.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    10.           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
    11.           http://www.springframework.org/schema/context  
    12.           http://www.springframework.org/schema/context/spring-context-3.2.xsd  
    13.           http://www.springframework.org/schema/aop  
    14.           http://www.springframework.org/schema/aop/spring-aop-3.2.xsd  
    15.           http://www.springframework.org/schema/tx  
    16.           http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  
    17.           http://www.springframework.org/schema/mvc   
    18.            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">  
    19.    
    20.     <!-- 有 @Controller注解的表现层控制器组件 -->  
    21.     <context:component-scan base-package="com.zheng.controller" />  
    22.    
    23.     <!-- 配置freeMarker模板加载地址 -->  
    24.     <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
    25.         <!-- 视图解析器在/WEB-INF/views/路径下扫描视图文件 -->  
    26.         <property name="templateLoaderPath" value="/WEB-INF/views/" />  
    27.         <property name="freemarkerSettings" ref="freemarkerConfiguration" />     
    28.     </bean>  
    29.       
    30.     <!-- 配置Freemarker属性文件路径 -->  
    31.     <bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">  
    32.         <property name="location" value="classpath:config/properties/freemarker.properties"/>  
    33.     </bean>  
    34.     
    35.     <!-- 配置freeMarker视图解析器 -->  
    36.     <bean id="freemakerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
    37.         <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>  
    38.         <property name="suffix" value=".ftl" />   
    39.         <property name="contentType" value="text/html; charset=UTF-8" />     
    40.     </bean>  
    41.       
    42. </beans>  

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

     

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. tag_syntax=auto_detect  
    2. classic_compatible=true  
    3. whitespace_stripping=true  
    4. template_update_delay=2  
    5. default_encoding=UTF-8  
    6. output_encoding=UTF-8  
    7. url_escaping_charset=UTF-8  
    8. locale=zh_CN  
    9. date_format=yyyy-MM-dd  
    10. time_format=HH:mm:ss  
    11. datetime_format=yyyy-MM-dd HH:mm:ss  

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

     

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. package com.zheng.controller;  
    2.    
    3. import org.springframework.stereotype.Controller;  
    4. import org.springframework.web.bind.annotation.RequestMapping;  
    5.    
    6. @Controller  
    7. @RequestMapping("/login")  
    8. public class TestController {  
    9.     @RequestMapping("/toLoginIndex")  
    10.     public String toLoginIndex(){  
    11.         return "/test";  
    12.     }  
    13. }  

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

     

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <html>  
    2. <head>  
    3.   <title>Insert title here</title>  
    4. </head>  
    5. <body>  
    6.   Hello, World!  
    7. </body>  
    8. </html>  

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

     

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0" encoding="utf-8"?>    
    2. <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"   
    3. "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">  
    4. <urlrewrite decode-using="UTF-8">  
    5.     <rule>  
    6.         <from>/$</from>  
    7.         <to>/service/login/toLogin</to>  
    8.     </rule>  
    9. </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

  • 相关阅读:
    Django对静态文件的处理——部署阶段
    使用Django来处理对于静态文件的请求
    Django1.7如何配置静态资源访问
    Spring WebSocket中403错误解决
    FastJSON JSONObject 字段排序 Feature.OrderedField
    国际化(i18n) 各国语言缩写
    【转】java.io.Closeable接口
    【转】spring bean 卸载
    This content should also be served over HTTPS
    Failed to close the ServletOutputStream connection cleanly, Broken pipe
  • 原文地址:https://www.cnblogs.com/grimm/p/6732748.html
Copyright © 2011-2022 走看看