发表于: 2018-01-05 21:47:13
1 562
今日完车
1.session的学习
(1)session(服务器)
* cookie基于客户端,不安全,并且大小和个数的限制。
* session域对象,范围一次会话范围,存个人相关的数据。
* setAttribute(String name, Object value)
* Object getAttribute(String name)
* String getId() 获取seesion的唯一的ID
* void invalidate() 销毁的seesion
* 完成简单的购物车
* 购物车 Map<String,Integer> cart 购物车,把购物车存入seesion中。
* 获取数据
* 判断是否是第一次访问 session.getAttribute("cart");
* 如果第一次访问,cart 创建一个购物车,放入商品的名称和数量
* 如果不是第一次访问,cart!=null
判断是否包含该商品?
* 如果包含,数量拿出来,++,放回去,存入seesion中
* 如果不包含,正常放入到购物车中。存入seesion中
2.继续梳理一下登录页面的思路,还是没有头绪,没有搞明白这个cookie到底要怎么使用。把cookie和session的原理看了一遍了,知道了cookie和session是怎么使用的了。但是还是没有明白,这个用户的身份认证怎么在拦截器里面实现。
3.先不弄这个身份认证的事情了,浪费了好多时间,先把用户登录的实现了再说,再实现加密的功能,再实现用户认证。
(1)建用户表,保存密码(测试用),用户名,盐值,和密码加密后的密文
(2)使用动态SQL写了一个使用用户查询(测试登录功能的逻辑)
<sql id="query_findUser">
<if test="name!=null and name!=''">
and name = '${name}'
</if>
<if test="password!=null">
and password = '${password}'
</if>
</sql>
<select id="selectByUser" parameterType="lujing.pojo.User" resultMap="BaseResultMap">
SELECT * FROM USER
<where>
<include refid="query_findUser"/>
</where>
</select>
遇到问题:没搞清楚#{} 和 ${} 的区别,这里又sql报错。
补一下理论知识。
#{}
表示一个占位符,向占位符输入参数,mybatis自动进行java类型和jdbc类型的转换。
程序员不需要考虑参数的类型,比如:传入字符串,mybatis最终拼接好的sql就是参数两边加单引号。
#{}接收pojo数据,可以使用OGNL解析出pojo的属性值
${}
表示sql的拼接,通过${}接收参数,将参数的内容不加任何修饰拼接在sql中。
${}也可以接收pojo数据,可以使用OGNL解析出pojo的属性值
缺点:不能防止sql注入。
(3)写service层的控制逻辑,定义一些常量。这些常量再页面上也可以使用,直接返回字符串来校验用户认证结果。
public static final String loginSuccess = "登录成功";
public static final String loginNameFail = "用户名或密码错误";
public static final String loginPwdNull = "用户名或密码为空";
public String findUser(User user) {
//判断用户名或者密码是否为空
if(user.getName()==null || user.getPassword() ==null){
return Constant.loginPwdNull;
}
//判断匹配是否成功
User user1 = userMapper.selectByUser(user);
if(null == user1){
return Constant.loginNameFail;
}
//登录成功,生成cookie或者session;
return Constant.loginSuccess;
}
(4)控制层
@RequestMapping("/login")
public String login( User user, ModelMap model) {
String result = userServiceImpl.findUser(user);
if (result.equals(Constant.loginSuccess)) {
return "redirect:/u/joblist";
}
model.addAttribute("result",result);
return "redirect:/loginjsp";
}
直接判读用户登录(明天把用户登录与注册加密的过程写进去)
遇到问题:
1.
为什么model里面东西跑到url里面去了?
2.这里我参考的人家的,使用了modelmap?还不知道model modelandview 的区别,学习一下。
(5)看结果
(6)输入成功,直接跳转
明日计划
1.把注册功能,加密功能,认证功能完善出来。
2.学习一下jwt
遇到问题
1.任务里面写了
收获
弄清楚了登录的逻辑。
评论