发表于: 2017-09-14 20:43:53

3 691


今天完成的事情:

小课堂

tiles匿名嵌套

<definition name="firstTemplate" extends="baseTemplate" template="/WEB-INF/test2.jsp">
   <put-attribute name="body">
       <definition template="/WEB-INF/test.jsp">
           <put-attribute name="title" value="张三"/>
           <put-attribute name="header" value="/WEB-INF/pages/views/header.jsp"/>
           <put-attribute name="menu" value="/WEB-INF/pages/views/menu.jsp"/>
           <put-attribute name="body" value="/WEB-INF/pages/views/body.jsp"/>
           <put-attribute name="footer" value="/WEB-INF/pages/views/footer.jsp"/>
       </definition>
   </put-attribute>
</definition>

还有ignore属性,默认是false,如果没有在tiles.xml里拼接的话就会报错,改为true就可以了

<tiles:insertAttribute name="footer" ignore="true" />

还有spring4.0已经不支持tiles2了

张鑫大佬讲的jsontaglib

这个和使用@ResponseBody相比更简洁更好用一些

但是@ResponseBody方式的json不经过视图解析器直接显示json,性能更好一点

利用maven的功能导入这个taglib这个jar包

jsp里三个标签

<json:object><json:property><json:array>这个据说可以无限嵌套

然后json里还可以继续套json。。有时间再研究一下

深入理解cookie和session之类的

我理解的cookie就是我们用浏览器首次登陆到服务器上,服务器会生成一条东西给浏览器,然后浏览器就拿着这个东西,下次再访问的时候服务器会对比浏览器带着的这个东西是不是和之前发送的一致,一致的话就不用登陆直接放行了。这个东西就是cookie,当然cookie有周期这么一说,要在有效时间内登陆才可以。

session就是浏览器访问服务器的时候,服务器自己记录你这个浏览器的登录信息,下次再登陆的时候服务器就从session中去找你之前的登录信息。

所以这俩的区别就很明显了,cookie是存在浏览器中的,session是存在服务器中的。cookie的缺点也很明显了,不安全啊。随便来个人把我cookie提取走放到他电脑上就可以登陆我的账号了,多尴尬。session相对来说安全很多,但是它是存在服务器上的啊,如果登陆的信息太多了必然会拖慢服务器的性能。所以一般来说session用于需要安全认证的网站,cookie用在没什么太多要求的网站。

还有一个token,这个呢其实就是一串加密过后的信息,它和cookie差不多。在访问服务器的时候服务器会根据一些东西生成token,然后放到cookie里交给浏览器保存。很明显它比cookie更安全,cookie在这里就是一个存放token的介质。

@RequestMapping(value = "/login",method = RequestMethod.POST)
public void login(@RequestParam("user") String user, @RequestParam("password") String password,
                       HttpServletResponse httpServletResponse) {
String md5= MD5Util.stringToMD5(user+password);
   if(userService.isRightUser(user,md5)){
//待加密内容
       long id=userService.selectByName(user).getId();
       long creatDate=new Date().getTime();
       String str = id+"="+creatDate;
       //加密操作
       byte[] result = DES.encrype(str.getBytes() ,"12345678");
       //把加密的字节转换为16进制
       String resules= TypeUtil.bytesToHexString(result);
       Cookie cookie = new Cookie("token",resules);
       cookie.setMaxAge(60*60*24*7);//保留7天
       httpServletResponse.addCookie(cookie);
       try {
httpServletResponse.sendRedirect("u/job");
       } catch (IOException e) {
e.printStackTrace();
       }
}else {
try {
httpServletResponse.sendRedirect("error");
       } catch (IOException e) {
e.printStackTrace();
       }
}
}

cookie默认是会话级别的,就是只在一次会话中有用。比如我访问之后,cookie是存在浏览器内存里的,关闭浏览器的话cookie就被删除了。使用这个cookie.setMaxAge可以把cookie保存在磁盘上,并给出一个以秒为单位的保存时间。如果为0的话就删除这个cookie。

明天计划的事情:

任务5总结

遇到的问题:

可以写个cookie的工具类,把增加删除cookie什么的写进去,今天时间不够了

收获:

json的两种用法,cookie和session,然后session的用法也可以再加上


返回列表 返回列表
评论

    分享到