Spring整合MyBatis:实现登录功能

一、项目搭建

1、创建 web 项目:spring_mybatis

2、搭建项目的目录结构

3、导入 jar 包

  • 注意: 导入 web/WEB-INF/lib 中,一下 jar 包都需要导入

4、创建 Spring 的配置文件

  • 注意:因为是在 Spring 中整合 MyBatis,所以我们这里不需要 MyBatis 的 mybatis.xml 配置文件,只需要 Spring 的 applicationcontext.xml 配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 配置 数据源 bean -->
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/spring"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

    <!-- 配置 工厂 bean -->
    <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"/>
    </bean>

    <!-- 配置 mapper 扫描 bean -->
    <bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactory" ref="factory"/>
        <property name="basePackage" value="com.zer.mapper"/>
    </bean>

    <!-- 配置 业务层 bean -->
    <bean id="us" class="com.zer.service.impl.LoginServiceImpl">
        <property name="userMapper" ref="userMapper"/>
    </bean>


</beans>

 5、配置 web.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_3_1.xsd"
         version="3.1">

    <!--配置 Spring 路径的全局变量-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationcontext.xml</param-value>
    </context-param>

    <!--配置监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

二、数据库的创建

  • 使用 MySQL 数据库
  • 这里用 小海豚 SQLyog 进行创建数据库

1、创建 spring 数据库

  • 注意:这里的字符集要设置成 utf8

2、 创建 t_user 表,并插入数据

CREATE TABLE t_user(
	uid INT(6) PRIMARY KEY AUTO_INCREMENT,
	uname VARCHAR(32),
	pwd VARCHAR(32)
);

INSERT INTO t_user VALUES(DEFAULT,'张三','123');
INSERT INTO t_user VALUES(DEFAULT,'李四','456');

三、书写核心代码

1、创建 t_user 实体类

  • 在 src/com/zer/pojo 中创建
package com.zer.pojo;

/**
 * @author yz
 * @className User
 * @time 2022-04-12 23:09
 * Description:
 */
public class User {
	private Integer uid;
	private String uname;
	private String pwd;

	public User() {
	}

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

	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 getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	@Override
	public String toString() {
		return "User{" +
				"uid=" + uid +
				", uname='" + uname + '\'' +
				", pwd='" + pwd + '\'' +
				'}';
	}
}

2、创建 UserMapper 接口

  • 在 src/com/zer/mapper 下创建接口
  • 注意:因为这里只是一条简单的查询代码 ,所以我这里直接是使用了注解的方式,所以没有书写对应的 mapper.xml 文件
package com.zer.mapper;

import com.zer.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;


public interface UserMapper {
	/**
	 * 查询单个用户
	 *
	 * @param uname 用户名
	 * @param pwd   密码
	 * @return 用户对象
	 */
	@Select("select * from t_user where uname=#{uname} and pwd=#{pwd}")
	User selectOnt(@Param("uname") String uname, @Param("pwd") String pwd);
}

3、创建 LoginService 接口

  • 在 src/com/zer/service 下创建
package com.zer.service;

import com.zer.pojo.User;

public interface LoginService {
	/**
	 * 用户登录Service
	 * @param uname 用户名
	 * @param pwd 密码
	 * @return 用户对象
	 */
	User userLoginService(String uname, String pwd);
}

4、创建 LoginServiceImpl 实现类

  • 在 src/com/zer/service/impl 下创建
package com.zer.service.impl;

import com.zer.mapper.UserMapper;
import com.zer.pojo.User;
import com.zer.service.LoginService;

public class LoginServiceImpl implements LoginService {
	private UserMapper userMapper;

	public UserMapper getUserMapper() {
		return userMapper;
	}

	public void setUserMapper(UserMapper userMapper) {
		this.userMapper = userMapper;
	}

	@Override
	public User userLoginService(String uname, String pwd) {
		User user = userMapper.selectOnt(uname, pwd);

		return user;
	}
}

5、创建 LoginServlet 

  • 在 src/com/zer/controller 下创建
package com.zer.controller;

import com.zer.pojo.User;
import com.zer.service.LoginService;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

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 javax.servlet.http.HttpSession;
import java.io.IOException;


@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
	private LoginService loginService;

	@Override
	public void init() throws ServletException {
		ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
		loginService = (LoginService) ac.getBean("us");
	}

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//设置请求编码格式
		req.setCharacterEncoding("utf-8");
		//设置响应编码格式
		resp.setCharacterEncoding("uth-8");
		resp.setContentType("test/html;charset=utf-8");
		//获取请求数据
		String uname = req.getParameter("uname");
		String pwd = req.getParameter("pwd");
		//获取查询的结果
		User user = loginService.userLoginService(uname, pwd);
		//响应结果
		HttpSession session = req.getSession();
		if (user != null) {
			//登录成功,重定向到首页
			session.setAttribute("user", user);
			resp.sendRedirect(req.getContextPath() + "/index.jsp");
		} else {
			//登录失败,重定向到登录页面
            session.setAttribute("flag","loginFail");
			resp.sendRedirect(req.getContextPath() + "/login.jsp");
		}


	}
}

四、创建 JSP 页面

  • 在 web 目录下创建
  • login.jsp 页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
	<title>登录</title>
</head>
<c:if test="${sessionScope.flag=='loginFail'}">
	<h2 style="color: red; font-size: 20px">登录失败:用户名或密码错误!</h2>
</c:if>
<c:remove var="flag" scope="session"/>
<form action="${pageContext.request.contextPath}/loginServlet" method="post">
	用户名: <input type="text" name="uname" value=""><br>
	密码: <input type="password" name="pwd" value=""><br>
	<input type="submit" value="登录">
</form>
</html>
  • index.jsp 页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
	<head>
		<title>主页</title>
	</head>
	<body>
		<c:if test="${sessionScope.user!=null}">
			${sessionScope.user.uname},欢迎您!!!
		</c:if>
		<c:if test="${sessionScope.user==null}">
			<a href="login.jsp">请先登录</a>
		</c:if>
	</body>
</html>

 五、页面效果

 

 



那么,Spring整合MyBatis,实现登录功能 就已经实现了!

如果各位在搭建的时候遇到什么问题可以留言哈~~~

一起交流~~ 

 

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写BUG的ySir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值