发表于: 2017-08-30 20:41:13

2 1045


今天完成的事情:

1.在token里面多记录了一个时间。
就是用System.currentTimeMillis();
2.把这个token传到cookie里面:
然后直接在controller里完成
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(HttpServletRequest request, HttpServletResponse response,User4 user,Model model)throws ServletException,IOException {
    try {
        DesUtil des = new DesUtil("Java");
        String str=user.getUser()+user.getLogTime();
        String Token = des.encrypt(str);
        String username=des.decrypt(Token);
        System.out.print(username);
        Cookie cool = new Cookie("Token", Token);
        cool.setMaxAge(60);
        response.addCookie(cool);
        loginType = userService1.login(user.getUser(), user.getPassword());
        System.out.print("这就是Token"+Token);
    } catch (Exception e) {
        e.printStackTrace();
    }
    if(loginType == true)
        return "redirect:/10";
    else
        return "redirect:/1";
第一句是吧token穿进去
第二句是过期时间为一分钟。
第三句是吧这个cook提交上去,一开始忘了提交,所以一直没有cookie。
遇到一个问题。本来是看了一个教程,教程里提供了三个方法,用来创建cookie 检查 和删除
但是上面那句报错,必须要换成下面那句。不知道为什么。是什么版本的问题么,明天我再好好查查
然后就在controller 直接创建cookie了。
3.完成拦截器的设置:
然后还可以直接在mvc:interceptors 定义一个bean 那样的话就是拦截所有的请求
public class SpringMVCInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        Cookie[] cookie = httpServletRequest.getCookies();
        System.out.println("这是拦截器");
        for(int i=0;i<cookie.length;i++){
            if(cookie[i].getName().equals("Token")){
                return  true;
            }
        }
        httpServletResponse.sendRedirect("/1");
        return false;
    }
然后看了一下集合的遍历
Map遍历方式:
 
1、通过获取所有的key按照key来遍历
//Set<Integer> set = map.keySet(); //得到所有key的集合for (Integer in : map.keySet()) {
    String str = map.get(in);//得到每个key多对用value的值}
 
2、通过Map.entrySet使用iterator遍历key和value
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();while (it.hasNext()) {
     Map.Entry<Integer, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
 
3、通过Map.entrySet遍历key和value,推荐,尤其是容量大时
for (Map.Entry<Integer, String> entry : map.entrySet()) {    //Map.entry<Integer,String> 映射项(键-值对)  有几个方法:用上面的名字entry    //entry.getKey() ;entry.getValue(); entry.setValue();    //map.entrySet()  返回此映射中包含的映射关系的 Set视图。
    System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
 
4、通过Map.values()遍历所有的value,但不能遍历key
for (String v : map.values()) {
    System.out.println(
"value= " + v);
}
List遍历方式:
第一种:
for(Iterator iterator = list.iterator();iterator.hasNext();){                    
    int i = (Integer) iterator.next();                   
    System.out.println(i);               
}
第二种:
Iterator iterator = list.iterator();while(iterator.hasNext()){    int i = (Integer) iterator.next();
    System.out.println(i);
}
第三种:
for (Object object : list) { 
    System.out.println(object); 
}
第四种:
for(int i = 0 ;i<list.size();i++) { 
   
int j= (Integer) list.get(i);
    System.out.println(j); 
}
也得好好看看基础。
然后就实现了只有/u的链接能进去,否则就转到登录失败返回的界面
然后看了任务要求才发现要MD5加盐,有个疑问,这里的MD5加盐是要把用户名和密码用md5加密之后放到token里面么还是?
明天计划的事情:

准备小课堂,完成注册功能,完成加盐,完成任务五
遇到的问题:




返回列表 返回列表
评论

    分享到