日志
1.使用门面模式的slfj,并结合log4j,logback。
2.info、debug、error,要写清楚。
3.使用占位符,如下:
log.info("用户id为: {} ", id);
4.提前判断,提高效率:
if (log.isDebugEnabled()) {
log.debug("Committing JDBC Connection [" + connection + "]");
}
Controller层
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);
}
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);
其他
1.解码:
String eid = URLDecoder.decode(request.getParameter("eid"),"UTF-8");
常见的比如sessionId可能存在特殊字符,就可以使用URLDecoder进行处理。