发表于: 2018-06-09 23:28:08
1 923
今天完成的事情:
1.重新写了下获取cookie的方法。
/**
* 这个组件类用于从request中获取本网站的cookie
* 判断条件是cookie的名字
*/
@Component
public class GetCookieFromRequest {
//从request 获得cookie
public Cookie getCookie(HttpServletRequest request){
Cookie[] cookies = request.getCookies(); //从request中获取cookie数组
if (cookies.length < 0){
return null; //如果不存在cookie,返回空值。
}
for (Cookie cookie : cookies){ //遍历
if ("test".equals(cookie.getName())){ //判断条件,相等则返回这个cookie。
return cookie;
}
}
return null; //如果以上没有获得cookie,返回空值。
}
}
拦截器里,通过cookie获得id和时间戳。
boolean result = false;
/**
* 通过GetCookieFromRequest,拿到符合本网站的cookie
*/
Cookie cookie = getCookieFromRequest.getCookie(request); //通过传递request,获得cookie。可能是空值。
if (cookie != null){ //如果返回值cookie非空,会进行下一步操作。
//解析cookie中的value,获得用户的id和时间戳。
String key = "chenxin@#*"; //注册时加密的密钥,此时用来解密。
DESAlgorithm des = new DESAlgorithm(); //用于解密的工具类。
//具体的解密过程
String cookieValue = des.decrypt(cookie.getValue(), key);
//因为value中的id和时间戳是用点符号来连接在一起的,所以需要截取。
String idFromCookie = StringUtils.substringBefore(cookieValue, "."); //截取所用的工具类是,org.apache.commone.lang.StringUtiles提供的方法。
String createdAtFromCookie = StringUtils.substringAfter(cookieValue, ".");
System.out.println("cookie中的id:"+ idFromCookie +"\n" + "cookie中的时间戳:"+createdAtFromCookie);
//判断下解密得到的时间戳,是否正确。
User user = userService.getUserById(Long.valueOf(idFromCookie));
if (user.getCreatedAt() == Long.parseLong(createdAtFromCookie)) result = true;
}
2.mmybatis链表查询
两个表,users和t_courseId,需要用users中的courseId去查询t_course表中相同的courseId。
新建一个实体类,来接收查询结果。
对应的接口。
public interface StudentsDao {
List<Student> getall() throws Exception;
}
对应的mapper文件。
<mapper namespace="com.ptteng.dao.SignUserDao">
<select id="get" resultType="SignedUser">
select users.name, t_course.course, users.createdAt from users,t_course where users.courseId=t_course.courseId;
</select>
</mapper>
查询结果。
明天的计划:
完成任务七
遇到的问题:
没有
收获:
复习了cookie的相关内容。
评论