发表于: 2017-09-23 22:27:17
2 1445
今天完成的事情:完成了任务五的审核提交
在服务器上的部署调试
// 首页 登录页 注册页 跳转
@RequestMapping(value = "/home")
public String index() {
return "home";
}
@RequestMapping(value = "/login")
public String index2() {
return "login";
}
@RequestMapping(value = "/register")
public String index3() {
return "register";
}
@RequestMapping(value = "/eregister")
public String index4(HttpServletRequest request,
HttpServletResponse response, String cookieName) {
System.out.println("tuichh");
Cookie[] cookie = request.getCookies();
System.out.println(cookie);
for (int i = 0; i < cookie.length; i++) {
System.out.println("1");
if (cookie[i].getName().equals("token")){
System.out.println("2");
// CookieUtil.deleteCookie(response, cookie[i]);
cookie[i].setMaxAge(0);
response.addCookie(cookie[i]);
return "eregister";}
else{
}
}
return"home";
}
@RequestMapping(value = "/job")
public String index5() {
return "job";
}
@RequestMapping(value = "/u/job")
public String index6() {
return "job2";
}
//接口注入 切记一个注解只能作用一个
@Autowired
private LoginService loginservice;
//注册页面 控制器
@RequestMapping(value = "/doregister")
public String doRegister(ModelMap model, User user) throws UnsupportedEncodingException {
logger.info(user.toString() + "------------------------");
if (loginservice.checkUser(user.getUsername())) {
/* return "usernameError";*/
model.addAttribute("info", "当前用户名已注册 请更换用户名");
return "register";
} else {
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = format.format(date);
System.out.println(time);
loginservice.insertUser(user);
model.addAttribute("info", "恭喜您注册成功 请重新登陆");
return "login";
}
}
//登录页面
@RequestMapping(value = "/dologin", method = RequestMethod.POST)
public String doLogin(ModelMap model, HttpServletRequest request, HttpServletResponse response, User user) throws UnsupportedEncodingException {
if (!loginservice.checkUserPassword(user)) {
model.addAttribute("info", "用户名密码错误");
/* try {
response.sendRedirect("login");
} catch (IOException e) {
e.printStackTrace();
}*/
return "login";
} else {
loginservice.loginSuccess(user, response);
/* try {
response.sendRedirect("/home");
} catch (IOException e) {
e.printStackTrace();
}*/
return "home";
}
//判断当前账号是否注册
public Boolean checkUser(String username) {
User user = (User) loginDAO.getUserByUsername(username);
return user != null;
}
//登录时判断密码是否正确
public Boolean checkUserPassword(User user){
System.out.println( user);
User userDb = loginDAO.getUserByUsername(user.getUsername());
System.out.println(userDb);
if (userDb!=null) {
System.out.println("判断");
String a = userDb.getPassword();
System.out.println(a);
String b = Md5Util.getMd5(user.getPassword()+"nicai");
System.out.println(b);
return a.equals(b);
}
return false;
}
// 注册输入账号密码 MD5加盐 放入数据库
public Boolean insertUser(User user) {
logger.debug("service----------------user:" + user.toString());
User md5User = new User();
String sault = "nicai";
md5User.setPassword(Md5Util.getMd5(user.getPassword() + sault));
md5User.setUsername(user.getUsername());
Date date=new Date();
/* System.out.println(date);*/
Long time=date.getTime()/1000;
md5User.setCreate_at(time);
System.out.println(time);
logger.info(md5User.toString() + "kankan");
int i = loginDAO.insertUser(md5User);
return true;
}
public User select(int id){
return loginDAO.select(id);
}
//登陆成功后
public void loginSuccess(User user, HttpServletResponse response){
//获取登陆时间
long loginTime = System.currentTimeMillis();
System.out.println(loginTime);
//更新插入到数据库中
User user2=new User();
user2=loginDAO.select2(user.getUsername());
System.out.println(user2.toString()+1);
user.setId(user2.getId());
user.setPassword(user2.getPassword());
user.setUpdate_at(loginTime);
user.setCreate_at(user2.getCreate_at());
loginDAO.updateLoginTime(user);
System.out.println(user.toString()+2);
//把用户id+=+时间 放在一起 然后加密
String str = user.getId()+"="+loginTime;
System.out.println(str);
// Base64Util.encodeData(str);
byte[] result = Des.encrype( str.getBytes() ,"12121212");
//把加密的字节转换为16进制
String results= StrConvertUtil.byteArrToHexStr(result);
Cookie cookie = new Cookie("token",results);
cookie.setMaxAge(60*60*24*2);//保留2天
// cookie.setMaxAge(0);
response.addCookie(cookie);
明天计划的事情:任务六
遇到的问题:
本地用的tomcat 服务器用的resin 这两个默认的servlet名字不一样 改过来
Resin 自带的 默认Servlet的名字 -- "resin-file"
部署到服务器上退出登录的功能 用不了 看日志cookie未能删除
检查代码
public static void deleteCookie(HttpServletResponse response, Cookie cookie){
if (cookie != null){
cookie.setPath("/");
cookie.setMaxAge(0);
cookie.setValue(null);
}
response.addCookie(cookie);
}
调用的自己写的工具类 路径设置的有问题 直接改为使用自带的方法 不在调用工具类
public interface HttpServletRequest extends ServletRequest {
String BASIC_AUTH = "BASIC";
String FORM_AUTH = "FORM";
String CLIENT_CERT_AUTH = "CLIENT_CERT";
String DIGEST_AUTH = "DIGEST";
String getAuthType();
Cookie[] getCookies();
这个HttpServlrtRequest可以先声明cookie【】
public Cookie(String name, String value) {
if(this.isToken(name) && !name.equalsIgnoreCase("Comment") && !name.equalsIgnoreCase("Discard") && !name.equalsIgnoreCase("Domain") && !name.equalsIgnoreCase("Expires") && !name.equalsIgnoreCase("Max-Age") && !name.equalsIgnoreCase("Path") && !name.equalsIgnoreCase("Secure") && !name.equalsIgnoreCase("Version") && !name.startsWith("$")) {
this.name = name;
this.value = value;
} else {
String errMsg = lStrings.getString("err.cookie_name_is_token");
Object[] errArgs = new Object[]{name};
errMsg = MessageFormat.format(errMsg, errArgs);
throw new IllegalArgumentException(errMsg);
}
}
public void setComment(String purpose) {
this.comment = purpose;
}
public String getComment() {
return this.comment;
}
public void setDomain(String pattern) {
this.domain = pattern.toLowerCase();
}
public String getDomain() {
return this.domain;
}
public void setMaxAge(int expiry) {
this.maxAge = expiry;
}
public int getMaxAge() {
return this.maxAge;
}
public void setPath(String uri) {
this.path = uri;
}
public String getPath() {
return this.path;
}
public void setSecure(boolean flag) {
this.secure = flag;
}
public boolean getSecure() {
return this.secure;
}
public String getName() {
return this.name;
}
public void setValue(String newValue) {
this.value = newValue;
}
public String getValue() {
return this.value;
}
public int getVersion() {
return this.version;
}
public void setVersion(int v) {
this.version = v;
}
而Cookie 里面自带了这些方法
收获:对拦截器有了跟深入的理解
可以不只判断真假 比如假的话返回一个空对象 真的话返回包含信息的对象 再去判断这个对象
评论