前言
最近在学习SpringBoot,加上之前自学的Java,MySQL数据库的使用,还有一些前端的知识。利用空余的时间写了一个简易的学生管理系统,借鉴了很多大牛的代码,特此感谢。操作系统:Ubantu
软件:IDEA
数据库—两个
- 注册和登陆共用一个数据库
- 学生系统
前端页面
- 登陆页面
- 注册页面
- 功能选择页面
- 学生信息页面
- 学生信息注册和修改页面
- 错误页面
文件目录
依赖文件—pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.baiyulianxi</groupId>
<artifactId>newone</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>newone</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<!--引入jQuery-->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--===============================================-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</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>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置文件–yml和properties
server:
port: 8080
spring:
profiles:
active: dev
---
server:
port: 8081
servlet:
context-path: /crud
spring:
profiles: dev
datasource:
username: root
password: 123456
url: jdbc:mysql://192.168.58.128:3306/baiyu
driver-class-name: com.mysql.cj.jdbc.Driver
# schema:
# - classpath:sql/student.sql
# - classpath:sql/register.sql
initialization-mode: always
jpa:
hibernate:
ddl-auto: update
# jpa:
# hibernate:
# # 更新或者创建数据表结构
# ddl-auto: update
# # 控制台显示SQL
# show-sql: true
---
server:
port: 8082
spring:
profiles: prod
application.properties
spring.thymeleaf.prefix=classpath:/templates/
spring.messages.basename=il8n/login
前端页面
4xx.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ErrorPage</title>
</head>
<body>
<h1>错误页面404</h1>
<h2>错误页面定制</h2>
<h1>status:[[${status}]]</h1>
<h2>timestamp:[[${timestamp}]]</h2>
<h2>message:[[${message}]]</h2>
<h2>exception:[[${exception}]]</h2>
<h2>company:[[${company}]]</h2>
<h2>ext:[[${ext}]]</h2>
</body>
</html>
登陆页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>by的笔记</title>
</head>
<body>
<!--/*@thymesVar id="msg" type="ch"*/-->
<div th:text="${msg}"></div>
<form th:method="post">
<h1 th:text="#{login.tip}">请登录</h1>
<!--/*@thymesVar id="notice" type="ch"*/-->
<div th:if="${notice}!=null">[[${notice}]]</div>
<!--/*@thymesVar id="msg" type="ch"*/-->
<div th:text="${Interceptor}"></div>
<label th:text="#{login.username}">用户名</label>
<input type="text" name = "userName" th:placeholder="请输入">
<br>
<label th:text="#{login.username}">密码</label>
<input type="text" name = "passWord" th:placeholder="请输入">
<br>
<label>
<input type="checkbox" value="remember‐me"/>[[#{login.remember}]]
</label>
<br>
<button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">提交</button>
<button><a th:href="${'/crud/ddd'}" th:text="#{login.register}">注册</a></button>
<p class="mt‐5 mb‐3 text‐muted">@2017‐2018</p>
<a class="btn btn‐sm" th:href="@{/abc(l='zh_CN')}">中文</a>
<a class="btn btn‐sm" th:href="@{/abc(l='en_US')}">English</a>
</form>
</body>
</html>
注册页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>注册</title>
<script>
function ale(){
alert("注册成功!!!")
}
</script>
</head>
<body>
<h1>注册</h1>
<form th:method="post">
<!--/*@thymesVar id="msg" type="ch"*/-->
<div th:if="${msg}!=null" th:text="${msg}"></div>
<!--/*@thymesVar id="notice" type="ch"*/-->
<div th:if="${notice}!=null">[[${notice}]]</div>
<div>账号</div>
<input type="text" name = "accountNumber" th:placeholder="请输入">
<div>密码</div>
<input type="text" name = "accountWord" th:placeholder="请输入">
<div>手机号</div>
<input type="text" name = "phoneNumber" th:placeholder="请输入">
<br>
<button class="btn btn-lg btn-primary btn-block" type="submit" onclick="ale()">提交</button>
</form>
</body>
</html>
学生信息页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>All</title>
<!--显示所有学生信息-->
</head>
<body>
<table class="table table-striped table-sm">
<thead>
<tr>
<th>#</th>
<th>studentName</th>
<th>studentId</th>
<th>studentPhone</th>
<!--<th>department</th>-->
<!--<th>birth</th>-->
</tr>
</thead>
<tbody>
<!--/*@thymesVar id="emps" type="ch"*/-->
<tr th:each="emp:${emps}">
<td th:text="${emp.id}"></td>
<td th:text="${emp.studentName}"></td>
<td th:text="${emp.studentId}"></td>
<td th:text="${emp.studentPhone}"></td>
<!--<td th:text="${emp.gender}==0?'女':'男'"></td>-->
<!--<td th:text="${emp.department.getDepartmentName()}"></td>-->
<!--<td th:text="${#dates.format(emp.birth,'yyyy-MM-dd HH:mm')}"></td>-->
<td>
<a class="btn btn-sm btn-primary" th:href="@{/edit/}+${emp.id}" th:text="${emp!=null}?'修改':'添加'">编辑</a>
<form th:action="@{/edit/}+${emp.id}" method="post">
<input type="hidden" name="_method" value="delete"/>
<button type="submit">删除</button>
</form>
</td>
</tr>
<a href="/crud/OperationChoice">
<button class="btn btn-lg btn-primary btn-block" type="button" href="/crud/OperationChoice">主菜单</button>
</a>
</tbody>
</table>
</body>
</html>
功能选择页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>功能选择</title>
</head>
<body>
<h1>学生系统2.0</h1>
<h2>功能选择</h2>
<a th:href="${'/crud/findall'}"><button type="button">查询所有学生信息</button></a>
<!--<a th:href="${'/crud/select'}"><button>根据条件查询学生信息</button></a>-->
<a th:href="${'/crud/updata'}"><button type="button">添加学生信息</button></a>
</body>
</html>
学生信息修改
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>UpdataStuInfo</title>
<script>
function ale(){
alert("提交成功!!!")
}
</script>
<style>
/*{*/
/*position:absolute;*/
/*top: 30%;*/
/*left: 50%;*/
/*width: 20%;*/
/*text-align: center;*/
/*background: #3bb4f2;*/
/*opacity: 1;*/
/*z-index: 999;*/
/*padding: 5px 0;*/
/*color: white;*/
/*display: none;*/
/*}*/
</style>
</head>
<body>
<form th:action="@{/updata}" th:method="post">
<h1 th:text="${emp!=null}?'修改学生信息':'注册学生信息'">注册学生信息</h1>
<!--需要区分是员工修改还是员工添加-->
<!--发送put请求修改员工数据-->
<!--1.springMVC 中配置HiddenHttpMethodFilter(自动配设置好的)
2.页面创建一个post表单
3.创建一个input项,name="_method";值就是我们指定的请求方式
-->
<input type="hidden" name="_method" value="put" th:if="${emp!=null}"/>
<input type="hidden" name="id" th:if="${emp!=null}" th:value="${emp.id}">
<div th:text="${emp}"></div>
<!--/*@thymesVar id="msg" type="ch"*/-->
<div th:if="${msg}!=null" th:text="${msg}"></div>
<!--/*@thymesVar id="notice" type="ch"*/-->
<div th:if="${notice}!=null">[[${notice}]]</div>
<div>学生姓名</div>
<input type="text" name = "studentName" th:placeholder="请输入" th:value="${emp!=null}?${emp.studentName}">
<div>学生学号</div>
<input type="text" name = "studentId" th:placeholder="请输入" th:value="${emp!=null}?${emp.studentId}">
<div>学生手机号</div>
<input type="text" name = "studentPhone" th:placeholder="请输入" th:value="${emp!=null}?${emp.studentPhone}">
<br>
<button class="btn btn-lg btn-primary btn-block" type="submit" onclick="ale()">提交</button>
<a href="/crud/OperationChoice">
<button class="btn btn-lg btn-primary btn-block" type="button" href="/crud/OperationChoice">返回</button>
</a>
</form>
</body>
</html>
数据库代码
注册
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `register`;
CREATE TABLE `register` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`accountNumber` varchar(255) DEFAULT NULL,
`accountWord` varchar(255) DEFAULT NULL,
`phoneNumber` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
学生信息
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`studentName` varchar(255) DEFAULT NULL,
`studentId` varchar(255) DEFAULT NULL,
`studentPhone` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
后端代码
CheckUser
import com.baiyulianxi.controller.person.studentRegister;
import com.baiyulianxi.jdbcmysql.fourOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CheckUser {
@Autowired
fourOperation fourOperation;
public Boolean checkMethod(String passWord,String userName){
List<studentRegister> userList = fourOperation.findAll("register");
if(userList.size()>0){
for(studentRegister studentRegister:userList){
if(studentRegister.getAccountNumber().equals(userName)&studentRegister.getAccountWord().equals(passWord)){
return true;
}
}
}
return false;
}
}
SpringMvc
package com.baiyulianxi.controller.config;
import com.baiyulianxi.chechuser.CheckUser;
import com.baiyulianxi.controller.person.Person;
import com.baiyulianxi.jdbcmysql.fourOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.nio.file.spi.FileSystemProvider;
import java.text.SimpleDateFormat;
import java.util.Date;
@Controller
public class SpringMVC {
@Autowired
Person person;
@Autowired
fourOperation fourOperation;
@Autowired
CheckUser checkUser;
public String timeSevice(){
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
return sdf.format(d);
}
@GetMapping ("/abc")
public String Hello(Model model){
model.addAttribute("msg", timeSevice());
return "login/baiyu.html";
}
@PostMapping("/abc")
public String Require(Model model,
@RequestParam("passWord") String passWord,
@RequestParam("userName") String userName,
HttpSession session) {
model.addAttribute("msg",timeSevice());
// 用于拦截器的设置
session.setAttribute("loginUser",userName);
if(passWord!=""&&userName!=""){
System.out.println(passWord);
System.out.println(userName);
// 登录验证功能
Boolean aBoolean = checkUser.checkMethod(passWord, userName);
if(aBoolean){
return "StuInfo/OperationChoice.html";
}else{
model.addAttribute("notice","账号或密码不正确");
return "login/baiyu.html";
}
}
else{
model.addAttribute("notice","账户或密码未输入,如果还没注册请注册!!!");
return "login/baiyu.html";
}
}
}
Hellocontroller
package com.baiyulianxi.controller.helloworld;
import com.baiyulianxi.controller.person.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class Hellocontroller {
@Autowired
Person person;
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return person.toString();
}
}
studentRegister
package com.baiyulianxi.controller.person;
public class studentRegister {
private Integer id;
private String accountNumber;
private String accountWord;
private Integer phoneNumber;
@Override
public String toString() {
return id +","+ accountNumber+"," + accountWord+"," + phoneNumber;
}
public studentRegister(Integer id, String accountNumber, String accountWord, Integer phoneNumber){
super();
this.id=id;
this.accountNumber=accountNumber;
this.accountWord=accountWord;
this.phoneNumber=phoneNumber;
}
public studentRegister(){
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
public String getAccountWord() {
return accountWord;
}
public void setAccountWord(String accountWord) {
this.accountWord = accountWord;
}
public Integer getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(Integer phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
StuInfo
package com.baiyulianxi.controller.person;
public class StuInfo {
private Integer id;
private String studentName;
private String studentId;
private String studentPhone;
public StuInfo(Integer id, String studentName, String studentId, String studentPhone) {
this.id = id;
this.studentName = studentName;
this.studentId = studentId;
this.studentPhone = studentPhone;
}
public StuInfo(){
super();
}
@Override
public String toString() {
return "StuInfo{" +
"id=" + id +
", studentName='" + studentName + '\'' +
", studentId='" + studentId + '\'' +
", studentPhone='" + studentPhone + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public String getStudentPhone() {
return studentPhone;
}
public void setStudentPhone(String studentPhone) {
this.studentPhone = studentPhone;
}
}
mymvvConfig
package com.baiyulianxi.controller;
import com.baiyulianxi.localresolver.MyLocaleResolver;
import com.baiyulianxi.loginhandlerinterceptor.LoginHandleInterceptor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import javax.sql.DataSource;
import java.text.SimpleDateFormat;
import java.util.Date;
@Configuration
public class mymvvConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/success/success.html").setViewName("success");
// registry.addViewController("/StuInfo/OperationChoice.html").setViewName("OperationChoice");
}
@Bean
public WebMvcConfigurerAdapter webMvcConfigurerAdapter() {
WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/login").setViewName("/abc");
registry.addViewController("/register").setViewName("/ddd");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// super.addInterceptors(registry);
// 静态资源: *.css,*.js
// Springboot已经做好静态资源映射
// 在做错误页面的时候要将下面这句话屏蔽掉,不然的话他会重视跳转/abc
registry.addInterceptor(new LoginHandleInterceptor()).addPathPatterns("/**").excludePathPatterns("/login","/","/register","/abc");
}
};
return adapter;
}
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
register
package com.baiyulianxi.controller;
import com.baiyulianxi.TimeSleep.TimeSleep;
import com.baiyulianxi.controller.person.studentRegister;
import com.baiyulianxi.jdbcmysql.fourOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@Controller
public class register {
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
fourOperation fourOperation;
@Autowired
TimeSleep timeSleep;
@GetMapping("/ddd")
public String Hello(Model model){
model.addAttribute("msg", "如果还没注册请注册!!!");
return "login/register.html";
}
@PostMapping("/ddd")
public String Require(Model model,
@RequestParam("accountNumber") String accountNumber,
@RequestParam("accountWord") String accountWord,
@RequestParam("phoneNumber") Integer phoneNumber) {
// System.out.println("model = [" + model + "], accountNumber = [" + accountNumber + "], accountWord = [" + accountWord + "], phoneNumber = [" + phoneNumber + "]");
if(accountNumber!=""&accountWord!=""){
// 调用fourOperation方法增加一条信息
fourOperation.rupdata(accountNumber,accountWord,phoneNumber);
model.addAttribute("message","保存成功!");
return "redirect:/abc";
}
else{
model.addAttribute("notice","请全部写完");
return "login/register.html";
}
}
}
fourOperation
package com.baiyulianxi.jdbcmysql;
import com.baiyulianxi.controller.person.StuInfo;
import com.baiyulianxi.controller.person.studentRegister;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class fourOperation {
@Autowired
private JdbcTemplate jdbcTemplate;
/*
* @Description:查询所有用户
* @return: 返回一个列表
* */
// 查询表中的所有数据
public List findAll(String table){
String sql = "select * from "+table;
if (table.equals("register")){
List userList = jdbcTemplate.query(sql,new UserRowMapper());
return userList;
}else{
List userList = jdbcTemplate.query(sql,new StuRowMapper());
return userList;
}
}
//
/*
* @Description:查询某个用户
* @return:
* */
public StuInfo findone(Integer id){
String sql = "select * from student where id = ?";
StuInfo stuInfo = jdbcTemplate.queryForObject(sql,new StuRowMapper(),id);
return stuInfo;
}
/*
* @Description:增加一条信息
* @return: void
* */
// 给register表增加一条信息
public void rupdata(String accountNumber,String accountWord,Integer phoneNumber){
studentRegister studentRegister = new studentRegister();
// 下面的程序是用来把注册信息保存在register表中
studentRegister.setAccountNumber(accountNumber);
studentRegister.setAccountWord(accountWord);
studentRegister.setPhoneNumber(phoneNumber);
Object args[] = {studentRegister.getAccountNumber(),studentRegister.getAccountWord(),studentRegister.getPhoneNumber()};
// System.out.println(args);
jdbcTemplate.update("insert into register (accountNumber,accountWord,phoneNumber) values (?,?,?)",args);
}
// 给student表中添加一条信息
public void supdata(String studentName,String studentId,String studentPhone){
String sql ="insert into student (studentName,studentId,studentPhone) values (?,?,?)";
StuInfo stuInfo = new StuInfo();
stuInfo.setStudentName(studentName);
stuInfo.setStudentId(studentId);
stuInfo.setStudentPhone(studentPhone);
Object args[] = {stuInfo.getStudentName(),stuInfo.getStudentId(),stuInfo.getStudentPhone()};
jdbcTemplate.update(sql,args);
}
/*
* @Description:修改一个用户
* @return:需要修改用户的行数
* */
public int update(Integer id,String studentName, String studentId, String studentPhone) {
String sql = "update student set studentName = ? , studentId = ? , studentPhone = ? where id = ?";
int i = jdbcTemplate.update(sql,studentName,studentId,studentPhone,id);
return i;
}
/*
* @Description:删除一个用户
* @return:需要修改用户的行数
* */
public int delete(int Id) {
String sql = "delete from student where id = ?";
return jdbcTemplate.update(sql,Id);
}
}
StuRowMapper
package com.baiyulianxi.jdbcmysql;
import com.baiyulianxi.controller.person.StuInfo;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class StuRowMapper implements RowMapper<StuInfo> {
@Override
public StuInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
StuInfo stuInfo = new StuInfo();
stuInfo.setId(rs.getInt("id"));
stuInfo.setStudentName(rs.getString("studentName"));
stuInfo.setStudentId(rs.getString("studentId"));
stuInfo.setStudentPhone(rs.getString("studentPhone"));
return stuInfo;
}
}
UserRowMapper
package com.baiyulianxi.jdbcmysql;
import com.baiyulianxi.controller.person.studentRegister;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserRowMapper implements RowMapper<studentRegister> {
@Override
public studentRegister mapRow(ResultSet rs, int rowNum) throws SQLException {
studentRegister studentRegister =new studentRegister();
studentRegister.setId(rs.getInt("id"));
studentRegister.setAccountNumber(rs.getString("accountNumber"));
studentRegister.setAccountWord(rs.getString("accountWord"));
studentRegister.setPhoneNumber(rs.getInt("phoneNumber"));
return studentRegister;
}
}
MyLocalResolver
package com.baiyulianxi.jdbcmysql;
import com.baiyulianxi.controller.person.studentRegister;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserRowMapper implements RowMapper<studentRegister> {
@Override
public studentRegister mapRow(ResultSet rs, int rowNum) throws SQLException {
studentRegister studentRegister =new studentRegister();
studentRegister.setId(rs.getInt("id"));
studentRegister.setAccountNumber(rs.getString("accountNumber"));
studentRegister.setAccountWord(rs.getString("accountWord"));
studentRegister.setPhoneNumber(rs.getInt("phoneNumber"));
return studentRegister;
}
}
LoginHandleIntercepter
package com.baiyulianxi.loginhandlerinterceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//这个类是用来做拦截设置的
public class LoginHandleInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user = request.getSession().getAttribute("loginUser");
if (user == null) {
// 未登录,返回登录页面
request.setAttribute("Interceptor", "没有权限请先登录");
request.getRequestDispatcher("/abc").forward(request, response);
return false;
}else{
System.out.println(user);
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
MyErrorAttribute
package com.baiyulianxi.myerror;
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.WebRequest;
import java.util.Map;
@Component
public class MyErrorAttribute extends DefaultErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
map.put("ext","atguigu");
map.put("company","atguigu");
return map;
}
}
MyException
package com.baiyulianxi.myerror;
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.WebRequest;
import java.util.Map;
@Component
public class MyErrorAttribute extends DefaultErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
map.put("ext","atguigu");
map.put("company","atguigu");
return map;
}
}
MyException
package com.baiyulianxi.myerror;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice
public class MyExceptionHandler {
// 自适应行的 就是浏览器自己给你都配置好了 内容也给你写死了
// @ResponseBody
// @ExceptionHandler(MyException.class)
// public Map<String,Object> handleException(Exception e){
// Map<String,Object> map = new HashMap<>();
// map.put("code","user.notexist");
// map.put("message",e.getMessage());
// return map;
// }
// ================================================
// 传入你的错误状态码 4xx 5xx 否则不会进入定制错误页面的解析流程
@ExceptionHandler(MyException.class)
public String handleException(Exception e, HttpServletRequest request){
Map<String,Object> map = new HashMap<>();
request.setAttribute("java.servlet.error.status_code",404);
// map.put("message",e.getMessage());
map.put("code","user.notexist");
return "forward:/error";
}
}
StuinfoOper
package com.baiyulianxi.StudentInfo;
import com.baiyulianxi.controller.person.StuInfo;
import com.baiyulianxi.jdbcmysql.fourOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
public class StuInfoOper {
@Autowired
fourOperation fourOperation;
//用于学生注册完毕后跳转
@GetMapping("/OperationChoice")
public String OperationChoice(){
return "StuInfo/OperationChoice.html";
}
//用于增加一条学生信息
@GetMapping("/updata")
public String updata(){
return "StuInfo/UpdataStuInfo.html";
}
@PostMapping("/updata")
public String updataStudentInfo(Model model,
@RequestParam("studentName") String studentName,
@RequestParam("studentId") String studentId,
@RequestParam("studentPhone") String studentPhone){
fourOperation.supdata(studentName,studentId,studentPhone);
return "StuInfo/UpdataStuInfo.html";
}
// 用于获取所有的学生信息
@GetMapping("/findall")
public String findAll(Model model){
List all = fourOperation.findAll("student");
model.addAttribute("emps",all);
return "StuInfo/AllStuInfo.html";
}
@PostMapping("/findAll")
public String FindAll(Model model){
// List all = fourOperation.findAll("student");
// model.addAttribute("emps",all);
return "StuInfo/AllStuInfo.html";
}
// 用于修改学生信息
@GetMapping("/edit/{id}")
public String editPage(@PathVariable("id") Integer id, Model model){
StuInfo findone = fourOperation.findone(id);
model.addAttribute("emp",findone);
return "StuInfo/UpdataStuInfo.html";
}
@PutMapping("/updata")
public String edit(StuInfo findone){
int i =fourOperation.update(
findone.getId(),
findone.getStudentName(),
findone.getStudentId(),
findone.getStudentPhone()
);
System.out.println(findone.getId()+
findone.getStudentName()+
findone.getStudentId()+
findone.getStudentPhone());
return"redirect:/findall";
}
//用于删除学生信息
@DeleteMapping("/edit/{id}")
public String delete(@PathVariable("id") Integer id){
System.out.println(id);
int delete = fourOperation.delete(id);
return "redirect:/findall";
}
// 用于查询单个学生信息
// @GetMapping("/select")
// public String toSelect(){
// return "StuInfo/FindStuInfo.html";
//
// }
// @PostMapping("/select")
// public String select(Model model,
// @RequestParam(name = "select",defaultValue = "value") String select,String value,
// @RequestParam("student") String student
// ){
// StuInfo findone = new StuInfo();
// if(value.equals("id")){
// Integer i = Integer.parseInt(value);
// System.out.println("==========="+i);
// findone = fourOperation.findone(i);
// }
// model.addAttribute("emps",findone);
// return "StuInfo/FindStuInfo.html";
//
// }
}
另外国际化的部分
效果