发表于: 2018-01-22 23:23:40

2 622


今天完成的事情

1.继续理解session和cookie。

一个形象的比喻:

Cookie和Session之间的区别和联系

      假如一个咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数量。想象一下其实也无外乎下面的几种方案:

      1、该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。但是http协议本身是无状态的

      2、发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。也就是cookie。 顾客就相当于浏览器,cookie如何工作,下面会详细讲解

      3、发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。

      由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择

cookie:

session:

2.拦截器 ,过滤器,监听器 。

过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。


暂时只用到了拦截器,过滤器和监听器名字很容易理解,但是还不知道适用场景,之后遇到再总结吧,光看理论不是很好理解。


3.springmvc复习;看着个博客回顾了一遍,

http://www.cnblogs.com/best/tag/Spring%20MVC/

学习了一个简单的jsp传参方法,把代码改了一下。

@RequestMapping(value = "/u/home",method = RequestMethod.POST)
public String uhomepost(HttpServletRequest request,Student student){
int id = FromCookieGetId.getId(request);
       Date day = new Date();
       student.setUpdateTime(day);
       student.setId(id);
       studentMapper.updateByPrimaryKeySelective(student);
       return "hello";
   }
//使用上面的方法代替,自动参数映射可以简化代码。
//    @RequestMapping(value = "/u/home",method = RequestMethod.POST)
//    public String uhomepost(HttpServletRequest request,
//            @RequestParam("name") String name,
//            @RequestParam("score") int score,
//            @RequestParam("status") int status,
//            @RequestParam("classId")int classId
//    ) {
//        int id = FromCookieGetId.getId(request);
//        Date day = new Date();
//        student2.setUpdateTime(day);
//        student2.setId(id);
//        student2.setName(name);
//        student2.setScore(score);
//        student2.setStatus(status);
//        student2.setClassId(classId);
//        studentMapper.updateByPrimaryKeySelective(student2);
//        return "hello";
//    }

4.整理代码。


5.部署到服务器,并测试。


收获

1.理解了cookie和session的区别,cookie实现session的具体过程,并使用session实现了用户登陆校验。


遇到的问题

1.session不像cookie那样具体,理解起来有点困难花费了较多时间才搞清楚。


明天的计划

1.开始任务6.


任务5开始时间:2018.1.20

预计完成时间:2018.1.23

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





返回列表 返回列表
评论

    分享到