您的当前位置:首页正文

request与response对象

2024-11-25 来源:个人技术集锦

request获取请求行数据

  • 获取请求方式
    System.out.println(req.getMethod());

  • 获取servlet路径
    System.out.println(req.getServletPath());

  • 获取get方式的请求参数
    System.out.println(req.getQueryString());

  • 获取请求url
    System.out.println(req.getRequestURL());

  • 获取协议及版本号
    System.out.println(req.getProtocol());

request获取请求头数据

  • 根据请求头名称获取请求头的值
    String value = req.getHeader(name)

  • 获取所有的请求头名称

Enumeration<String> names = req.getHeaderNames();
//获取所有请求头信息并打印
Enumeration<String> names = req.getHeaderNames();
while(names.hasMoreElements()){
    String name = names.nextElement();
    System.out.println(name+"--"+req.getHeader(name));
}
  • request获取请求体数据
    获取字节输入流
    BufferedReader reader = req.getReader();

  • 获取字符输入流
    ServletInputStream inputStream = req.getInputStream();

获取请求参数通用方式(get/post都通用)

  • servlet提供了通用的方法便于自己获取请求参数。

  • 根据参数名获取参数值
    String value = req.getParameter(name); //获取一个参数值
    String[] values = req.getParameterValues(name); //参数值有多个 a=1&a=2

  • 获取所有的请求参数名称
    Enumeration names = req.getParameterNames();

  • 获取所有参数的map集合
    Map<String, String[]> map = req.getParameterMap();

  • 有时候请求数据中有中文服务器解析会乱码,可以改变流的解码方式
    req.setCharacterEncoding(“utf-8”);

请求转发

  • 它是服务器内部(浏览器不可见)资源跳转的一种方式,可以在一个servlet对象中请求另一个servlet对象
  • 如下可以将demo1对应servlet接收的请求再转发到demo2。
@WebServlet(urlPatterns = {"/demo1"})
public class Demo extends HttpServlet{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp){
        System.out.println("demo1接收到get请求");
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/demo2");
        requestDispatcher.forward(req,resp);
    }
}

response对象常用方法

  • 设置响应状态码
    resp.setStatus(int x);

  • 设置响应头
    resp.setHeader(key,valve);

  • 设置编码

//请求消息解码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); //响应消息编码方式
response.setHeader("content-type","text/html;charset=utf-8"); //告诉浏览器使用何种方式解码响应数据
  • 进行重定向(浏览器可见)
    response.setHeader(“location”,“http://www.baidu.com”);

  • 使用字符输出流

//获取字符输出流
PrintWriter writer = resp.getWriter();
writer.write("客户端,你好哈哈哈");
  • 使用字节输出流
//获取字节输出流
ServletOutputStream outputStream = resp.getOutputStream();
outputStream.write("客户端,你好哈哈哈酷酷酷酷酷酷".getBytes("utf-8"));
显示全文