发表于: 2017-11-18 19:21:12
2 749
今天完成的事
使用DES对用户ID和登录时间加密
进行任务五第一步。
直接上代码吧。
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login() {
return "12";
}
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String Login(HttpServletRequest request, HttpServletResponse response,User user,Model model) throws Exception {
//定义一个时间,也是登陆时间,插进这个用户
Long time=System.currentTimeMillis();
user.setLogtime(time);
logger.info("这个人的登录时间是"+time);
//定义加密需要的token
String s= user.getUsername() + "," + "" + time;
//将这个字符串进行加密生成Token
String Token=new DesUtil("gaomingda").encrypt(s);
logger.info("拿到了Token!!!!!!!!!!!!"+Token);
//保存到cookies
Cookie cookie=new Cookie("Token",Token);
//对cookies进行设置
cookie.setMaxAge(60);
cookie.setPath("/");
//添加到请求
response.addCookie(cookie);
logger.info("账户名字"+user.getUsername()+"账户密码"+user.getPassword());
//扔到service层去鉴定账号密码是不是和数据库的对应
Boolean loginResult=userService.compareUser(user.getUsername(),user.getPassword());
logger.info(loginResult);
if(loginResult=true){
return "redirect:/index";//一个登陆成功的页面
}else {
return "redirect:12";
}
遇到的问题
对账户名和密码校对之后,如果和数据库的一样。那就跳转主页,不一样就保留在登陆页面。
写了一段这样的代码来判定。
但是我每一次输入错误的密码还是能跳到主页面。
以为重定向没理解透。。。
崩溃了到半夜1:37分。
发现。。。。。。。。。。。。
这里双等号才是做判断。。。。我写了一个等号等于赋值了。。。。。。
吃了没脑子的亏。
(败家玩意还不报错。)
收获
理解了一下resquest和respose的区别。
也是之前mvc掌握不熟练挖的坑。
Request 和 Response 对象起到了服务器与客户机之间的信息传递作用。Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器。
一、Request对象的五个集合:
QueryString:用以获取客户端附在url地址后的查询字符串中的信息。
例如:stra=Request.QueryString ["strUserld"]
Form:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST)
例如:stra=Request.Form["strUserld"]
Cookies:用以获取客户端的Cookie信息。
例如:stra=Request.Cookies["strUserld"]
ServerVariables:用以获取客户端发出的HTTP请求信息中的头信息及服务器端环境变量信息。
例如:stra=Request.ServerVariables["REMOTE_ADDR"],返回客户端IP地址
ClientCertificate:用以获取客户端的身份验证信息
例如:stra=Request.ClientCertificate["VALIDFORM"],对于要求安全验证的网站,返回有效起始日期。
二、Response对象
Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。Response对象提供了一个数据集合cookie,它用于在客户端写入cookie值。若指定的cookie不存在,则创建它。若存在,则将自动进行更新。结果返回给客户端浏览器。
语法格式:Response.Cookies(CookieName)[(key)|.attribute]=value。这里的CookiesName是指定的Cookie的名称,如果指定了Key,则该Cookie就是一个字典,Attribute属性包括Domain,Expires,HasKeys,Path,Secure。
response的方法:
Write:向客户端发送浏览器能够处理的各种数据,包括:html代码,脚本程序等。
Redirect:response.redirect("url")的作用是在服务器端重定向于另一个网页。
End:用来终止脚本程序。
Clear:要说到Clear方法,就必须提到response的Buffer属性,Buffer属性用来设置服务器端是否将页面先输出到缓冲区。语法为:Response.Buffer=True/False
Flush:当Buffer的值为True时,Flush方法用于将缓冲区中的当前页面内容立刻输出到客户端。
明天的计划
准备小课堂
评论