发表于: 2017-03-18 22:41:31
1 1127
今天完成的事情:
1.学习了cookie和session
1)构造Cookie对象
Cookie(java.lang.String name, java.lang.String value)
2)设置cookie
void setPath(java.lang.String uri) :设置cookie的有效访问路径
void setMaxAge(int expiry) : 设置cookie的有效时间
void setValue(java.lang.String newValue) :设置cookie的值
3)发送cookie到浏览器端保存
void response.addCookie(Cookie cookie) : 发送cookie
4)服务器接收cookie
Cookie[] request.getCookies() : 接收cookie
Cookie的原理
1)服务器创建cookie对象,把会话数据存储到cookie对象中。
new Cookie("name","value");
2) 服务器发送cookie信息到浏览器
response.addCookie(cookie);
3)浏览器得到服务器发送的cookie,然后保存在浏览器端。
4)浏览器在下次访问服务器时,会带着cookie信息
5)服务器接收到浏览器带来的cookie信息
request.getCookies();
这些关于cookie的常用的API还是需要知道的。
关于Session:
request.getSession();
setAttrbute("name","会话数据");
getAttribute("会话数据")
2.拦截器:
在springmvc中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的三个方法
- preHandle方法:进入Handler方法之前执行。可以用于身份认证、身份授权。比如如果认证没有通过表示用户没有登陆,需要此方法拦截不再往下执行(return false),否则就放行(return true)。
- postHandle方法:进入Handler方法之后,返回ModelAndView之前执行。可以看到该方法中有个modelAndView的形参。应用场景:从modelAndView出发:将公用的模型数据(比如菜单导航之类的)在这里传到视图,也可以在这里同一指定视图。
- afterCompletion方法:执行Handler完成之后执行。应用场景:统一异常处理,统一日志处理等。
拦截器的配置:
<!-- 配置拦截器 -->
<mvc:interceptors>
<!-- 多个拦截器,按顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/**"/> <!-- 表示拦截所有的url包括子url路径 -->
<bean class="ssm.interceptor.HandlerInterceptor1"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="ssm.interceptor.HandlerInterceptor2"/>
</mvc:interceptor>
</mvc:interceptors>
拦截器有执行顺序:
前面的拦截器放行,后面的拦截器才能执行preHandle。
如果某个拦截器不放行,那么它的另外两个方法就不会背执行。
只要有一个拦截器不放行,所有拦截器的postHandle方法都不会执行,但是只要执行过preHandle并且放行的,就会执行afterCompletion方法。
明天计划的事情:
1.项目除了点错,一直要求去除override注解,好像是因为我项目的包出了问题,不应该在做项目的时候乱动的,好后悔。
2.希望完成任务五
遇到的问题:
项目出错,好几个小时都没整好。师兄救我。
收获:
1.关于昨天的乱码问题,莎莎哥一眼就找出了问题的关键,是URL编码,我的到内容是请求体里面的内容,当信息传递时,由于url不能有中文字符,所以会将其编码。更多的可以详细参考这篇文章:http://www.cnblogs.com/haha12/p/4344992.html
评论