目录
目录
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对象就行了。