版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Maybeno1314/article/details/82683495
<一> : src/main/sources中的xml文件编写:
1.applicationContext-login-mvc.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.zzxt.spring.mvc.jurisdiction.action"></context:component-scan>
<mvc:annotation-driven />
<mvc:view-controller path="/login" view-name="/views/stu/login.jsp"/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/login/loginInfoPost"/>
<bean class="com.zzxt.spring.mvc.jurisdiction.interceptor.Interceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
2.applicationContext-login.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd ">
<context:component-scan base-package="com.zzxt.spring.mvc.jurisdiction.dao"></context:component-scan>
<context:component-scan base-package="com.zzxt.spring.mvc.jurisdiction.entity"></context:component-scan>
<context:component-scan base-package="com.zzxt.spring.mvc.jurisdiction.interceptor"></context:component-scan>
</beans>
3.sqlMapConfig实现数据库连接与sql语言的编写
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 配置user.xml -->
<mappers>
<mapper resource="/user.xml"/>
</mappers>
</configuration>
4.user.xml 实现dao中的数据库调用的方法, 需要配置到sqlMapConfig.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">
<!-- 接口全类名必须与命名空间形同 sql命令写在xml文件中-->
<mapper namespace="com.zzxt.spring.mvc.jurisdiction.dao.staffInfoDao">
<select id="verifyStaffId" parameterType="String" resultType="String">
select password,locked from t_sys_user where username = #{value}
</select>
<select id="userList" resultType="com.zzxt.spring.mvc.jurisdiction.entity.StaffInfo">
select * from t_sys_user
</select>
<select id="deleteStaffInfo" parameterType="int">
delete from t_sys_user where user_id = #{value}
</select>
</mapper>
<二>pom文件的配置, 所需要配置文件jar包的加载
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zzxt</groupId>
<artifactId>spring.mvc</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spring.mvc Maven Webapp</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring.version>5.0.7.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>net.minidev</groupId>
<artifactId>accessors-smart</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!-- <scope>test</scope> -->
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>spring.mvc</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
<三> login.jsp页面代码(我将css代码与html代码写在一个页面,因为没有配置拦截器对css,js,的拦截设置)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctxPath" value="${pageContext.request.contextPath }"></c:set>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
<style type="text/css">
html{
width: 100%;
height: 100%;
overflow: hidden;
font-style: sans-serif;
}
body{
width: 100%;
height: 100%;
font-family: 'Open Sans',sans-serif;
margin: 0;
background-color: #4A374A;
}
#login{
position: absolute;
top: 50%;
left:50%;
margin: -150px 0 0 -150px;
width: 300px;
height: 300px;
}
#login h1{
color: #fff;
text-shadow:0 0 10px;
letter-spacing: 1px;
text-align: center;
}
h1{
font-size: 2em;
margin: 0.67em 0;
}
input{
width: 278px;
height: 18px;
margin-bottom: 10px;
outline: none;
padding: 10px;
font-size: 13px;
color: #fff;
text-shadow:1px 1px 1px;
border-top: 1px solid #312E3D;
border-left: 1px solid #312E3D;
border-right: 1px solid #312E3D;
border-bottom: 1px solid #56536A;
border-radius: 4px;
background-color: #2D2D3F;
}
.but{
width: 300px;
min-height: 20px;
display: block;
background-color: #4a77d4;
border: 1px solid #3762bc;
color: #fff;
padding: 9px 14px;
font-size: 15px;
line-height: normal;
border-radius: 5px;
margin: 0;
}
</style>
</head>
<body>
<div id="login">
<h1>Login</h1>
<form action="${ctxPath }/login/loginInfoPost" method="post" accept-charset="utf-8"onsubmit="document.charset='utf-8'">
<input type="text" required="required" placeholder="用户名" name="u"></input>
<input type="password" required="required" placeholder="密码" name="p"></input>
<button class="but" type="submit">登录</button>
<a href="${ctxPath }/views/stu/insert.jsp">****新员工注册****</a>
</form>
</div>
</body>
</html>
<四> java代码 :
1.Controller层
包:com.zzxt.spring.mvc.jurisdiction.action
类:LoginController.java
代码:
package com.zzxt.spring.mvc.jurisdiction.action;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.zzxt.spring.mvc.jurisdiction.dao.sqlSession;
import com.zzxt.spring.mvc.jurisdiction.dao.staffInfoDao;
import com.zzxt.spring.mvc.jurisdiction.entity.StaffInfo;
@Controller
@RequestMapping("/login")
public class LoginController {
//创建封装类sqlSession的对象
sqlSession sqlOpen = new sqlSession();
@RequestMapping("/list")
public String staffList(Map<String ,Object> map) {
System.out.println("员工列表");
//链接数据库
SqlSession ss = sqlOpen.sqlConnect();
//获得方法类对象
staffInfoDao si = ss.getMapper(staffInfoDao.class);
//staffInfoDao si = ss.selectList(staffInfoDao.class);
//将员工信息存储在链表中
List<StaffInfo> listStaff = si.userList();
//System.out.println("==si.userList()=="+si.userList());
//System.out.println("====list====" + listStaff);
//利用约定大于协议,进行数据项jsp页面传递
map.put("listStaff",listStaff);
//关闭数据库
ss.close();
//跳转到staff列表页面
return "/views/stu/list.jsp";
}
@RequestMapping(value="/loginInfoPost",method=RequestMethod.POST)
public String loginInfoPost() {
System.out.println("============ 运行到提交页面");
//方法跳转
return "redirect:list";
}
// @RequestMapping("/putList")
// public String putList() {
//
// return "/views/stu/list.jsp";
// }
@RequestMapping("/delete/{user_id}")
public String delete(@PathVariable("user_id") int user_id) {
//链接数据库
SqlSession ss = sqlOpen.sqlConnect();
//获得方法类对象
staffInfoDao si = ss.getMapper(staffInfoDao.class);
System.out.println("====si===" + si);
si.deleteStaffInfo(user_id);
ss.close();
return "redirect:/list";
}
}
2. dao层
包:com.zzxt.spring.mvc.jurisdiction.dao
类:sqlSession.java
package com.zzxt.spring.mvc.jurisdiction.dao;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class sqlSession {
public SqlSession sqlConnect() {
String res = "sqlMapConfig.xml";
System.out.println("==res===" + res);
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(res);
}catch(Exception e) {
e.printStackTrace();
}
//用SqlSessionFactoryBuilder()中的build的方法创建一个创建SqlSession的SqlSessionFactory工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//工厂方法创建session
SqlSession ss = sqlSessionFactory.openSession();
return ss;
}
}
接口:staffInfoDao.java
package com.zzxt.spring.mvc.jurisdiction.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.zzxt.spring.mvc.jurisdiction.entity.StaffInfo;
@Repository
public interface staffInfoDao {
//接口中的方法在user.xml文件中实现
public String verifyStaffId(String userName);
public List<StaffInfo> userList();
public StaffInfo upadateStaffInfo(int user_id);
public void deleteStaffInfo(int user_id);
}
3.entity
包:com.zzxt.spring.mvc.jurisdiction.entity
类:StaffInfo.java //用户信息的get,set方法
package com.zzxt.spring.mvc.jurisdiction.entity;
import org.springframework.stereotype.Component;
@Component
public class StaffInfo {
//用户编号
private String user_id;
//用户名
private String username;
//密码
private String password;
//盐
private String salt;
//真实姓名
private String realname;
//头像,以地址的形式上传
private String avatar;
//手机号
private String phone;
private String email;
private int sex;
//状态,0正常,1,锁
private int locked;
//创建时间
private int ctime;
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt;
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getLocked() {
return locked;
}
public void setLocked(int locked) {
this.locked = locked;
}
public int getCtime() {
return ctime;
}
public void setCtime(int ctime) {
this.ctime = ctime;
}
}
4.interceptor 拦截器
包:com.zzxt.spring.mvc.jurisdiction.interceptor
类:Interceptor.java
package com.zzxt.spring.mvc.jurisdiction.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.ibatis.session.SqlSession;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.zzxt.spring.mvc.jurisdiction.dao.sqlSession;
import com.zzxt.spring.mvc.jurisdiction.dao.staffInfoDao;
@Service
public class Interceptor implements HandlerInterceptor{
sqlSession sqlOpen = new sqlSession();
//拦截登陆
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("====拦截器中=====");
String staffName = request.getParameter("u");
String passwd = request.getParameter("p");
System.out.println("========passwd=======" + passwd);
SqlSession ss = sqlOpen.sqlConnect();
String realPasswd = null;
staffInfoDao si = ss.getMapper( staffInfoDao.class);
try {
realPasswd = si.verifyStaffId(staffName);
}catch(Exception e) {
e.printStackTrace();
}
System.out.println("realPasswd-----" + realPasswd);
ss.close();
//System.out.println("========="+ passwd.equals(realPasswd));
//注意此处的先后顺序,防止出现空指针异常
if(passwd.equals(realPasswd)) {
//request.getRequestDispatcher("/login/list").forward(request, response);
return true;
}else{
request.getRequestDispatcher("/views/stu/login.jsp").forward(request, response);
return false;
}
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView) throws Exception {
//response.sendRedirect("/views/stu/list.jsp");
System.out.println("postHandle");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception {
System.out.println("afterHandle");
}
}