首页 > 其他分享 >用户登录实例02

用户登录实例02

时间:2022-10-23 21:14:05浏览次数:88  
标签:02 return String 登录 uname 实例 import com public

分层思想+mybatis相关的集成 - yuanse - 博客园 (cnblogs.com)

test6602

先把一些固定的配置文件先导入进来,比如说像mybatis-config.xml、mysql.properties等(自己根据需要修改)

1.UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"-->
<!--         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"-->
<!--         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"-->
<!--         version="4.0">-->
<!--</web-app>-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:命名空间-->
<mapper namespace = "com.xxxx.mapper.UserMapper">
    <!--  id:对应Dao层接口方法名 paraterType:指定输入参数类型  -->
    <!--  userGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中-->
    <select id="queryUserByName" parameterType="String" resultType="com.xxxx.entity.User">
        select * from tb_user where uname = #{uname}
    </select>
</mapper>

2.UserMapper.java

package com.xxxx.mapper;

import com.xxxx.entity.User;

/**
 *用户接口类
 */
public interface UserMapper {
    public User queryUserByName(String uname);
}

3.GetSqlSession.java

package com.xxxx.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;

public class GetSqlSession {
    /**
     * 获取SqlSession对象
     */
    public static SqlSession createSqlSession(){
        SqlSessionFactory sqlSessionFactory=null;
        InputStream input=null;
        SqlSession session=null;
        try{
            //获取mybatis的环境配置文件  注意路径
            String resource = "mybatis-config.xml";
            //以流的方式获取resource(mybatis的环境配置文件)
            input = Resources.getResourceAsStream(resource);
            //创建会话工厂
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);
            //通过工厂得到SqlSession
            session = sqlSessionFactory.openSession();
            return session;
        }catch(IOException e){
            e.printStackTrace();
            return null;
        }
    }

    //测试:能出结果,就配置完成了
//    public static void main(String[] args) {
//        System.out.println(createSqlSession());
//    }

}

4.mybatis-config.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
    properties 标签中的配置可以供整个配置文件使用,在任何位置都可以引入其中配置的值。
    properties 标签可以通过子标签 property 标签来配置一些子元素信息,也可以配置外部的动态文件。
-->
    <properties resource="mysql.properties"/>
    <!--  也可以配置 url,但是 url和resource只能存在一个  -->
    <!--  类型别名  -->
<!--    <typeAliases>-->
<!--        <typeAlias type="com.xxxx.entity.User" alias="User"/>-->
<!--    </typeAliases>-->

    <!--  对事物的管理和连接池的配置  -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

<!--mappers映射器-->
    <mappers>
         <!--映射文件方式1.一个一个的配置-->
    <!--    <mapper resource="com/xxxx/mapper/UserMapper.xml"/>-->
    <!--    <mapper class="com.xxxx.mapper.UserMapper"/>-->

         <!--映射文件方式2.自动扫描包内的Mapper接口和配置文件-->
        <package name="com.xxxx.mapper"/>
    </mappers>
</configuration>

5.mysql.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/course?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8
username=root
password=123456

6.Test.java(可要可不要,用来测试)

package com.xxxx.test;

import com.xxxx.entity.User;
import com.xxxx.mapper.UserMapper;
import com.xxxx.util.GetSqlSession;
import org.apache.ibatis.session.SqlSession;

public class Test {
    public static void main(String[] args) {
        //获取 SqlSession对象
        SqlSession session = GetSqlSession.createSqlSession();
        //得到对应的Mapper
        UserMapper userMapper = session.getMapper(UserMapper.class);
        //调用方法,返回用户对象
        User user = userMapper.queryUserByName("admin");
        System.out.println(user);
    }
}

7.StringUtil.java(因为经常要判断字符串是否为空)

package com.xxxx.util;

/**
 * 字符串工具类
 */
public class StringUtil {
    //判断字符串是否为空注意:要写static
    public static boolean isEmpty(String str){
        if(str==null||"".equals(str.trim())){
            return true;
        }
        return false;
    }
}

8.User.java(实体类)

package com.xxxx.entity;

/**
 * 用户实体类
 */
public class User {
    private Integer uid;//用户编号
    private String uname;//用户名字
    private String upwd;//用户密码
    private Integer uage;//用户年龄

    public User(Integer uid, String uname, String upwd, Integer uage) {
        this.uid = uid;
        this.uname = uname;
        this.upwd = upwd;
        this.uage = uage;
    }

    public User() {
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpwd() {
        return upwd;
    }

    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }

    public Integer getUage() {
        return uage;
    }

