(未完成)出错有点多,Tomcat的配置也出问题了,Tomcat突然找不到jdk了,好像是我之前下载过一回然后没卸干净有残留文件,还有连接数据库的代码也有问题。
 
 
 
<%@page import="util.DBUtil"%>
<%@page import="dao.AdminDao"%>
<%@page import="Bean.AdminBean"%>
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
 String platid=request.getParameter("platid");
 String password=request.getParameter("password");
 String sex=request.getParameter("sex");
 String platname=request.getParameter("platname");
 String stunum=request.getParameter("stunum");
 String mail=request.getParameter("mail");
 String colname=request.getParameter("colname");
 String proname=request.getParameter("proname");
 String roomname=request.getParameter("roomname");
 String year=request.getParameter("year");
 String homename=request.getParameter("homename");
 String rename=request.getParameter("rename");
 
 Platform platform =new Platform();
 platform.setPlatformid(platid);
 platform.setPassword(password);
 platform.setSex(sex);
 platform.setPlatformname(platname);
 platform.setStunum(stunum);
 platform.setMail(mail);
 platform.setColname(colname);
 platform.setProname(proname);
 platform.setRoomname(roomname);
 platform.setYear(year);
 platform.setHomename(homename);
 platform.setRename(rename);
 
 PlatformDaoImpl platformDaoImpl=new PlatformDaoImpl();
 try{
  
 platformDaoImpl.add(platform);
 System.out.println("注册成功");
 response.sendRedirect("logininput.jsp");
%>
 
 
<%
 }catch(UserException e){
%>
 <h2 style="color:red ; font-size:50px">发生错误 : <%=e.getMessage() %></h2>
 <%
 }
 %>
</body>
</html>
 
 
 
 
 
//主界面.jsp
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>注册</title>
</head>
<br>
<h1 align="center" >添加学生信息</h1>
<hr size="2" width="70%" color="red">
<form action="register.jsp" method="get">
<table align="center" border="1">
<tr>
 <td>登录账号:</td>
 <td><input type="text" name="platid" value="(八位以上的字母、数字、下划线)" onclick="this.value=''" style="color:#888" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>登录密码:</td>
 <td><input type="password" name="password" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>性别:</td>
 <td>
      <select type="sex"><option value="男"  selected>男</option>
                           <option value="女">女</option>
</tr>
<tr>
 <td>姓名:</td>
 <td><input type="text" name="platname" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>学号:</td>
 <td><input type="text" name="stunum" value="(2018开头的八位数字)" onclick="this.value=''" style="color:#888" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>电子邮箱:</td>
 <td><input type="text" name="mail" value="(xxxx@xxxx.xxx)" onclick="this.value=''" style="color:#888" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>所在学院:</td>
 <td><input type="text" name="colname" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>所在系:</td>
 <td><input type="text" name="proname" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>所在班级:</td>
 <td><input type="text" name="roomname" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>入学年份:</td>
 <td>
      <select type="year"><option value="2017"  selected>2017</option>
                           <option value="2018">2018</option>
</tr>
<tr>
 <td>生源地:</td>
 <td><input type="text" name="homename" value="(省/市/县(区))" onclick="this.value=''" style="color:#888" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
 <td>备注:</td>
 <td><input type="text" name="rename" value="(无)" onclick="this.value=''" style="color:#888" onblur="if(/[^0-9a-zA-Z]/g.test(value)||this.value.replace(/^ +| +$/g,'')=='')alert('有错!')"></td>
</tr>
<tr>
<td colspan="1" align="center">
  <input  type="submit" value="注册">
</td>
</tr>
</table>
</form>
</body>
</html>
 
 
 
 
 
 
//添加成功界面.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 align="center" >添加成功</h1>
</body>
</html>
 
 
 
 
 
 
 
