How do I customize HttpServletRequest, HttpServletResponse?

Source: Internet
Author: User

How do I customize a httpservletrequest?

Like spring MVC, we usually write

@RequestMapping (value = "/helloworld", method = requestmethod.get) public modelandview test (HttpServletRequest req, HttpServletResponse Res) {return new Modelandview ("index.jsp");}


have been thinking, can not httpservletrequest, and httpservletresponse it? Finally, I studied the following wording.


@RequestMapping (value = "/helloworld", method = requestmethod.get) public modelandview test (WebRequest req, WebResponse RES) {return new Modelandview ("index.jsp");}


Public void dofilter (servletrequest request, servletresponse response,  Filterchain filterchain)  throws IOException, ServletException {     HttpServletRequest httpRequest =  (HttpServletRequest)  request;     if (! ( httprequest instanceof webrequest))     {         httprequest = new webrequest (HttpRequest);    }     HttpServletResponse httpResponse =  (HttpServletResponse)  response;     if (! ( Httpresponse instanceof webresponse))     {         httpresponse = new webresponse (HttpResponse);    }     filterchain.dofilter (httprequest, httpresponse);}


The principle is to customize an interceptor in Web. XML, intercept all URLs and give httpservletrequest to ServletRequest.

Private ServletRequest request;public Servletrequestwrapper (ServletRequest request) {if (request = = null) {thro    W New IllegalArgumentException ("Request cannot be null");    } else {this.request = Request; }}


Attach the code OK (everyone can paste directly-haha-my favorite):

Xml

<?xml version= "1.0"  encoding= "UTF-8"? ><web-app version= "2.5"           xmlns= "Http://java.sun.com/xml/ns/javaee"           xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance"           xsi:schemalocation= "http://java.sun.com/xml/ns/javaee    http:// Java.sun.com/xml/ns/javaee/web-app_2_5.xsd ">    <listener>         <listener-class>org.springframework.web.context.contextloaderlistener</ listener-class>    </listener>    <!--  Set Spring container load profile path  -->    <context-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:spring-*.xml</param-value>    </context-param>    <servlet>         <servlet-name>springmvc</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet< /servlet-class>        <load-on-startup>1</load-on-startup >    </servlet>    <servlet-mapping>         <servlet-name>springmvc</servlet-name>         <url-pattern>/</url-pattern>    </servlet-mapping>     <filter>        <filter-name> Interceptallfilter</filter-name>        <filter-class> Com.test.filter.RequestFIlter</filter-class>    </filter>    <filter-mapping >        <filter-name>interceptAllFilter</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping></web-app>

Pom.xml

<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.0 http:// Maven.apache.org/maven-v4_0_0.xsd ">  <modelVersion>4.0.0</modelVersion>   <groupId>Test</groupId>  <artifactId>test</artifactId>  < Packaging>war</packaging>  <version>1.0-snapshot</version>  <name >com.test Maven Webapp</name>  <url>http://maven.apache.org</url>     <dependencies>        <dependency>             <groupid>com.alibaba</groupid >            <artifactid>fastjson</ artifactid>            <version>1.2.6</version>         </dependency>        <dependency>             <groupId>org.springframework</groupId>             <artifactid>spring-webmvc</ artifactid>            <version>4.0.1. Release</version>            <type>jar </type>        </dependency>       <dependency>        <groupId>org.springframework< /groupid>        <artifactid>spring-core</artifactid>         <version>4.0.1.release</version>         <type>jar</type>      </dependency>       <dependency>        <groupId> Org.springframework</groupid>        <artifactid> Spring-context</artifactid>        <version>4.0.1.release </version>        <type>jar</type>       </dependency>      <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-context-support</artifactId>         <version>4.0.1.release</version>      </dependency>       <dependency>        <groupId> Org.springframework</groupid>        <artifactid> spring-web</artifactid>        <version>4.0.1.release</ version>      </dependency>         <dependency>            <groupid >javax.servlet</groupId>            < artifactid>servlet-api</artifactid>             <version>2.5</version>             <scope>provided</scope>        </dependency>    </dependencies>   <build>    <finalName>test</finalName>       <pluginmanagement>          <plugins >              <plugin>                   < groupid>org.apache.tomcat.maven</groupid>                   <artifactId>tomcat6-maven-plugin</artifactId>                    <version>2.2</version>               </plugin>              <plugin>                   <groupId> org.apache.tomcat.maven</groupid>                   <artifactId>tomcat7-maven-plugin</artifactId>                   < version>2.2</version>               </plugin>          </plugins>       </pluginManagement>  </build></project>

