发表于: 2017-09-23 22:27:17

2 1444


今天完成的事情:完成了任务五的审核提交

         在服务器上的部署调试

 // 首页 登录页 注册页 跳转
   @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);


明天计划的事情:任务六
遇到的问题:

WEB-INF/web.xml:51: com.caucho.server.webapp.WebApp.addServletMapping():
'default' is an unknown servlet-name. servlet-mapping requires that the
named servlet be defined in a <servlet> configuration before the <servlet-mapping>.
49: </servlet-mapping>
50:
51: <servlet-mapping>
52: <servlet-name>default</servlet-name>
53: <url-pattern>*.css</url-pattern>

Resin/4.0.53Server: 'app-0'

本地用的tomcat 服务器用的resin 这两个默认的servlet名字不一样 改过来

Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default"
Google App Engine 自带的 默认Servlet的名字 -- "_ah_default"

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 里面自带了这些方法



收获:对拦截器有了跟深入的理解

         可以不只判断真假   比如假的话返回一个空对象 真的话返回包含信息的对象 再去判断这个对象


返回列表 返回列表
评论

    分享到