发表于: 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.任务里面写了

收获

弄清楚了登录的逻辑。



返回列表 返回列表
评论

    分享到