发表于: 2017-06-28 09:46:09
2 1102
今日完成:
基本完成任务5(JSP页面有点问题)
学会打日志
明日计划:
调好页面,开始任务6
收获:
昨天报错cookie里含有非法字符,根据RFC 2109中的规定,在Cookie中只能包含ASCII的编码,不能有中文和斜杠。后来取到加密后的值,发现里边有百分号
2017-06-29 08:37:05,253 [qtp1148735023-27] ERROR [com.ptteng.login.controller.HomeController] - cookie:ezRAsUC9T6R4TEMMDImD2%2F65WbfUZC%2FL%0D%0A
解决Base64报错的方法。使用URLEncoder.encode转换一下就可以了,这个方法其实早在网上找到里,但是不知道怎么实现,今天百度到另外一篇文章才解决掉http://blog.csdn.net/liulong547026741/article/details/11553923
String token = id + "|" + System.currentTimeMillis();
byte[] bytes = DESUtil.desCrypto(token, "12345678");
String results = Base64.encodeBase64String(bytes);
Cookie cookie = new Cookie("token", URLEncoder.encode(results, "UTF-8"));
另外一种解决方法。创建cookie时直接给它一个值,不经过任何转换,可以解决这个bug。把值转换成16进制字符串再赋给cookie应该是更安全点吧。
HttpSession
HttpServletRequest.getSession特性
HttpSession session =request.getSession();
该操作会查询浏览器中是否有session对象,
如果没有就创建一个新的session对象
如果有,就取出session对象
HttpSession session = request.getSession(boolean);
当boolean为true时,和request.getSession()一样
当boolean为false时,只查询,没有查到,返回null
session.setAttribute(“sessionName”,Object)
用来设置session值的,sessionName是名称,object是要保存的对象,session.getAttribute(”sessionName”)用来得到对应名称的session的值,即得到object对象
request.getContextPath() 返回站点的根目录
request.getRealpath("/")得到的是实际的物理路径,也就是你的项目所在服务器中的路径
request.getScheme() 等到的是协议名称,默认是http
request.getServerName() 得到的是在服务器的配置文件中配置的服务器名称 比如:localhost .baidu.com 等等
request.getServerPort() 得到的是服务器的配置文件中配置的端口号 比如 8080等等
使用拦截器拦截后页面变成这样里
问题:
任务五弄了好久,已经怀疑人生
时间去哪了
6.28
08:20-08:50洗漱,吃饭
08:50-09:10整理日报
09:10-09:30昨天的bug突然想到另一种解决办法,不用转换
09:30-12:00写拦截器(未完成)
12:00-12:40吃饭
13:00-14:20休息
14:30-18:10继续写拦截器
18:10-19:00吃饭
19:00-20:00调页面
20:00-20:35师兄讲小课堂
20:40-01:30代码写完了,JSP页面出不来
评论