前后端结合实现一个简单的一个学生管理系统
配置文件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>
<groupId>org.example</groupId>
<artifactId>parkingManager</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!--
scope配置用于定义依赖的有效范围,重点是否被包含到项目的压缩包.如果不配置则默认compile,在测试和运行时都会使用,而且打包时会自动添加到目标压缩包。
provided表示只在编译期内有效,不会被打包到压缩包中,由运行环境提供
-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>com.meng</groupId>
<artifactId>NeiMengRen</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jspsmart.jar</systemPath>
</dependency>
</dependencies>
<build>
<finalName>test</finalName>
<plugins>
<!--启动服务器的方法 -->
<plugin>
<!-- jetty是一个类似于tomcat的web服务器 -->
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.11.v20180605</version>
<configuration>
<!-- 每隔10s自动扫描更新 -->
<scanIntervalSeconds>10</scanIntervalSeconds>
<!--配置的连接端口号,也就是访问服务器的地址为 http://localhost:8080 -->
<httpConnector>
<port>8080</port>
</httpConnector>
<!--配置应用的上下文路径,访问当前应用的具体地址为http://localhost:8080/test -->
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
</project>
网页配置web.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>
<groupId>org.example</groupId>
<artifactId>parkingManager</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!--
scope配置用于定义依赖的有效范围,重点是否被包含到项目的压缩包.如果不配置则默认compile,在测试和运行时都会使用,而且打包时会自动添加到目标压缩包。
provided表示只在编译期内有效,不会被打包到压缩包中,由运行环境提供
-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>com.meng</groupId>
<artifactId>NeiMengRen</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jspsmart.jar</systemPath>
</dependency>
</dependencies>
<build>
<finalName>test</finalName>
<plugins>
<!--启动服务器的方法 -->
<plugin>
<!-- jetty是一个类似于tomcat的web服务器 -->
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.11.v20180605</version>
<configuration>
<!-- 每隔10s自动扫描更新 -->
<scanIntervalSeconds>10</scanIntervalSeconds>
<!--配置的连接端口号,也就是访问服务器的地址为 http://localhost:8080 -->
<httpConnector>
<port>8080</port>
</httpConnector>
<!--配置应用的上下文路径,访问当前应用的具体地址为http://localhost:8080/test -->
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
</project>
持久层
show.jsp(显示页面)
<%@ page import="java.util.List" %>
<%@ page import="com.entity.Student" %>
<%@ page import="java.util.Objects" %>
<%@ page import="com.domain.PageBean" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<base href="<%=basePath%>">
<title>学生管理系统</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
</head>
<body>
<table border="1" width="800" align="center">
<caption>学生管理页面</caption>
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>生日</th>
<th>电话</th>
<th>email</th>
<th>地址</th>
<th>图片</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<%
Object obj = request.getAttribute("stuList");
if (Objects.nonNull(obj) && obj instanceof List) {
List<Student> stuList = (List<Student>) obj;
for (int i = 0; i < stuList.size(); i++) {
%>
<tr>
<th><%=stuList.get(i).getId()%>
</th>
<th><%=stuList.get(i).getName()%>
</th>
<th><%=stuList.get(i).getSex()%>
</th>
<th><%=stuList.get(i).getBirth()%>
</th>
<th><%=stuList.get(i).getTel()%>
</th>
<th><%=stuList.get(i).getEMail()%>
</th>
<th><%=stuList.get(i).getAddress()%>
</th>
<th><img src="images/<%=(i+1)%>.jpg" style="height:50px; weight:50px;">
</th>
<th>
<input type="button" value="删除" onClick="location.href='./del.do?id=<%=stuList.get(i).getId()%>'"/>
<input type="button" value="编辑" onClick="location.href='./modify.do?id=<%=stuList.get(i).getId()%>'"/>
</th>
</tr>
<% }
}%>
<tr>
<th colspan="9"><input type="button" value="添加学员" onClick="location.href='./add.do'"/></th>
</tr>
</tbody>
<tfoot>
<% obj = request.getAttribute("pages");
if (obj != null && obj instanceof PageBean) {
PageBean pb = (PageBean) obj;
%>
<tr>
<td colspan="5">总共<%=pb.getRowsNum()%>条数据,当前是第<%=pb.getPageNum()%>页/总共<%=pb.getMaxPage()%>页
</td>
<td colspan="4">
<% for (int i = 0; i < pb.getMaxPage(); i++) {%>
[<a href="show.do?page=<%=i+1%>"><%=i + 1%>
</a>]
<%}%>
</td>
</tr>
<%}%>
</tfoot>
</table>
</body>
</html>
stuadd.jsp(添加页面)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<base href="<%=basePath%>">
<title>学生管理系统</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
</head>
<body>
<form action="./add.do" name="form1" method="post" onSubmit="return isSubmit();">
<table width="400" align="center">
<caption>学员添加页面</caption>
<tr>
<td>学号</td>
<td><input type="text" name="sno" onBlur="checkSNO(this)" /></td>
<td id="sno"></td>
</tr>
<tr>
<td>姓名</td>
<td><input type="text" name="sname" onBlur="checkSname(this)" /></td>
<td id="sname"></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="ssex" value="男" />男
<input type="radio" name="ssex" value="女" checked="checked" />女
</td>
<td></td>
</tr>
<tr>
<td>生日</td>
<td><input type="text" name="sbirthday" onBlur="checkSbirthday(this)" /></td>
<td id="sbirthday"></td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="sphone" /></td>
<td></td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" name="semail" /></td>
<td></td>
</tr>
<tr>
<td>地址</td>
<td><input type="text" name="saddress" /></td>
<td></td>
</tr>
<tr>
<td>
<input type="submit" value="确定" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</body>
</html>
stuedit.jsp(修改页面)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page import="com.entity.Student" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<base href="<%=basePath%>">
<title>学生管理系统</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
</head>
<body>
<form action="./modify.do" method="post">
<%
Object obj = request.getAttribute("student");
if (Objects.nonNull(obj) && obj instanceof Student) {
Student stu = (Student) obj;
%>
<table width="400" align="center">
<caption>学员编辑页面</caption>
<tr>
<td>学号</td>
<td><input type="text" name="sno" value="<%=stu.getId()%>"/></td>
<td></td>
</tr>
<tr>
<td>姓名</td>
<td><input type="text" name="sname" value="<%=stu.getName()%>"/></td>
<td></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="ssex" value="<%=stu.getSex()%>" />男
<input type="radio" name="ssex" value="<%=stu.getSex()%>" checked="checked" />女
</td>
<td></td>
</tr>
<tr>
<td>生日</td>
<td><input type="text" name="sbirthday" value="<%=stu.getBirth()%>"/></td>
<td></td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="sphone" value="<%=stu.getTel()%>"/></td>
<td></td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" name="semail" value="<%=stu.getEMail()%>"/></td>
<td></td>
</tr>
<tr>
<td>地址</td>
<td><input type="text" name="saddress" value="<%=stu.getAddress()%>"/></td>
<td></td>
</tr>
<%
}
%>
<tr>
<td>
<input type="submit" value="确定" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</body>
</html>
业务层
实体
真实传递的数据
package com.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class Student implements Serializable {
private Long id;
private String name;
private Boolean sex;
private Date birth;
private String tel;
private String eMail;
private String address;
private String pic;
}
分页参数
package com.domain;
import lombok.Data;
import java.io.Serializable;
@Data
public class PageBean implements Serializable {
private int rowsNum;
private int pageNum;
private int maxPage;
private int rowsPerPage = 15;
}
接口
定义CRUD
package com.dao;
import com.domain.PageBean;
import com.entity.Student;
import java.util.List;
public interface IStuDao{
List<Student> searchByExample(Student record, PageBean pages);
boolean add(Student record);
boolean delete(Long id);
boolean update(Student record);
Student selectById(Long id);
}
实现类
实现CRUD
package com.dao;
import com.domain.PageBean;
import com.entity.Student;
import com.util.ConnectionManager;
import com.util.Constants;
import com.util.DaoFactory;
import lombok.SneakyThrows;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class StuDaoImpl implements IStuDao {
@Override
@SneakyThrows
public List<Student> searchByExample(Student record, PageBean pages) {
StringBuilder sb = new StringBuilder("select * from tb_stu where 1 = 1 ");
List<Student> res = new ArrayList<>();
String sql = sb.toString();
Connection con = ConnectionManager.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
if (Objects.nonNull(pages) && pages.getRowsPerPage() > 0) {
if (pages.getPageNum() < 1)
pages.setPageNum(1);
if (pages.getMaxPage() < 1) {
int rowsNum = 0;
String countSql = "select count(*) " + sb.substring(sb.indexOf(" from "));
ps = con.prepareStatement(countSql);
rs = ps.executeQuery();
if (rs.next()) {
rowsNum = rs.getInt(1);
} else return res;
int maxPage = rowsNum / pages.getRowsPerPage();
if (rowsNum % pages.getRowsPerPage() != 0)
maxPage++;
pages.setRowsNum(rowsNum);
pages.setMaxPage(maxPage);
}
if (pages.getPageNum() > pages.getMaxPage())
pages.setPageNum(pages.getMaxPage());
int begin = (pages.getPageNum() - 1) * pages.getRowsPerPage();
sql = sql + " limit " + begin + "," + pages.getRowsPerPage();
}
if (Constants.DEBUG) {
System.out.println(sql);
}
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
Student stu = getStudent(rs);
res.add(stu);
}
} finally {
ConnectionManager.close(rs, ps, con);
}
return res;
}
@Override
@SneakyThrows
public boolean add(Student record) {
if (Objects.isNull(record) || Objects.isNull(record.getId()) || Objects.isNull(record.getName()))
throw new RuntimeException("学生不能为空");
int res = 0;
List<Object> list = new ArrayList<>();
StringBuilder sb1 = new StringBuilder("insert into tb_stu(id,name");
StringBuilder sb2 = new StringBuilder(")values(?,?");
list.add(record.getId());
list.add(record.getName());
if (Objects.nonNull(record.getSex())) {
sb1.append(",sex");
sb2.append(",?");
list.add(record.getSex());
}
if (Objects.nonNull(record.getBirth())) {
sb1.append(",birth");
sb2.append(",?");
list.add(record.getBirth());
}
if (Objects.nonNull(record.getTel())) {
sb1.append(",tel");
sb2.append(",?");
list.add(record.getTel());
}
if (Objects.nonNull(record.getEMail())) {
sb1.append(",email");
sb2.append(",?");
list.add(record.getEMail());
}
if (Objects.nonNull(record.getAddress())) {
sb1.append(",address");
sb2.append(",?");
list.add(record.getAddress());
}
String sql = sb1.toString() + sb2.toString() + ")";
if (!Constants.DEBUG)
System.out.println(sql);
Connection con = null;
PreparedStatement ps = null;
try {
con = ConnectionManager.getConnection();
if (Objects.nonNull(list) && list.size() > 0)
ps = ConnectionManager.createPreparedStatement(con, sql, list.toArray());
res = ps.executeUpdate();
} finally {
ConnectionManager.close(null, ps, con);
}
return res > 0;
}
@Override
@SneakyThrows
public boolean delete(Long id) {
if (Objects.isNull(id))
throw new RuntimeException("要删除的id不能为空");
StringBuilder sb = new StringBuilder("delete from tb_stu where id = '").append(id).append("'");
String sql = sb.toString();
if (Constants.DEBUG)
System.out.println(sql);
int res = 0;
Connection con = null;
PreparedStatement ps = null;
try {
con = ConnectionManager.getConnection();
ps = con.prepareStatement(sql);
res = ps.executeUpdate();
} finally {
ConnectionManager.close(null, ps, con);
}
return res > 0;
}
@Override
@SneakyThrows
//根据id修改
public boolean update(Student record) {
if (selectById(record.getId()) == null)
throw new RuntimeException("用户不存在");
else {
Student stu = selectById(record.getId());
}
int res = 0;
List<Object> list = new ArrayList<>();
StringBuilder sb = new StringBuilder("update tb_stu set id = ?");
list.add(record.getId());
if (Objects.nonNull(record.getName())) {
sb.append(",name=?");
list.add(record.getName());
}
if (Objects.nonNull(record.getSex())) {
sb.append(",sex=?");
list.add(record.getSex());
}
if (Objects.nonNull(record.getBirth())) {
sb.append(",birth=?");
list.add(record.getBirth());
}
if (Objects.nonNull(record.getTel())) {
sb.append(",tel=?");
list.add(record.getTel());
}
if (Objects.nonNull(record.getEMail())) {
sb.append(",email=?");
list.add(record.getEMail());
}
if (Objects.nonNull(record.getAddress())) {
sb.append(",address=?");
list.add(record.getAddress());
}
String sql = sb.append(" where id = ").append(record.getId()).toString();
if (!Constants.DEBUG)
System.out.println(sql);
Connection con = null;
PreparedStatement ps = null;
try {
con = ConnectionManager.getConnection();
if (Objects.nonNull(list) && list.size() > 0)
ps = ConnectionManager.createPreparedStatement(con, sql, list.toArray());
res = ps.executeUpdate();
} finally {
ConnectionManager.close(null, ps, con);
}
return res > 0;
}
@SneakyThrows
public Student selectById(Long id) {
if (Objects.isNull(id))
throw new RuntimeException("id不能为空");
Student stu = null;
StringBuilder sb = new StringBuilder("select * from tb_stu where id = ").append(id);
String sql = sb.toString();
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = ConnectionManager.getConnection();
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
if (rs.next()) {
stu = getStudent(rs);
}
} finally {
ConnectionManager.close(rs, ps, con);
}
return stu;
}
@SneakyThrows
private Student getStudent(ResultSet rs) {
Student stu = new Student();
stu.setId(rs.getLong("id"));
stu.setName(rs.getString("name"));
stu.setSex(rs.getBoolean("sex"));
stu.setBirth(rs.getDate("birth"));
stu.setTel(rs.getString("tel"));
stu.setEMail(rs.getString("email"));
stu.setAddress(rs.getString("address"));
return stu;
}
public static void main(String[] args) {
IStuDao stuDao = DaoFactory.getStuDao();
// PageBean pb = new PageBean();
// pb.setRowsPerPage(2);
// pb.setPageNum(2);
// System.out.println(stuDao.searchByExample(null, null));
System.out.println(stuDao.delete(88888L));
// Student stu = new Student();
// stu.setId(88888L);
// stu.setName("加油");
// stu.setSex(false);
// System.out.println(stuDao.add(stu));
// System.out.println(stuDao.update(stu));
// System.out.println(stuDao.selectById(4444L));
}
}
工具类
数据库连接池管理
package com.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import lombok.SneakyThrows;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Objects;
import java.util.Properties;
public final class ConnectionManager {
private ConnectionManager() {
}
public static DataSource dataSource;
static {
Properties ps = new Properties();
try {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties");
ps.load(is);
dataSource = DruidDataSourceFactory.createDataSource(ps);
} catch (Exception e) {
if (Constants.DEBUG)
e.printStackTrace();
throw new RuntimeException(e);
}
}
@SneakyThrows
public static Connection getConnection() {
return dataSource.getConnection();
}
@SneakyThrows
public static PreparedStatement createPreparedStatement(Connection con,String sql,Object...params){
PreparedStatement ps = null;
if(Objects.nonNull(con)&&StringUtils.isNOtBlank(sql)){
ps = con.prepareStatement(sql);
if(Objects.nonNull(params)&¶ms.length>0)
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1,params[i]);
}
}
return ps;
}
@SneakyThrows
public static void close(ResultSet rs, PreparedStatement ps, Connection con) {
try {
if (Objects.nonNull(rs))
rs.close();
} finally {
try {
if (Objects.nonNull(ps))
ps.close();
} finally {
if (Objects.nonNull(con))
con.close();
}
}
}
}
测试工具
package com.util;
public final class Constants {
private Constants(){}
public final static boolean DEBUG = false;
}
工厂
package com.util;
import com.dao.IStuDao;
import com.dao.StuDaoImpl;
public final class DaoFactory {
private DaoFactory(){}
public static IStuDao getStuDao(){
return new StuDaoImpl();
}
}
字符串判空串工具
package com.util;
import java.util.Objects;
public final class StringUtils {
private StringUtils() {
}
public static boolean isBlank(String str) {
return Objects.isNull(str) || str.trim().length() < 1;
}
public static boolean isNOtBlank(String str) {
return !isBlank(str);
}
}
页面动作
显示页面的servlet
package com.action;
import com.dao.IStuDao;
import com.domain.PageBean;
import com.entity.Student;
import com.util.DaoFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
public class ShowServlet extends HttpServlet {
private IStuDao stuDao = DaoFactory.getStuDao();
private int rows = 15;
@Override
public void init() throws ServletException {
String sRows = this.getServletConfig().getInitParameter("rows");
try {
rows = Integer.parseInt(sRows);
} catch (NumberFormatException e) {
rows = 5;
}
}
// @Override
// protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// List<Student> studentList = stuDao.searchByExample(null, null);
// System.out.println(studentList);
// resp.setContentType("text/html");
// PrintWriter out = resp.getWriter();
// out.println("<!DOCTYPE html>\n" +
// "<html>\n" +
// "<head>\n" +
// "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\n" +
// "<title>学生管理系统</title>\n" +
// "<script type=\"text/javascript\">\n" +
// " function delStu(){\n" +
// "\t\twindow.confirm(\"是否要删除该学员?\");\n" +
// " }\n" +
// "</script>\n" +
// "</head>\n" +
// "\n" +
// "<body>");
// out.println("<table border=\"1\" width=\"800\" align=\"center\">\n" +
// "\t<caption>学生管理页面</caption>\n" +
// "\t<thead>\n" +
// "\t\t<tr>\n" +
// "\t\t\t<th>学号</th>\n" +
// "\t\t\t<th>姓名</th>\n" +
// "\t\t\t<th>性别</th>\n" +
// "\t\t\t<th>生日</th>\n" +
// "\t\t\t<th>电话</th>\n" +
// "\t\t\t<th>email</th>\n" +
// "\t\t\t<th>地址</th>\n" +
// "\t\t\t<th>操作</th>\n" +
// "\t\t</tr>\n" +
// "\t</thead>");
// out.println("<tbody>");
// for (Student tmp:studentList) {
// out.println("<tr>" +
// "<th>" +tmp.getId()+ "</th>" +"<th>" +tmp.getName()+ "</th>" + "<th>" +(tmp.getSex()?"男":"女")+ "</th>"
// + "<th>" +tmp.getBirth()+ "</th>" + "<th>" +tmp.getTel()+ "</th>" + "<th>" +tmp.getEMail()+ "</th>"
// + "<th>" +tmp.getAddress()+ "</th>"
// + "<th>" +"\t\t\t\t<input type=\"button\" value=\"删除\" onClick=\"delStu()\" />\n"+ "\t\t\t\t<input type=\"button\" value=\"编辑\" onClick=\"location.href='./stuedit.html'\" />\n"+"</th>"
// +
// "</tr>");
// }
//
// out.println(
// "\t\t\t</th>\n" +
// "\t\t</tr>\n" +
// "\t\t<tr>\n" +
// "\t\t\t<th colspan=\"8\"><input type=\"button\" value=\"添加学员\" onClick=\"location.href='./stuadd.html'\" /></th>\n" +
// "\t\t</tr>\n" +
// "\t</tbody>\n" +
// "</table>\n" +
// "\n" +
// "</body>\n" +
// "</html>");
// }
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PageBean pages = null;
String sPage = req.getParameter("page");
if(sPage!=null && sPage.trim().length()>0){
pages = new PageBean();
int page = 0;
try{
page = Integer.parseInt(sPage);
}catch (Exception e){
page = 1;
}
pages.setRowsPerPage(rows);
pages.setPageNum(page);
}
if(pages!=null){
//System.out.println(pages);
req.setAttribute("pages",pages);
}
List<Student> stuList = stuDao.searchByExample(null,pages);
System.out.println(stuList);
req.setAttribute("stuList",stuList);
req.getRequestDispatcher("show.jsp").forward(req,resp);
}
}
修改页面的sevlet
package com.action;
import com.dao.IStuDao;
import com.entity.Student;
import com.util.DaoFactory;
import com.util.StringUtils;
import lombok.SneakyThrows;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
public class ModifyServlet extends HttpServlet {
private IStuDao stuDao = DaoFactory.getStuDao();
@Override
@SneakyThrows
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sid = req.getParameter("sno");
Long id = Long.parseLong(sid.trim());
String name = req.getParameter("sname");
String ssex = req.getParameter("ssex");
boolean sex = Boolean.parseBoolean(ssex.trim());
String sbirth = req.getParameter("sbirthday");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birth = null;
if (StringUtils.isNOtBlank(sbirth)) {
birth = df.parse(sbirth.trim());
}
String tel = req.getParameter("sphone");
String email = req.getParameter("semail");
String address = req.getParameter("saddress");
Student stu = new Student();
stu.setId(id);
stu.setName(name);
stu.setSex(sex);
if (Objects.nonNull(birth)) {
stu.setBirth(birth);
}
stu.setTel(tel);
stu.setEMail(email);
stu.setAddress(address);
System.out.println(stuDao.update(stu));
req.getRequestDispatcher("show.do?page=1").forward(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sid = req.getParameter("id");
Long id = Long.parseLong(sid.trim());
Student student = stuDao.selectById(id);
if(student!=null){
req.setAttribute("student",student);
req.getRequestDispatcher("stuedit.jsp").forward(req,resp);
}else {
resp.sendRedirect("show.do");
}
//req.getRequestDispatcher("stuedit.jsp").forward(req, resp);
}
}
删除页面的servlet
package com.action;
import com.dao.IStuDao;
import com.util.DaoFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DelServlet extends HttpServlet {
private IStuDao stuDao = DaoFactory.getStuDao();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sid = req.getParameter("id");
Long id = Long.parseLong(sid.trim());
stuDao.delete(id);
req.getRequestDispatcher("show.do?page=1").forward(req,resp);
}
}
添加页面的servlet
package com.action;
import com.dao.IStuDao;
import com.entity.Student;
import com.util.DaoFactory;
import com.util.StringUtils;
import lombok.SneakyThrows;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
public class AddServlet extends HttpServlet {
private IStuDao stuDao = DaoFactory.getStuDao();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("stuadd.jsp").forward(req, resp);
}
@Override
@SneakyThrows
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sid = req.getParameter("sno");
Long id = Long.parseLong(sid.trim());
String name = req.getParameter("sname");
String ssex = req.getParameter("ssex");
boolean sex = Boolean.parseBoolean(ssex.trim());
String sbirth = req.getParameter("sbirthday");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birth = null;
if (StringUtils.isNOtBlank(sbirth)) {
birth = df.parse(sbirth.trim());
}
String tel = req.getParameter("sphone");
String email = req.getParameter("semail");
String address = req.getParameter("saddress");
Student stu = new Student();
stu.setId(id);
stu.setName(name);
stu.setSex(sex);
if (Objects.nonNull(birth)) {
stu.setBirth(birth);
}
stu.setTel(tel);
stu.setEMail(email);
stu.setAddress(address);
System.out.println(stuDao.add(stu));
req.getRequestDispatcher("show.do?page=1").forward(req, resp);
}
}