eladmin后台管理系统(后端)——登录请求的实现

1.数据库服务器端口的配置

server.port=8888
spring.datasource.url=jdbc:mysql://localhost:3306/eldmin?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password='1019'
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

2.根据字段创建bean对象,可使用注解省略属性与get、set方法

public class Admin implements Serializable {
    /*主键*/
    private Integer id;
    /*账号*/
    private String name;
    /*密码*/
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

3.创建数据库层

@Repository
public interface AdminMapper {
    /**
     *验证密码是否正确
     */
    public int verifyPassword(String username,String password);
}

4.配置mapper对应的xml文件

<?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-->
<mapper namespace="com.javaclimb.music.dao.AdminMapper">
    <!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->
    <!-- id:设置ResultMap的id -->
    <resultMap id="BaseResultMap" type="com.javaclimb.music.domain.Admin" >
        <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
        <!-- property:主键在pojo中的属性名 -->
        <!-- column:主键在数据库中的列名 -->
        <!-- jdbcType数据库里面的字段类型 可以不写-->
        <id column="id" jdbcType="INTEGER" property="id"/>
        <!-- 定义普通属性 -->
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="password" jdbcType="VARCHAR" property="password"/>

        <!-- association :配置一对一属性 -->
        <!-- property:order里面的User属性名 -->
        <!-- javaType:属性类型 -->
        <!--        <association property="user" javaType="user">-->
        <!--            &lt;!&ndash; id:声明主键,表示user_id是关联查询对象的唯一标识&ndash;&gt;-->
        <!--            <id property="id" column="user_id" />-->
        <!--            <result property="username" column="username" />-->
        <!--            <result property="address" column="address" />-->
        <!--        </association>-->
    </resultMap>


    <!--  传入单个参数:-->
    <!--    基本类型:取值 #{随便写}-->
    <!--  传入多个参数:-->
    <!--    取值: #{参数名} 无效-->
    <!--    可用: 0,1参数的索引取值-->
    <!--    只要传入了多个参数 会自动将其封装在一个map中 封装时使用的key就是参数的索引和标识-->
    <!--    Map<String,Object>map=new HashMap<>();\-->
    <!--    map.put("1",传入的值)-->
    <!--  我们可以告诉mybatis,封装参数map的时候别乱来,使用我们指定的key-->
    <!--  在传入参数前加上 @Para("id")Integer id 为参数指定key-->
    <!--    传入pojo:-->
    <!--      取值:#{pojo属性名}-->
    <!--    传入map:-->
    <!--      取值:#{key}-->
    <!--    多级封装取值-->
    <!--    method(@Param("id") Integer id,String empName,Employee employee);-->
    <!--    #{param3.email} 取出employee中的email-->
    <select id="verifyPassword" resultType="java.lang.Integer">
        select count(*) from admin where name=#{0} and password=#{1}
    </select>
</mapper>

5.创建service接口

/**
 * 管理员service接口
 */
public interface AdminService {

    /**
     *验证密码是否正确
     */
    public boolean verifyPassword(String username,String password);
}

6.创建service接口的实现类

/**
 * 管理员service实现类
 */
@Service
public class AdminServiceImpl implements AdminService {

    //自动装配
    @Autowired
    private AdminMapper adminMapper;

    /**
     * 验证密码是否正确
     *
     * @param username
     * @param password
     */
    @Override
    public boolean verifyPassword(String username, String password) {
        return adminMapper.verifyPassword(username,password)>0;
    }
}

7.创建controller层

@RestController
//@ResponseBody
    //@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
    //注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
//@Controller 表明是一个Controller

public class AdminController {

    //由于接口存在实现类 会找到实现类
    @Autowired
    private AdminService adminService;

    public Object loginStatus(HttpServletRequest request, HttpSession session){
        //创建Json对象 使用alibaba.fastjson
        JSONObject jsonObject = new JSONObject();
        //取出参数
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        //核对账号密码
        boolean flag = adminService.verifyPassword(name, password);
        if (flag){
            jsonObject.put(Consts.MSG,"登录成功");
            jsonObject.put(Consts.CODE,1);
            //将登录成功的用户名保存到域中
            session.setAttribute(Consts.NAME,name);
            //返回json对象
            return jsonObject;
        }
        //核对失败
        jsonObject.put(Consts.CODE,0);
        jsonObject.put(Consts.MSG,"用户名或密码错误");
        return jsonObject;
    }
}
上一篇:JSON格式数据解析看这一个就足够了


下一篇:java Json 相互转换