java web开发中Servlet、Request、Response常用的代码
Request(请求)
1.获取并打印request的body中的参数。
这种获取请求中代码,一般都会封装成工具类。
如果不封装,写起来比较麻烦,类似如下:
JSONObject res = new JSONObject();
String postData = null;
try {
postData = IOUtils.toString(request.getInputStream(), "UTF-8");
} catch (IOException e) {
//错误参数,自行定义。
res.put(ResultCode.H_CODE, ResultCode.DEAL_FAIL_1301);
res.put(ResultCode.H_DESCRIPTION,ResultInfo.DEAL_FAIL_1301);
return res ;
}
logger.info("请求参数为:" + postData );
2.获取并打印GET请求的参数。
一般来说,GET请求的参数,都会放在Url后面,而不会放在body里面。
主要是用request.getQueryString() 获取参数。
@RequestMapping(value="/user/id/query", method = RequestMethod.GET)
public BaseResult invoiceExport(HttpServletRequest request, HttpServletResponse response) throws Exception{
logger.info("查询用户id对应的用户信息...");
logger.info("请求参数:"+request.getQueryString() );
}
Response(响应)
1.通过Response返回文本或图片等信息给前端。
比如前端通过GET请求,获取后端生成的图片。
@RequestMapping(value="/image", method = RequestMethod.GET)
public void getImage(HttpServletRequest request, HttpServletResponse response) {
// Image image=...;
response.getWrier().print(image);
}
HttpServletResponse的理解: https://www.cnblogs.com/expiator/p/10791841.html
Session(会话)
1.从session中取出openId等用户信息:
Object openId = request.getSession().getAttribute(Constant.SESSION_FWH_MINI_USER); //从session中取出openid
注意:也可以使用: HttpSession session=request.getSession();
2.sessionId作为不同的缓存的key或标识符。
//从请求的参数中取出sessionId
String sessionId=paramJson.getString("sessionId");
//检查验证码是否正确
String code = stringRedisTemplate.opsForValue().get(Constant.SESSIONID_PREFIX + sessionId);
Cookie
- 从 Cookie 中获取 key对应的value:
public static String getCookie(HttpServletRequest request, String key) {
String value = "";
Cookie[] cookies = request.getCookies();
if (cookies == null) {
return value;
}
for (Cookie c : cookies) {
if (key.equals(c.getName())) {
return c.getValue();
}
}
return value;
}
编码/解码
1.编码:
如果 url或者 cookie中,有汉字或者特殊符号,需要encode之后才能调用。
String enUrl = URLDecoder.encode(url,"UTF-8");
2.解码:
同样的,获取到url或者 cookie后,需要dncode之后才能拿到真正的数据。
String deUrl = URLDecoder.decode(url,"UTF-8");
常见的比如sessionId可能存在特殊字符,就可以使用URLDecoder进行处理。