文章目录
拆解功能:
1.访问登陆页面:点击上方“登陆”键跳转
2.登陆:验证用户名、密码,
成功就发放登陆凭证给浏览器
失败就返回登陆页面
图:login-ticket表
1 访问登陆页面
1.1 Conroller
//访问登陆页面
@RequestMapping(path = "/login",method = RequestMethod.GET)
public String getLogin(){
return "/site/login";
}
1.2 login.html
首部复用index的首部,头尾的静态资源改成动态链接
2 登陆
数据访问层:提供业务层所需的相应查询方法
业务层:根据用户传入的用户名查找用户u
将用户u的密码与传入的密码经MD5加密后比较,若一致,更新login-ticket,并返回ticket
若不一致,返回错误信息(所以需要针对login-ticket的dao)
视图层:调用业务层,返回相应页面
2.1 数据访问层
2.1.1 login-ticket实体
类名和表名相对应
1.表里有什么字段,实体类里就增加几个属性与之对应
2.get/set方法
3.toString方法
2.1.2 dao层的Mapper接口
1.注解@Mapper
2.声明增删改查方法
2.1.3 Mapper对应的xml
1.头
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nowcoder.community.dao.LoginMapper">
</mapper>
2.增删改查方法对应的sql语句
<insert id="insertLoginTicket" parameterType="LoginTicket" keyProperty="id">
insert into login_ticket (user_id,ticket,status,expired)
values (#{userId},#{ticket},#{status},#{expired})
</insert>
<select id="selectByTicket" resultType="LoginTicket">
select
id,user_id,ticket,status,expired
from login_ticket
where ticket = #{ticket}
</select>
<update id="updateStatus">
update login_ticket
set status = #{status}
where ticket = #{ticket}
<!-- <if test="ticket!=null"> and 1=1 </if>-->
</update>
2.1.4 测试
@Autowired
private LoginTicketMapper loginTicketMapper;
@Test
public void testLoginTicketMapper(){
//测试插入
// LoginTicket loginTicket = new LoginTicket();
// loginTicket.setUserId(1);
// loginTicket.setTicket("hello");
// loginTicket.setStatus(0);