发表于: 2017-07-25 22:54:04
2 943
今天完成的事:
学习Cookie的生成和内容提取,修改原先的代码,贴一下效果图
进入主页右上角是登录和注册
这时点击职业会弹出 登录/注册 页面,注册就不贴了之前贴过了
点击登录
点击返回主页
然后点击凡尘个人信息,没写
然后点击职业
为了便于测试,cookie的生存时间设置为60秒所以60秒过后cookie就会失效,就需要重新登录
public static void addCookie(HttpServletResponse response,String name,String value){
Cookie cookie = new Cookie(name,value);
// 代表所有页面都可以使用该Cookie
cookie.setPath("/");
// 存活时间
cookie.setMaxAge(60);
response.addCookie(cookie);
}
放一下控制器类
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getAll(HttpServletResponse response,HttpServletRequest request,Model model) throws Exception {
List<Category> cs = categoryMapper.getAll();
List<Student> s = categoryMapper.getPp();
Cookie cokLoginName = CookieUtil.getCookieByName(request, "secretName");
Cookie cokLoginDate = CookieUtil.getCookieByName(request, "secretDate");
if (cokLoginDate!=null&&cokLoginName!=null){
String secretName = cokLoginName.getValue();
String secretDate = cokLoginDate.getValue();
String secretKey = "12345678";
String userName = DesUtil.decryption(secretName, secretKey);
String loginDate = DesUtil.decryption(secretDate, secretKey);
model.addAttribute("username",index+userName+end);
model.addAttribute("reg_quit",quit);
return "index";
}
int a = 0;
for (Student student : s) {
a = a + student.getPp_number();
}
model.addAttribute("s", a);
model.addAttribute("cs", cs);
model.addAttribute("username",denglu);
model.addAttribute("reg_quit",reg);
return "index";
}
@RequestMapping(value = "/profession", method = RequestMethod.GET)
public String goM() {
return "profession";
}
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register() {
return "register";
}
//注册
@RequestMapping(value = "/ok", method = RequestMethod.POST)
public String ok(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String email = request.getParameter("email");
String password = request.getParameter("password");
if (categoryMapper.getMP(email) != null) {
Register register = categoryMapper.getMP(email);
if (register.getUsername().equals(username)) {
model.addAttribute("name_error", name_error);
return "register";
}
model.addAttribute("email_error", email_error);
return "register";
}
Register register = new Register();
register.setUsername(username);
register.setEmail(email);
register.setPassword(password);
categoryMapper.register(register);
model.addAttribute("name", username);
return "ok";
}
//登录
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(HttpServletRequest request, HttpServletResponse response, Model model) throws IOException, ServletException, NullPointerException {
String key = "12345678";
String email = request.getParameter("email");
String password = request.getParameter("password");
//设置日期格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
try {
//获取email相对的对象
Register reg = categoryMapper.getMP(email);
//密码相同则添加Cookie
if (reg.getPassword().equals(password)) {
//加密当前时间
String value = DesUtil.encryption(df.format(new Date()), key);
//加密用户名
String name = DesUtil.encryption(reg.getUsername(), key);
// 添加Cookie
CookieUtil.addCookie(response, "secretName", name);
CookieUtil.addCookie(response, "secretDate", value);
//发送成功信息
model.addAttribute("success", success);
return "ok";
} else {
model.addAttribute("failure", failure);
return "register";
}
} catch (NullPointerException e) {
model.addAttribute("failure", failure);
return "register";
} catch (Exception e) {
System.out.println("登录出错了,加密出错");
return "register";
}
}
@RequestMapping(value = "/quit",method = RequestMethod.GET)
public String quit(){
return "none";
}
}
拦截器类
public class LoginInterceptor implements HandlerInterceptor {
/**拦截处理程序的执行,在HandlerMapping调用之后,但在HandlerAdapter调用之前*/
public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
System.out.println("启动拦截器,判断是否放行");
/**直接获取cookie,有就判断是否匹配,没有就跳转到登陆页面*/
Cookie cokLoginName = CookieUtil.getCookieByName(request, "secretName");
Cookie cokLoginDate = CookieUtil.getCookieByName(request, "secretDate");
/**如果Cookie不为空*/
if (cokLoginName != null && cokLoginDate != null && cokLoginName.getValue() != null && cokLoginDate.getValue() != null) {
/**获取两个Cookie的具体内容*/
String secretName = cokLoginName.getValue();
String secretDate = cokLoginDate.getValue();
/**解密*/
String secretKey = "12345678";
String userName = DesUtil.decryption(secretName, secretKey);
String loginDate = DesUtil.decryption(secretDate, secretKey);
/**如果不为null说明解密成功是cookie*/
boolean result; // 判断 cookie是否匹配
if (userName != "" && loginDate != "") {
result = true;
}
else {
response.sendRedirect("register");
result = false;
}
return result;
} // 获取不到浏览器cookie则跳转到登陆页面
else {
response.sendRedirect("register");
return false;
}
}
/**拦截处理程序的执行,在HandlerAdaoter调用之后,但在DispatcherServlet呈现视图之前*/
public void postHandle(HttpServletRequest request, HttpServletResponse response,Object handler, ModelAndView modelAndView) throws Exception {}
/**请求处理完成后的回调,即在视图渲染之后,可用于清理资源*/
public void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {}
}
Cookie类
public class CookieUtil {
// 接口方式设置cookie
public static void addCookie(HttpServletResponse response,String name,String value){
Cookie cookie = new Cookie(name,value);
// 代表所有页面都可以使用该Cookie
cookie.setPath("/");
// 存活时间
cookie.setMaxAge(60);
response.addCookie(cookie);
}
// 获取cookie
public static Cookie getCookieByName(HttpServletRequest request,String name){
// 拿到cookie的内容
Map<String,Cookie> cookieMap = ReadCookieMap(request);
// 拿到cookie的名字
if(cookieMap.containsKey(name)){
Cookie cookie = (Cookie)cookieMap.get(name);
return cookie;
}else{
return null;
}
}
//将cookie封装到Map(非接口)
private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){
Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
Cookie[] cookies = request.getCookies();
if(null!=cookies){
for(Cookie cookie : cookies){cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
}
}
源码有需要的留邮箱
服务器不知道怎么回事被暂停了,正在问淘宝卖家,下次不在他家买了
遇到的困难:
设置cookie遇到点问题,name和value我还以为前面写用户名后面写时间,后来一直抛异常,因为设置了try catch所以直接找到出问题的地方并解决
收获:
学会设置cookie,复习了一下tiles
明天的计划:
学习Task6
评论