HttpServletRequestWrapper的用法

来源:互联网 发布:stm32定时器计算软件 编辑:程序博客网 时间:2024/04/27 16:00

HttpServletRequestWrapper 是HttpServletRequest的装饰器。

代码实例如下:

新建 TestRequestWrapper.java

package com.demo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class TestRequestWrapper extends HttpServletRequestWrapper {

    private String param = "";


    public TestRequestWrapper(HttpServletRequest request, String param) {

          //装饰器模式的写法,必须将被装饰的对象初始化到装饰类中,详细用法请参照java设计模式
        super(request);
        this.param =  param;
    }

   //覆写getParameter方法
    @Override
    public String getParameter(String name) {
        return param;
    }
}

新建过滤器类TestFilte



package com.demo;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class TestFilter implements Filter {
    private FilterConfig filterConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub
        this.filterConfig = filterConfig;

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub

    TestRequestWrapper requestwrapper = new TestRequestWrapper((HttpServletRequest)request,"我就是个参数");

    //对自定义装饰器初始化后,继续发关原先的请求,不过将ServletRequest request  改为自定义装饰器的对像requestwrapper

    chain.doFilter(requestwrapper, response);
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

}


新建 servlet类 ServletSessionTest.,java

package com.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.catalina.Session;

/**
 * Servlet implementation class ServletSessionTest
 */
public class ServletSessionTest extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletSessionTest() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

     //此处request是自定义装饰器类的对像。getParameter为覆写后的方法,str的什是我就是个参数
     String str = request.getParameter("id");
     if(str.equals("1")){
           request.getSession().setAttribute("aa", "sssss");
     }else  if(str.equals("2")){
           request.getSession().setAttribute("bbb", "bbb");
 
     }else if(str.equals("3")){
           request.getSession().removeAttribute("bbb");
     }else if(str.equals("4")){
         request.getSession().invalidate();
     }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}


web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>demo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <listener>
    <listener-class>com.demo.HttpSessionListenerTest</listener-class>
  </listener>
  <filter>
   <filter-name>TestFilter</filter-name>
   <filter-class>com.demo.TestFilter</filter-class>

  </filter>
  <filter-mapping>
    <filter-name>TestFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  <servlet>
    <description></description>
    <display-name>ServletSessionTest</display-name>
    <servlet-name>ServletSessionTest</servlet-name>
    <servlet-class>com.demo.ServletSessionTest</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletSessionTest</servlet-name>
    <url-pattern>/ServletSessionTest</url-pattern>
  </servlet-mapping>
   <session-config>  
         <session-timeout>1</session-timeout>  
   </session-config>
</web-app>


访问地址:

localhost:8080/demo/ServletSessionTest?id=1

0 0
原创粉丝点击