//Bean文件
package Bean;
public class AdminBean {
 private int id;
 private String password;
 private String sex;
 private String name;
 private int studentnumber;
 private String mailbox;
 private String college;
 private String profession;
 private String classroom;
 private int year;
 private String hometown;
 private String remark;
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getStudentnumber() {
  return studentnumber;
 }
 public void setStudentnumber(int studentnumber) {
  this.studentnumber = studentnumber;
 }
 public String getMailbox() {
  return mailbox;
 }
 public void setMailbox(String mailbox) {
  this.mailbox = mailbox;
 }
 
 public String getCollege() {
  return college;
 }
 public void setCollege(String college) {
  this.college = college;
 }
 
 public String getProfession() {
  return profession;
 }
 public void setProfession(String profession) {
  this.profession = profession;
 }
 
 public String getClossroom() {
  return classroom;
 }
 public void setClassroom(String classroom) {
  this.classroom = classroom;
 }
 
 public int getYear() {
  return year;
 }
 
 public void setYear(int year) {
  this.year = year;
 }
 public String getHometown() {
  return hometown;
 }
 public void setHometown(String hometown) {
  this.hometown = hometown;
 }
 
 public String getRemark() {
  return remark;
 }
 public void setRemark(String remark) {
  this.remark = remark;
 }
 
}
 
 
 
 
 
 
 
 
//Dao文件
package dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import Bean.AdminBean;
import util.DBUtil;
/**
 * admin表数据库操作
 *
 * @author wjxing
 *
 */
