昨天基本完成登录注册的加密解密
今天准备Cookie的记住用户信息
(参考文档)
http://www.cnblogs.com/muzongyan/archive/2010/08/30/1812552.html
具体实现的代码
if (loginResult != null && Pwd1.equals(pwd) && loginResult.getName().equals(name)) {
//保存到cookies
Cookie cookie=new Cookie("pwd",Pwd1);
Cookie cookie1=new Cookie("name",name);
//对cookies进行设置
cookie.setMaxAge(60);
cookie1.setMaxAge(60);
cookie.setPath("/");
cookie1.setPath("/");
//添加到请求
response.addCookie(cookie);
response.addCookie(cookie1);
mav.addObject("welcome", "欢迎来到修真院学习☺");
mav.setViewName("/index");
return mav;//一个登陆成功的页面 "redirect:/login";

运行用户登录

查看Chrome的Cookie保存的信息

查看一下详细的信息

接下来就是要拦截要区分用户的登录后面才能访问
拦截器的配置

接下里就是访问

自己访问直接访问

现在解决样式加载

再次访问

最终的目的实现了
接下来看看深度思考
1.什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?
session 是一个抽象概念,开发者为了实现中断和继续等操作,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生出“会话状态”,也就是 session 的概念。
而 cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。可以认为是 session 的一种后端无状态实现。
自己的理解session是在创建一个会话中保存的信息,只要这个会话不关闭,session的记录的信息都会被传递到下一个访问的页面,就像我们在淘宝购买东西一样,一件商品,我们可以点开,最开始的基础介绍到详细的参数---->中间一直是session的记录
Cookie是在登录过程中,你保存在浏览器或者是本机的自己的用户信息和浏览记录的信息,是有具体的数据保存下来的.
2.拦截器、过滤器、监听器各有什么作用?
过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。
后面再补一点
开始要哪个登录的权限的区分----->就准备用filter过滤来做,师兄说可以不用,直接判断一下就是
package com.fuwei.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
@WebFilter(filterName="/AuthFilter",urlPatterns="/index"
,initParams={@WebInitParam(name ="EXCLUDED_PAGES" , value = "/index;indexAction")})
public class AuthFilter implements Filter {
private String excludedPages;
private String[] excludedPageArray;
private String excludedPageArray1;
public void init(FilterConfig fConfig) throws ServletException {
excludedPages = fConfig.getInitParameter("EXCLUDED_PAGES");
if (null!=excludedPages && excludedPages.length()!=0) { // 例外页面不为空
excludedPageArray = excludedPages.split(String.valueOf(';'));
System.out.println(excludedPageArray.toString());
excludedPageArray1=excludedPageArray.toString();
}
}
public void destroy() {
System.out.println("+++++++++++++++++++++++++++++++");
this.excludedPages = null;
this.excludedPageArray = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
boolean isExcludedPage = false;
excludedPageArray1=excludedPageArray.toString();
for (String page : excludedPageArray) {// 遍历例外url数组
// 判断当前URL是否与例外页面相同
if (req.getServletPath().substring(1).equals(page)) { // 从第2个字符开始取(把前面的/去掉)
System.out.println(page + ", you're excluded.");
isExcludedPage = true;
break;
}
}
if (isExcludedPage) {//在过滤url之外
chain.doFilter(request, response);
} else {// 不在过滤url之外
}
}}
还有webXML的过滤配置
//针对登录验证才能访问的页面
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.fuwei.filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/index</url-pattern>
</filter-mapping>
但是在实现的时候一直出问题----->后面这里不会用到filter的过滤
我全部还原------->就是开始实现的那个样子
可能后面就开始弄任务6啦----->后面才学到要用那个filter的时候再来好好研究一下
师兄推荐我学一下shiro
先查一下吧
Shiro登录认证(原理:用户提交 用户名和密码 -> shiro 封装令牌
-> realm 通过用户名将密码查询返回
-> shiro 自动去比较查询出密码和用户输入密码是否一致-> 进行登陆控制
登录验证的机制
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
看介绍这个还是感觉不错的令牌的登录----->准备任务6啦
今天完成的事情:Cookie的记录用户登陆的信息还有filter的拦截实现
今天遇到的困难:开始对Cookie不熟悉,不知道怎么弄,后面熟悉啦(找到合适的文档) 感觉还可以,还有那个,资源加载的问题(解决了)
后面发现问题啦------->明天再解决(filter没有实现..>>>只是实现了类似的Url的效果>>>>后面在完善一下)我部署项目的时候才发现

空指针----->找不到地方(断点找到哪里没有值,但是不知道怎么添加获取不到值)

明天的计划:开始任务继续完成filter的过滤实现,最近做的有点,慢慢做了最近亲戚串门,到处走,时间比较零散,就是提前完成,12.00提交,明天好串门
评论