发表于: 2017-08-16 23:39:15
1 1043
今天完成的事情:
1.完成登陆接口验证,前后台互交
2. 学习cookie,session
明天计划的事情:
1.把cookie和session相关实现加入代码中
2.学习token,尝试在代码中使用
3.有时间就学习拦截器 过滤器 监听器
遇到的问题:
1. 任务5卡住,不了解cookie具体的作用和他和拦截器的配合:(张帆师兄讲解后明白)
例如访问一个登陆后才能看的页面。
1. 拦截器拦截后检擦cookie是否有相应记录,有则进行验证,通过后进入访问页面,没有就重新定向到指定页面,例如登陆页面。
2. 在登陆页面登陆时,把密码传入controller进行加密后对数据库进行比较,看是否相同
3. 如果相同就把加密后的密码用户名等存入cookie。
4, 设置cookie失效时间,等设置
5. 把cookie发送至客户端。
2. 如果用明文的形式和数据库的未加密的密码进行验证,
相比于加密后的验证,这些加密和验证都是在服务器进行,两者的区别是什么?加密主要是解决什么问题?如果只是和数据库对比,那么加不加密没什么区别啊?
收获:
1. 完成登陆接口验证,前后台互交
//登陆验证
@RequestMapping(value = "/a/login/validate",method = RequestMethod.POST)
public void validate(HttpServletRequest request, HttpServletResponse response, Model model) throws ServletException, IOException{
String user = request.getParameter("username");
String pass = request.getParameter("password");
loggerController.info("user: "+user +"\npass: "+ pass);
Cookie cookie = new Cookie("username","helloweenvsfei");
if(user != "" && pass !="")
{
try{
Student student = studyService.selectUser(user);
loggerController.info("student: "+ student);
if(pass.equals(student.getPass())){
// int i = 1;
// loggerController.info("i: "+i);
OutputStream out = response.getOutputStream();
out.write("<script language='javaScript'> alert('登陆成功');</script>".getBytes());
response.sendRedirect("/a/home");
}
else{
OutputStream out = response.getOutputStream();
out.write("<script language='javaScript'> alert('密码错误');</script>".getBytes());
// response.sendRedirect("/a/login");
response.setHeader("refresh", "0;url=/a/login");
}
}catch (Exception e){
OutputStream out = response.getOutputStream();
out.write("<script language='javaScript'> alert('没有此用户');</script>".getBytes());
response.setHeader("refresh", "0;url=/a/login");
}
}
else {
OutputStream out = response.getOutputStream();
out.write("<script language='javaScript'> alert('用户名密码不能为空');</script>".getBytes());
response.setHeader("refresh", "0;url=/a/login");
}
}
2. 学习cookie,session
cookie解决问题:
HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份
session解决问题:
能够得到上一次访问得到记录,客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
cookie多用于保存用户登录信息,而session则是保存用户的状态
Cookie是一小段的文本信息(4K)。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
参考资料:
进度:
任务开始时间:8.14
预计完成时间:8.18
是否有延期风险:有
突然发现东西好多啊,如果只是用而不了解来龙去脉,例如解决什么问题而出现的,思路是什么。而只是去用的话学习就是去了本来的意义。
禅道:http://task.ptteng.com/zentao/project-task-264.html
PS:大佬看看我的问题吧。
评论