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?