    public void setUage(Integer uage) {
        this.uage = uage;
    }
}

9.MessageModel.java(消息模型实体类)

package com.xxxx.entity.vo;

/**
 * 消息模型对象(做数据响应的)
 * 状态码:
 *      1=成功 0=失败
 *  提示信息:
 *      字符串
 *  回显数据:
 *      object对象
 */
public class MessageModel {
    private Integer code = 1;//状态码默认
    private String msg = "成功";//提示信息
    private Object object;//回显对象()

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getObject() {
        return object;
    }

    public void setObject(Object object) {
        this.object = object;
    }
}

10.UserServlet.java

package com.xxxx.controller;

import com.xxxx.entity.vo.MessageModel;
import com.xxxx.service.UserService;

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 UserServlet extends HttpServlet {
    //实例化UserService对象
    private UserService userService = new UserService();
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取jsp表单信息 1.接收参数
        String uname = request.getParameter("uname");
        String upwd = request.getParameter("upwd");
        //2.调用Service层方法,返回消息模型对象
        MessageModel messageModel = userService.userlogin(uname,upwd);
        //3.判断消息模型的状态码
        if(messageModel.getCode()==1){
            //成功:将消息模型中的用户消息设置到session作用域中,重定向跳转到index.jsp
            request.getSession().setAttribute("user",messageModel.getObject());
            //重定向
            response.sendRedirect("index.jsp");
        }else{
            //将整个消息模型设置到request作用域中,请求转发到login.jsp中
            request.setAttribute("messageModel",messageModel);
            request.getRequestDispatcher("login.jsp").forward(request,response);
        }
    }
}

11.UserService.java

package com.xxxx.service;

import com.xxxx.entity.User;
import com.xxxx.entity.vo.MessageModel;
import com.xxxx.mapper.UserMapper;
import com.xxxx.util.GetSqlSession;
import com.xxxx.util.StringUtil;
import org.apache.ibatis.session.SqlSession;

/**
 * 业务逻辑
 */
public class UserService {
    public MessageModel userlogin(String uname,String upwd) {
        MessageModel messageModel = new MessageModel();
        //设置回显数据
        User u = new User();
        u.setUname(uname);
        u.setUpwd(upwd);
        messageModel.setObject(u);

        //1.参数的非空判断(建议写个工具类,因为要经常调用)
        if(StringUtil.isEmpty(uname)||StringUtil.isEmpty(upwd)){
            //设置状态码等信息
            messageModel.setCode(0);
            messageModel.setMsg("用户姓名和密码不能为空");
            return messageModel;
        }
        //2.调用dao层的查询方法,通过用户名查询用户对象
        SqlSession session = GetSqlSession.createSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user = userMapper.queryUserByName(uname);
        //3.判断用户对象是否为空
        if(user==null){
            messageModel.setCode(0);
            messageModel.setMsg("用户不存在");
            return messageModel;
        }
        //4.比较密码
        if(!upwd.equals(user.getUpwd())){
            messageModel.setCode(0);
            messageModel.setMsg("用户密码不正确");
            return messageModel;
        }
        //5.如果走到这一步,就说明前面都没有错,登录成功->将用户信息设置到消息模型中
        messageModel.setObject(user);
        return messageModel;
    }
}

12.login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>

<div align="center">
    <form method="post" action="loginServlet" id="loginForm" >
        姓名:<input type="text" name="uname" id="uname" value="${messageModel.object.uname}"><br>
        密码:<input type="password" name="upwd" id="upwd" value="${messageModel.object.upwd}"><br>
        <span id="msg" style="font-size: 12px;color: red">${messageModel.msg}</span><br>
        <button type="button" id="loginBtn">登录</button>
        <button type="button">注册</button><br>
    </form>
</div>
</body>
<script type="text/javascript" src="js/jquery-3.6.1.js"></script>
<script type="text/javascript">
    $("#loginBtn").click(function(){
        var uname=$("#uname").val();
        var upwd=$("#upwd").val();
        if(isEmpty(uname)){
            $("#msg").html("用户姓名不能为空");
            return;
        }
        if(isEmpty(upwd)){
            $("#msg").html("用户密码不能为空");
            return;
        }
        $("#loginForm").submit();
        }
    );
    function isEmpty(str){
        if(str==null||str.trim()==""){
            return true;
        }
        return false;
    }
</script>
</html>

13.index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <h2>欢迎${user.uname}登录成功</h2>
  </body>
</html>

 

标签:02,return,String,登录,uname,实例,import,com,public
From: https://www.cnblogs.com/hmy22466/p/16819519.html

相关文章