HttpServletRequest及HttpServletResponse

目录

目录

1.HttpServletRequest说明

2.主要方法说明

3.示例

4.HttpServletResponse说明

5.主要方法说明

6.示例

7.RequestHeader

8.总结


1.HttpServletRequest说明

公共接口类HttpServletRequest继承自ServletRequest。客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内,通过这个对象提供的方法,可以获得客户端请求的所有信息。

2.主要方法说明

(1) 获取参数的方法

getParameter()   //获取指定前端传回来的名字,并且返回一个字符串,得到一个前端的类型

getParameterMap()    //获取前端参数的map集合

getParameterNames()   //返回一个枚举,通常不用这个

getParameterValues()     //获取前端参数的数组

(2)请求转发

getRequsetDispatcher()

指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。
1.通过ServletContext的getRequestDispatcher(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
例如:将请求转发的test.jsp页面

RequestDispatcher reqDispatcher =this.getServletContext().getRequestDispatcher("/test.jsp");
reqDispatcher.forward(request, response);

3.示例

    /**
     * 查询结算账单手账列表
     */
    @GetMapping("/list")
    public TableDataInfo list(HttpServletRequest request, BmsBillMemo bmsBillMemo) {
        System.out.println(request);
        System.out.println(request.getParameter("clientId"));
        System.out.println(request.getParameter("clientName"));
        System.out.println(request.getParameter("expenseId"));
        System.out.println(request.getParameter("currentPage"));
        System.out.println(request.getParameter("pageSize"));
        System.out.println(request.getParameterMap());
        System.out.println(request.getParameterNames());
        request.getRequestDispatcher("");
        String orderBy = "create_time desc";
        Page<BmsBillMemo> objects = PageHelper.startPage(bmsBillMemo.getCurrentPage(), bmsBillMemo.getPageSize(), orderBy);
        List<BmsBillMemo> list = bmsBillMemoService.selectBmsBillMemoList(bmsBillMemo);
        PageInfo pageInfo = new PageInfo(list,5);
        return getDataTable1(pageInfo);
    }

4.HttpServletResponse说明

对于每次发出的请求,可以通过HttpServletResponse来设置响应的信息,返回到浏览器进行显示。

5.主要方法说明

  • void setStatus(int sc)    设置响应状态码
  • void setHeader(String name,String value)    设置一个带有给定的名称和值的Header,如果name已经存在,则覆盖旧的值
  • void addHeader(int sc)    设置一个带有给定的名称和值的Header,如果name存在,不会覆盖旧的值,并列添加新的值
  • void setContentType(String type)    设置被发送到客户端的响应的内容类型
  • void setCharacterEncoding(String charset)    设置被发送到客户端的响应的字符编码(MIME 字符集)
  • void sendRedirect(String location)    使用指定的重定向位置 URL 发送临时重定向响应到客户端
  • PrintWriter getWriter()    用于往 body 中写入文本格式数据
  • OutputStream getOutStream()    用于往 body 中写入二进制格式数据

6.示例

      String data = "132123132山东高速";
		OutputStream outputStream = resp.getOutputStream();// 获取输出流
		// 通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
		resp.setHeader("content-type", "text/html;charset=UTF-8");
		// 将字符转换成字节数组,指定以UTF-8编码进行转换
		byte[] dataByteArr = data.getBytes("UTF-8");
		//使用OutputStream流向客户端输出字节数组
		outputStream.write(dataByteArr);
		outputStream.flush();
		outputStream.close();
       String data = "132123法国进口";
		resp.setCharacterEncoding("UTF-8");// 设置将字符以"UTF-8"编码输出到客户端浏览器
		PrintWriter out = resp.getWriter();// 获取输出流
		// 将字符转换成字节数组,指定以UTF-8编码进行转换
		  resp.setHeader("Content-type",  "text/html;charset=UTF-8");  
		out.write(data);// 使用PrintWriter流向客户端输出字符
		out.flush();
		out.close();

7.RequestHeader

SpringMVC提供了@RequestHeader注解用于映射请求头数据到Controller方法的对应参数。

如果指定的参数在请求头中不存在,会报错。如果想要设置默认值,可以使用defaultValue指定,也可以指定该参数不是必须的。

    /**
     * 查询结算账单手账列表
     */
    @GetMapping("/list")
    public TableDataInfo list(HttpServletRequest request, BmsBillMemo bmsBillMemo, HttpServletResponse response,@RequestHeader("Accept") String accept){
        System.out.println(accept);

        String orderBy = "create_time desc";
        Page<BmsBillMemo> objects = PageHelper.startPage(bmsBillMemo.getCurrentPage(), bmsBillMemo.getPageSize(), orderBy);
        List<BmsBillMemo> list = bmsBillMemoService.selectBmsBillMemoList(bmsBillMemo);
        PageInfo pageInfo = new PageInfo(list,5);

        return getDataTable1(pageInfo);
    }

8.总结

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对 象。
request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值