zoukankan      html  css  js  c++  java
  • IDEA中使用MyBatis进行登录

    今天学习的是使用MyBatis来进行简单的登录,对于本博客内容表示看不懂的大家可以访问https://www.cnblogs.com/yjc1605961523/p/11599294.html 

    上面的地址也是我之前写的关于MyBatis比较基础的知识点

    我也是刚开始学习MyBatis 能写的东西都写在博客里面了

    项目结构大致如图

    第一步先准备相应的工具类

    1.1获取SqlSession核心对象的核心类

    package com.yjc.util;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.InputStream;
    
    public class SqlSessionUtils {
        private static SqlSessionFactory factory;
        private SqlSessionUtils(){}
    
        //生产SqlSession
        public static synchronized SqlSession getSession(){
            //1:获取核心配置文件的字节流
            InputStream is=SqlSessionUtils.class.getResourceAsStream("/mybatis-config.xml");
            //2:将字节流作为参数 构建Session工厂
            factory=new SqlSessionFactoryBuilder().build(is);
            //3:调用工厂对象 生产session
            return factory.openSession();
        }
    }

    1.2用户实体类smbms_user(与数据库中表的字段名类型相同)

    package com.yjc.entity;
    import java.util.Date;
    
       /**
        * smbms_user 实体类
        * @author liangzz
        * @date2019-09-28 03:18 
        */ 
    
    public class SmbmsUser{
         /**主键ID**/
        private Integer id;
         /**用户编码**/
        private String userCode;
         /**用户名称**/
        private String userName;
         /**用户密码**/
        private String userPassword;
         /**性别(1:女、 2:男)**/
        private Integer gender;
         /**出生日期**/
        private Date birthday;
         /**手机**/
        private String phone;
         /**地址**/
        private String address;
         /**用户角色(取自角色表-角色id)**/
        private Integer userRole;
         /**创建者(userId)**/
        private Integer createdBy;
         /**创建时间**/
        private Date creationDate;
         /**更新者(userId)**/
        private Integer modifyBy;
         /**更新时间**/
        private Date modifyDate;
    
        public void setId(Integer id){
            this.id=id;
        }
    
        public Integer getId(){
            return id;
        }
    
        public void setUserCode(String userCode){
            this.userCode=userCode;
        }
    
        public String getUserCode(){
            return userCode;
        }
    
        public void setUserName(String userName){
            this.userName=userName;
        }
    
        public String getUserName(){
            return userName;
        }
    
        public void setUserPassword(String userPassword){
            this.userPassword=userPassword;
        }
    
        public String getUserPassword(){
            return userPassword;
        }
    
        public void setGender(Integer gender){
            this.gender=gender;
        }
    
        public Integer getGender(){
            return gender;
        }
    
        public void setBirthday(Date birthday){
            this.birthday=birthday;
        }
    
        public Date getBirthday(){
            return birthday;
        }
    
        public void setPhone(String phone){
            this.phone=phone;
        }
    
        public String getPhone(){
            return phone;
        }
    
        public void setAddress(String address){
            this.address=address;
        }
    
        public String getAddress(){
            return address;
        }
    
        public void setUserRole(Integer userRole){
            this.userRole=userRole;
        }
    
        public Integer getUserRole(){
            return userRole;
        }
    
        public void setCreatedBy(Integer createdBy){
            this.createdBy=createdBy;
        }
    
        public Integer getCreatedBy(){
            return createdBy;
        }
    
        public void setCreationDate(Date creationDate){
            this.creationDate=creationDate;
        }
    
        public Date getCreationDate(){
            return creationDate;
        }
    
        public void setModifyBy(Integer modifyBy){
            this.modifyBy=modifyBy;
        }
    
        public Integer getModifyBy(){
            return modifyBy;
        }
    
        public void setModifyDate(Date modifyDate){
            this.modifyDate=modifyDate;
        }
    
        public Date getModifyDate(){
            return modifyDate;
        }
    }

    1.3Dao层接口ILoginDao

    package com.yjc.dao;
    
    
    import com.yjc.entity.SmbmsUser;
    import org.apache.ibatis.annotations.Select;
    
    public interface ILoginDao {
        //此处使用注解方式进行查询 xml方式见https://www.cnblogs.com/yjc1605961523/p/11599294.html @Select(
    "SELECT * FROM smbms_user where userCode=#{userCode} and userPassword=#{userPassword}") SmbmsUser loginCheck(SmbmsUser smbmsUser); //登录方法 }


    和Dao层接口名称同名的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 namespace="com.yjc.dao.ILoginDao">  //指向Dao层接口  由于使用的注解方式,xml里不做其他实现,xml其实也可以省略,修改核心配置文件,在此不多说了
    
    </mapper>

    1.4Service层接口

    package com.yjc.service;
    
    import com.yjc.entity.SmbmsUser;
    
    public interface ILoginService {
        SmbmsUser loginCheck(SmbmsUser smbmsUser); //登录方法
    
    }

    1.5Service层实现类

    package com.yjc.service.Impl;
    
    import com.yjc.dao.ILoginDao;
    import com.yjc.entity.SmbmsUser;
    import com.yjc.service.ILoginService;
    import com.yjc.util.SqlSessionUtils;
    import org.apache.ibatis.session.SqlSession;
    
    public class LoginServiceImpl implements ILoginService {
        SqlSession sqlSession= SqlSessionUtils.getSession();  //调用工具栏获取SqlSession对象
        ILoginDao mapper = sqlSession.getMapper(ILoginDao.class);  //映射Dao层接口
        @Override
        public SmbmsUser loginCheck(SmbmsUser smbmsUser) {
            return  mapper.loginCheck(smbmsUser);  //调用Dao层想对应的方法进行实现
        }
    }

    1.6Servlet

    package com.yjc.servlet;
    
    
    import com.yjc.entity.SmbmsUser;
    import com.yjc.service.ILoginService;
    import com.yjc.service.Impl.LoginServiceImpl;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/LoginServlet")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
        }
        ILoginService service=new LoginServiceImpl();
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String usercode = request.getParameter("usercode");  //获取表单提交的数据
            String password = request.getParameter("password");
            usercode=   new String(usercode.getBytes("ISO-8859-1"),"UTF-8");
            password=   new String(password.getBytes("ISO-8859-1"),"UTF-8");
            SmbmsUser smbmsUser=new SmbmsUser();
            smbmsUser.setUserCode(usercode);
            smbmsUser.setUserPassword(password);
            SmbmsUser smbmsUser2 = service.loginCheck(smbmsUser);   //调用service层的方法进行实现
            if (smbmsUser2!=null){
                request.setAttribute("smbmsUser",smbmsUser2);    //返回值不为空代表登录成功 进行转发否则重定向登录页面进行重新登录
                request.getRequestDispatcher("welcome.jsp").forward(request,response);
            }else{
                response.sendRedirect("login.jsp");
            }
    
        }
    }

    1.7JSP页面

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/9/28
      Time: 13:34
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>系统登录 - 超市账单管理系统</title>
        <link rel="stylesheet" href="css/style.css"/>
    </head>
    <body class="login_bg">
    <section class="loginBox">
        <header class="loginHeader">
            <h1>超市账单管理系统</h1>
        </header>
        <section class="loginCont">
            <form class="loginForm" action="LoginServlet">  //表单提交地址为Servlet
                <div class="inputbox">
                    <label for="user">用户名:</label>
                    <input id="user" type="text" name="usercode" placeholder="请输入用户名" required/>
                </div>
                <div class="inputbox">
                    <label for="mima">密码:</label>
                    <input id="mima" type="password" name="password" placeholder="请输入密码" required/>
                </div>
                <div class="subBtn">
                    <input type="submit" value="登录" />
                    <input type="reset" value="重置"/>
                </div>
    
            </form>
        </section>
    </section>
    
    </body>
    </html>

    JSP效果展示

  • 相关阅读:
    google的开源项目总结
    Google Breakpad 完全解析(二) —— Windows前台实现篇
    Google Breakpad 完全解析(一) —— Windows入门篇
    PVS-Studio静态通用分析规则
    C,C++开源项目中的100个Bugs
    一日一点RakNet(3)--介绍
    C++开源跨平台类库集
    如何实现数组的随机排序?
    JavaScript原型,原型链 ? 有什么特点?
    js的基本数据类型
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/11604086.html
Copyright © 2011-2022 走看看