学生管理系统

前言

最近在学习SpringBoot,加上之前自学的Java,MySQL数据库的使用,还有一些前端的知识。利用空余的时间写了一个简易的学生管理系统,借鉴了很多大牛的代码,特此感谢。

操作系统:Ubantu
软件:IDEA

数据库—两个

  1. 注册和登陆共用一个数据库
  2. 学生系统

前端页面

  1. 登陆页面
  2. 注册页面
  3. 功能选择页面
  4. 学生信息页面
  5. 学生信息注册和修改页面
  6. 错误页面

文件目录

在这里插入图片描述
在这里插入图片描述

依赖文件—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";
//
//    }

}


另外国际化的部分

在这里插入图片描述

效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据库的图

在这里插入图片描述

大概就这些了 我尽了自己的全力去做了,希望能有些成就。 在这里感谢网上的大牛,不太好提名字。有些代码是我借鉴了网上的一些高手留下的。 程序里还有几个BUG,我有点累了,而且马上要去上课了,没法子再改了。 本来还想加个功能的,但是数据库有点小问题,不要好做搜索。而且搜索的算法,我想单列出来去写。我还是想用Python去做算法,这样分工明确。 我不太会起文件的名字,实在抱歉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值