Webrequest.java

/** * Created by Shaoyongyang on 2015/6/5. */package Com.test.core;import Javax.servlet.http.httpservletrequest;import Javax.servlet.http.httpservletrequestwrapper;public class WebRequest extends Httpservletrequestwrapper {public    WebRequest (HttpServletRequest request) {super (request); }}

Webresponse.java

/** * Created by Shaoyongyang on 2015/6/5. */package Com.test.core;import Javax.servlet.http.httpservletresponse;import Javax.servlet.http.httpservletresponsewrapper;public class WebResponse extends Httpservletresponsewrapper {public    WebResponse (HttpServletResponse response) {super (response); }}

Requestfilter.java

/** * created by shaoyongyang on 2015/6/5. */package com.test.filter; Import com.test.core.webrequest;import com.test.core.webresponse;import javax.servlet.*;import  javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import  java.io.ioexception;public class requestfilter implements filter {     public void init (Filterconfig filterconfig)  throws servletexception {     }    public void dofilter (ServletRequest request,  servletresponse response, filterchain filterchain)  throws IOException,  Servletexception {        httpservletrequest httprequest  =  (httpservletrequest)  request;        if (!) ( Httprequest instanceof webrequEST))         {             httprequest = new webrequest (HttpRequest);         }        HttpServletResponse httpResponse  =  (HttpServletResponse)  response;        if (! ( Httpresponse instanceof webresponse))         {             httpresponse = new webresponse ( HttpResponse);        }         filterchain.dofilter (Httprequest, httpresponse);    }     Public void destroy ()  {    }}

Testcontroller.java

/** * created by shaoyongyang on 2015/6/5. */package com.test.action; import com.alibaba.fastjson.jsonobject;import com.test.core.webrequest;import  com.test.core.webresponse;import org.springframework.stereotype.controller;import  org.springframework.web.bind.annotation.requestmapping;import  Org.springframework.web.bind.annotation.requestmethod;import org.springframework.web.servlet.modelandview ; import javax.servlet.http.httpservletrequest;import javax.servlet.http.httpservletresponse;import  java.io.PrintWriter; @Controllerpublic  class testcontroller{    @ Requestmapping (value =  "/helloworld",  method = requestmethod.get)      public modelandview test (webrequest req, webresponse res)  {         return new modelandview ("index.jsp");     }} 

Springmvc-servlet.xml in Web-inf

<?xml version= "1.0"  encoding= "UTF-8"? ><beans xmlns= "http://www.springframework.org/ Schema/beans "   xmlns:mvc=" Http://www.springframework.org/schema/mvc "     Xmlns:util= "Http://www.springframework.org/schema/util"       xmlns:xsi= "http// Www.w3.org/2001/XMLSchema-instance "   xmlns:p=" http://www.springframework.org/schema/p "  xmlns:context= "Http://www.springframework.org/schema/context"    xsi:schemalocation= "http// www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/ spring-beans-3.0.xsd    http://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-3.0.xsd    http:// Www.springframework.org/schema/mvc    http://www.springframework.org/schema/mvc/ Spring-mvc-3.0.xsd   http://www. springframework.org/schema/util            http:/ /www.springframework.org/schema/util/spring-util-3.0.xsd ">    <mvc:annotation-driven  />    <!--  Automatically scans all classes under the controller package to make it think of Spring mvc's controllers  -->    <context:component-scan base-package= "Com.test.action"  /></beans>


Code copy of the more, in fact, the key is still on the top. Inside the Requestfilter.

MAVEN projects can be directly mvn Tomcat:run

reference to a foreign brother on GitHub wrote the code, attached to the address:https://github.com/surenrao/nsr-bookstore/tree/ 1a7e56d306819e9939d9d67bd12ee2043e8997ce/java/bookstore-web


How do I customize HttpServletRequest, HttpServletResponse?

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.