public class AdminDao {
 /**
  * 登录
  *
  * @param username
  * @param password
  * @return
  */
 public AdminBean checkLogin(String username, String password) {
  Connection conn = DBUtil.getConn();
  AdminBean adminBean = null;
  try {
   Statement state = conn.createStatement();
   ResultSet rs = state.executeQuery("select * from admin where username='" + username + "'");
   if (rs.next()) {
    // 如果有结果,是认为是通过验证了
    if (rs.getString("password").equals(MD5.GetMD5Code(password+rs.getString("salt")))) {
     adminBean = new AdminBean();
     adminBean.setId(rs.getInt("id"));     
     adminBean.setPassword(rs.getString("password"));
     adminBean.setSex(rs.getString("sex"));
     adminBean.setName(rs.getString("name"));
     adminBean.setStudentnumber(rs.getInt("studentnumber"));
     adminBean.setMailbox(rs.getString("mailbox"));
     adminBean.setCollege(rs.getString("college"));
     adminBean.setProfession(rs.getString("profession"));
     adminBean.setClassroom(rs.getString("classroom"));
     adminBean.setYear(rs.getInt("year"));
     adminBean.setHometown(rs.getString("hometown"));
     adminBean.setRemark(rs.getString("remark"));
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return adminBean;
 }
 /**
  * 检查是否存在此用户
  *
  * @param name
  * @return
  */
 public boolean checkReg(String name) {
  boolean flag = true;
  // 查询用户是否已存在
  Connection connection = DBUtil.getConn();
  Statement statement = null;
  ResultSet rs = null;
  try {
   statement = connection.createStatement();
   rs = statement.executeQuery("select username from admin");
   while (rs.next()) {
    if (name.equals(rs.getString("username"))) {
     flag = false;
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   DBUtil.close(rs, statement, connection);
  }
  return flag;
 }
 
 
 /**
  * 通过id获取adminBean对象
  *
  * @param id
  * @return
  */
 public AdminBean getById(int id) {
  // TODO Auto-generated method stub
  String sql = "select * from admin where id =" + id;
  Connection connection = DBUtil.getConn();
  Statement statement = null;
  ResultSet resultSet = null;
  AdminBean adminBean = null;
  try {
   statement = connection.createStatement();
   resultSet = statement.executeQuery(sql);
   while (resultSet.next()) {
    adminBean = new AdminBean(); 
    adminBean.setId(resultSet.getInt("id"));     
    adminBean.setPassword(resultSet.getString("password"));
    adminBean.setSex(resultSet.getString("sex"));
    adminBean.setName(resultSet.getString("name"));
    adminBean.setStudentnumber(resultSet.getInt("studentnumber"));
    adminBean.setMailbox(resultSet.getString("mailbox"));
    adminBean.setCollege(resultSet.getString("college"));
    adminBean.setProfession(resultSet.getString("profession"));
    adminBean.setClassroom(resultSet.getString("classroom"));
    adminBean.setYear(resultSet.getInt("year"));
    adminBean.setHometown(resultSet.getString("hometown"));
    adminBean.setRemark(resultSet.getString("remark"));
    
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   DBUtil.close(resultSet, statement, connection);
  }
  return adminBean;
 }
 /**
  * 通过id删除
  *
  * @param id
  */
 public void delete(int id) {
  // TODO Auto-generated method stub
  String sql = "delete from admin where id = " + id;
  Connection conn = DBUtil.getConn();
  Statement state = null;
  try {
   state = conn.createStatement();
   state.executeUpdate(sql);
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   DBUtil.close(state, conn);
  }
 }
 /**
  * 获取数据表中数据总量
  * @return
  */
 public int getCount() {
  ResultSet rs = null;
  Statement state = null;
  Connection conn = null;
  int size = 0;
  try {
   conn = DBUtil.getConn();
   state = conn.createStatement();
   rs = state.executeQuery("select count(*) count from admin");
   if (rs.next()) {
    size = rs.getInt("count");
   }
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   DBUtil.close(rs, state, conn);
  }
  return size;
 }
 /**
  * 获取每一个分页的数据
  * @param start
  * @param size
  * @return
  */
 public List<AdminBean> getListByPage(int start, int size) {
  String sql = "select * from admin limit " + start + " , " + size;
  Connection connection = DBUtil.getConn();
  Statement statement = null;
  ResultSet resultSet = null;
  List<AdminBean> adminBeans = new ArrayList<AdminBean>();
  try {
   statement = connection.createStatement();
   resultSet = statement.executeQuery(sql);
   AdminBean adminBean;
   while (resultSet.next()) {
    adminBean = new AdminBean();
    adminBean.setId(resultSet.getInt("id"));     
    adminBean.setPassword(resultSet.getString("password"));
    adminBean.setSex(resultSet.getString("sex"));
    adminBean.setName(resultSet.getString("name"));
    adminBean.setStudentnumber(resultSet.getInt("studentnumber"));
    adminBean.setMailbox(resultSet.getString("mailbox"));
    adminBean.setCollege(resultSet.getString("college"));
    adminBean.setProfession(resultSet.getString("profession"));
    adminBean.setClassroom(resultSet.getString("classroom"));
    adminBean.setYear(resultSet.getInt("year"));
    adminBean.setHometown(resultSet.getString("hometown"));
    adminBean.setRemark(resultSet.getString("remark"));
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   DBUtil.close(resultSet, statement, connection);
  }
  return adminBeans;
 }
}
 
 
 
 
 
 
 
 
//util文件
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 数据库的工具
 * @author zm
 *
 */
public class DBUtil {
 //eshop为数据库名称,db_user为数据库用户名db_password为数据库密码
 public static String db_url = "jdbc:mysql://localhost:3306/firsttest?useUnicode=true&characterEncoding=UTF-8";
 public static String db_user = "root";
 public static String db_password = "root";
 public static Connection getConn() {
  Connection conn = null;
  try {
   Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection(db_url, db_user, db_password);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return conn;
 }
 
 public static void close(Statement state, Connection conn) {
  if(state!=null) {
   try {
    state.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  if(conn!=null) {
   try {
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }
 
 public static void close(ResultSet rs, Statement state, Connection conn) {
  if(rs!=null) {
   try {
    rs.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  if(state!=null) {
   try {
    state.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  if(conn!=null) {
   try {
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }
}
 
 
 
 
 
 
 
//servlet文件
package servlet.Servlet;
import java.io.IOException;
import java.sql.Date;
import java.util.regex.Pattern;
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mysql.fabric.Response;
import Entity.User;
import Dao.Dao;
/**
 * Servlet implementation class UserServlet
 */
@WebService("/UserServlet")
public class UserServlet extends HttpServlet {
 public static boolean isMatchString(String str,String pattern)
 {
  boolean isMatch = Pattern.matches(pattern, str);
  return isMatch;
 }
 
 private static final long serialVersionUID = 1L;
    zhuceService fuwu=new zhuceService();
       /**
     * @see HttpServlet#HttpServlet()
     */
 
    public UserServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
 @Override
 protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
  Date haha=new Date(0);
  // TODO 自动生成的方法存根
  arg0.setCharacterEncoding("utf-8");
  arg1.setCharacterEncoding("utf-8");
  //super.service(arg0, arg1);
  
  zhucexinxi sta=new zhucexinxi();
  String function=arg0.getParameter("method");
  
  if(function.equals("register"))
  {
   String str;
   str=arg0.getParameter("id");
   if(str.length()==0||str==null||str.equals(""))
   {
    arg0.setAttribute("message","账号不能为空");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0,arg1);
    return;
   }
   
   if(str.charAt(0)>='a'&&str.charAt(0)<='z'||str.charAt(0)>='A'&&str.charAt(0)<='Z');
   else
   {
    arg0.setAttribute("message","账号第一位需要是字母");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0,arg1);
    return;
    
   }
   
   if(str.length()<6||str.length()>12)
   {
    arg0.setAttribute("message", "账号需是6-12位");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0, arg1);
    return;
   }
   for(int a=0;a<str.length();a++)
   {
    if(!(str.charAt(a)>='0'&&str.charAt(a)<='9'||str.charAt(a)>='a'&&str.charAt(a)<='z'||str.charAt(a)>='A'&&str.charAt(a)<='Z'||str.charAt(a)=='_'))           
    {
     arg0.setAttribute("message", "账号只能由字母数字下划线组成");
     arg0.getRequestDispatcher("Login.jsp").forward(arg0, arg1);
     return;
    }
   }
   sta.setYonghuming(str);
   str=arg0.getParameter("password");
   if(str.length()<8||str==null||str.equals(""))
   {
    arg0.setAttribute("message", "用户密码需要是8位以上数组字母组成");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0,arg1);
    return;
   }
   int flag1=0;
   int flag2=0;
   for(int b=0;b<str.length();b++)
   {
    if(str.charAt(b)>='0'&&str.charAt(b)<='9')
    {
     flag1=1;
    }
    if(str.charAt(b)>='a'&&str.charAt(b)<='z'||str.charAt(b)>='A'&&str.charAt(b)<='Z')
    {
     flag2=1;
    }
   }
   
   
   if(flag1!=1||flag2!=1)
   {
    arg0.setAttribute("message", "安全程度低,需要由8位以上的数字和字母组成");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0, arg1);
    return;
   }
   sta.setPassword(str);
   str=arg0.getParameter("sex");
   sta.setSex(str);
   str=arg0.getParameter("name");
   if(str.length()==0||str==null)
   {
    arg0.setAttribute("message", "姓名不能为空");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0, arg1);
    return;
   }
   sta.setMingzi(str);
   str=arg0.getParameter("num");
   if(str.length()!=8)
   {
    arg0.setAttribute("message", "学号是由8位数字组成");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0, arg1);
    return;
   }
   int flag3=1;
   if(str.charAt(0)!='2')flag3=0;
   if(str.charAt(1)!='0')flag3=0;
   if(str.charAt(2)!='1')flag3=0;
   if(str.charAt(3)!='8')flag3=0;
   if(flag3==0)
   {
    arg0.setAttribute("message", "学号输入错误");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0, arg1);
    return;
   }
   sta.setNum(str);
   
   str=arg0.getParameter("email");
   boolean nani=UserServlet.isMatchString(str,"([a-zA-Z0-9])+@([a-zA-Z0-9])+\\.([a-zA-Z0-9])+");
   if(!nani)
   {
    arg0.setAttribute("message", "请输入正确格式的邮箱号码");
    arg0.getRequestDispatcher("Login.jsp").forward(arg0, arg1);
    return;
   }
   sta.setEmail(str);
   str=arg0.getParameter("xueyuan");
   sta.setXueyuan(str);
   str=arg0.getParameter("xi");
   sta.setXi(str);
   str=arg0.getParameter("banji");
   sta.setBanji(str);
   
   str=arg0.getParameter("ruxue");
   sta.setRuxue(str);
   str=arg0.getParameter("dizhi");
   sta.setDizhi(str);
   
   str=arg0.getParameter("beizhu");
   sta.setBeizhu(str);
   
   //判断是否添加数据库成功
   if(fuwu.add("tianjiaxuesheng", sta))
   {
    arg0.setAttribute("message", "注册成功");
    arg0.getRequestDispatcher("NewFile.jsp").forward(arg0, arg1);
   }
   else
   {
    arg0.setAttribute("message", "注册失败");
    arg0.getRequestDispatcher("NewFile.jsp").forward(arg0, arg1);
   }
   
  }
 }
 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 /*protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  response.getWriter().append("Served at: ").append(request.getContextPath());
 }*/
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 /*protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }*/
}

FirstJavaWeb的更多相关文章

随机推荐

  1. num13---外观模式/过程模式

    假设家庭影院有一系列设备,每个设备都有各种开闭等功能性方法,使用家庭影院功能的时候,需要进行各个设备的一系列操作,繁琐麻烦. 现在提供一个外观类,在里面定义操作流程,客户端只需要和外观类进行接口交互即 ...

  2. Java线程核心基础(上)

    Java线程核心基础(上) 一.实现多线程 根据Oracle官方文档,目前推荐的创建线程方法主要有两种,分别是继承Thread类和实现Runnable接口.通过阅读Thread类源码,可以发现二者不同 ...

  3. multitask learning 相关论文资源

    Multitask Learning / Domain Adaptation homepage: http://www.cs.cornell.edu/~kilian/research/multitas ...

  4. EF core (code first) 通过自定义 Migration History 实现多租户使用同一数据库时更新数据库结构

    前言 写这篇文章的原因,其实由于我写EF core 实现多租户的时候,遇到的问题. 具体文章的链接: Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下 ...

  5. Integer缓存机制-基本数据类型和包装类型-自动拆装箱

    Integer缓存机制 总结: 1.jdk1.5对Integer新增了缓存机制,范围在-128-127(这个范围的整数值使用频率最高)内的自动装箱返回的是缓存对象,不会new新的对象,所以只要在缓存范 ...

  6. python xlrd操作

    python里面的xlrd模块详解(一)   那我就一下面积个问题对xlrd模块进行学习一下: 1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模 ...

  7. chkcongfig 命令

    chkconfig   命令主要用来  更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig ...

  8. ZYNQ入门实例——三种GPIO应用、中断系统及软硬件交叉触发调试

    一.前言 Xlinx的ZYNQ系列SOC集成了APU.各种专用外设资源和传统的FPGA逻辑,为ARM+FPGA的应用提供助力,降低功耗和硬件设计难度的同时极大提高两者间传输的带宽.之前在研究生课题中使 ...

  9. TCP/IP分为几层?各层的作用是什么?

    1. 应用层 2.传输层 3.网络层 4.网络接口层* 1.应用层 TCP/IP协议族在这一层面有着很多协议来支持不同的应用,许多大家所熟悉的基于Internet的应用的实现就离不开这些协议.如我们进 ...

  10. 第一篇 Springboot + Web MVC + MyBatis + 简单UI + Thymeleaf实现

    源码链接:https://pan.baidu.com/s/1-LtF56dnCM277v5lILRM7g 提取码:c374 第二篇 Springboot mybatis generate根据数据库表自 ...