0%

Request&Response

获取请求参数

get 或 post请求&&Content-Type 为application/x-www-form-urlencoded :
可以通过HttpServletRequest.getParameterHttpServletRequest.parameterMap来获取URL中字段参数

post请求body参数只能通过HttpServletRequest.readerHttpServletRequest.inputStream获取

中文乱码问题

1.HttpServletRequest.getParameterHttpServletRequest.parameterMap获取URL中字段参数中文乱码问题
原因是浏览器默认用UTF-8进行URL encode,而tomcat
默认用ISO-8859-1解码后放入parameterMap。解决方案:String(req.getParameter("xxx").getBytes("ISO-8859-1"),"UTF-8")
Tomcat 8后默认以UTF-8解码,故无此问题

请求转发

请求转发(forward)
一种在服务器内部的资源跳转方式,1次请求 req.getRequestDispatcher("/本服务内要挑战的路径").forward(req, resp)

重定向

请求2次
方式1:

1
2
resp.setStatus(302)
resp.setHeader("location", "重定向地址")

方式2:

1
resp.sendRedirect("重定向地址")

response

1
2
3
4
5
6
7
8
9
10
11
12
13
resp.contentType = "text/html;charset=utf-8" //告诉客户端响应字符集,如果用字节流返回文字,也要设置
resp.writer.write("测试响应") //使用字符流

//字节流返回文件 ,也可以用common-io:common-io:2.6 这个库的IOUtils.copy(fileInput,resp.outputStream)替代
val fileInput = FileInputStream("本机文件路径")
val bytes = ByteArray(1024)
var len = 0
do {
len = fileInput.read(bytes)
if (len != -1) {
resp.outputStream.write(bytes, 0, len)
}
} while (len != -1)