发表于: 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相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。





参考资料:

Cookie/Session机制详解


进度: 

         任务开始时间:8.14

         预计完成时间:8.18

         是否有延期风险:有

         突然发现东西好多啊,如果只是用而不了解来龙去脉,例如解决什么问题而出现的,思路是什么。而只是去用的话学习就是去了本来的意义。

禅道:http://task.ptteng.com/zentao/project-task-264.html




PS:大佬看看我的问题吧。



返回列表 返回列表
评论

    分享到