victory的博客

长安一片月,万户捣衣声

0%

JavaWeb项目开发 | request域对象

request域对象

场景:有时候我们发送一个请求然后由一个对应的servlet处理请求,接着我们需要将当前的request对象的一些信息传递到另一个servlet或者jsp页面。
方法

  1. 请求转发
    假设当前处理请求的是Demo2Servlet(/demo2),需要传递信息到Demo3Servlet(/demo3)中。
request.getRequestDispatcher("/demo3").forward(request, response);

然后我们就可以在Demo3Servlet中获取request中的信息。

package com.oracle;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Demo3Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        System.out.println(username);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}
  1. 使用request域对象(使用request的setAttribute()方法设置其他信息并传递到Demo3Servlet中)
package com.oracle;

import java.io.IOException;
import java.util.Map;

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

public class Demo2Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("flag", 1);
        request.getRequestDispatcher("/demo3").forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}
  1. 在Demo3Servlet中获取请求中的信息或者在Demo2Servlet中设置的新信息)
package com.oracle;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Demo3Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        System.out.println(username);
        
        //request.removeAttribute("flag");//如果在获取设置的属性前将其删除,后面将获取不到该属性
        Integer a = (Integer)request.getAttribute("flag");
        System.out.println(a);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}