做一个简易学生信息系统
创建一个数据库表准备前端html页面什么叫一个功能跳转页面(重要!!!)字符串转为int型Integer.parseInt(String x) 总结这次只是用servlet方式创建网页的一些收获:
工具类欢迎页web.xmllistAction.javaaddAction.javadelete.javaupdateEditAction.javaupdateAction.javadetails.java效果图
做一个简易学生信息系统 创建一个数据库表创建了table_student
准备前端html页面增删查改,欢迎页面
什么叫一个功能只要这个操作连接了数据库,就表示一个独立功能
增加一个学生信息
删除一个学生信息
修改一个学生信息
查看一个学生详情
跳转页面(重要!!!)1、在Java通过动态页面跳转到一个普通的html需要以/开始并加上项目名在/html文件
//浏览器请求的路径为http://localhost:8080/ManageServletWebApp/add.html,可以的 //http://localhost:8080代表本地地址的ip和端口号,后面是我们webapp的根路径/add.html是我们的资源 新增学生 //还可以写成下面这样吗?不可以 新增学生 //这里浏览器请求的URL就是:http://localhost:8080/add.html //这样也是不行的,我们所有的页面都在我们的webapp的根下,就是http://localhost:8080/这个的下面,这样写你是找不到我们的项目名的,即ManageServletWebApp,你找不到这个,你也没有指定任何其他项目名,肯定是错的 //那么写成这样可以吗?不可以 新增学生 //上面访问的是这个地址,http://localhost:8080/web/add.html,报错找不到,依然是没用项目名 记住!!!!只要是web下面的东西,它都是/ManageServletWebApp的,你可以把web看成/ManageServletWebApp,这就是我们项目的根目录 //不已斜杠开始,表示当前所在资源的相对路径下的add.html 新增学生 //浏览器请求的路径就是/ManageServletWebApp/oa/add.html //因为你根本就没oa这个东西 请求的资源[http://localhost:8080//ManageServletWebApp/oa/add.html],报错不可用
2、在普通的html文件中跳转,是/项目名/xml中的路径
查看学生信息列表
3、在静态html文件直接相互跳转是直接写html的相对路径就ok(这里是相对路径,浏览器从/ManageServletWebApp/下开始)
因为资源我们是放在web下的,因此相对路径就是/ManageServletWebApp
但是其实这个跳转,它在浏览器中的路径是这样的
http://localhost:8080/ManageServletWebApp/delete.html字符串转为int型Integer.parseInt(String x) 总结这次只是用servlet方式创建网页的一些收获:
1、某处用到项目名时,不要写死,使用方法String contextPath = req.getContextPath();,来动态获取当前项目名。
2、上面总结过的跳转路径问题。
3、可以直接在href后面加请求体,比如**?studentid="+id**,这样我们就可以使用doget方法来处理你这个页面表格中想要发给我的数据了,post的话就不太方便了,post更适合用于表单的提交。
修改
4、写这个网页之前,可以考虑先整理一下工具类,比如常用的数据库连接,关闭流等等,都可以以静态的方式,放在里面,方便我们在写其他Java程序的时候调用,减少代码冗余。
5、我们可以在写项目之前,以静态的页面,先构建好前端的样子,包括什么位置存放什么信息等等,这些静态的HTML页面,后面就是我们的模板,我们可以根据它的样子,改为动态的版本。一般来说,我们的网站中不会存在调用静态页面的情况,即URL中一般不会出现以html结尾的资源路径。
6、在写一个小项目的时候,可以先把框架搭建起来,然后在从头到尾的,一步一步的去实现这些功能,先不要将怎么简化,最开始要做的是先实现这些功能,后面你可以根据情况,在去简化Java代码。
7、单纯的用servlet写,有很多地方很不方便,比如把静态页面改为动态的时候,要用write方式输出,代码就很长,而且改起来很麻烦。
全部代码:
工具类package com.sj.www;
import java.sql.*;
import java.util.ResourceBundle;
public class DBUtil {
private static ResourceBundle bundle=ResourceBundle.getBundle("resources.jdbc");
private static String driver=bundle.getString("driver");
private static String url=bundle.getString("url");
private static String user=bundle.getString("user");
private static String password=bundle.getString("password");
static {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getconnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void close(Connection connection, Statement statement, ResultSet resultSet){
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
欢迎页
学生信息管理纯servlet版本
欢迎使用!
管理学生信息
web.xml
listAction.javalist com.sj.www.listAction list /oa/list add com.sj.www.addAction add /oa/add delete com.sj.www.deleteAction delete /oa/delete updateEdit com.sj.www.updateEditAction updateEdit /oa/updateEdit update com.sj.www.updateAction update /oa/update details com.sj.www.detailsAction details /oa/details
package com.sj.www;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
public class listAction extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
//动态获取项目路径/ManageServletWebApp
String contextPath = req.getContextPath();
//获取连接数据库对象
connection = DBUtil.getconnection();
//查询所有学生信息
String sql = "select id as '学生学号',name as '学生姓名',sex as '学生性别',classno as '学生班级'" +
"from table_student";
try {
preparedStatement = connection.prepareStatement(sql);
//获取数据集
resultSet = preparedStatement.executeQuery();
//遍历数据集
int id = 0;
String name = null;
String sex = null;
int classno = 0;
String htmlhead = "n" +
"n" +
"n" +
" n" +
" Title n" +
"n" +
" "+
"n" +
"学生信息列表n" +
"
n" +
"
| 学生学号 | n" + "学生姓名 | n" + "学生性别 | n" + "学生班级 | n" + "操作 | n" + "
|---|
package com.sj.www;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class addAction extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
Connection connection = null;
PreparedStatement preparedStatement=null;
//获取连接数据库对象
connection = DBUtil.getconnection();
//新增sql语句
String sql="insert into table_student(name,sex,classno) values(?,?,?)";
//新增一条数据
try {
String name = req.getParameter("studentname");
String sex = req.getParameter("studentsex");
String classno = req.getParameter("studentclass");
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,name);
preparedStatement.setString(2,sex);
preparedStatement.setString(3,classno);
int rows = preparedStatement.executeUpdate();
if (rows>0){
writer.println("加入学生信息成功!");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
delete.java
package com.sj.www;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class deleteAction extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet=null;
//获取连接数据库对象
connection = DBUtil.getconnection();
//新增sql语句
String sql = "delete from table_student where id=?";
//新增一条数据
try {
int id = Integer.parseInt(req.getParameter("studentid"));
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
int rows = preparedStatement.executeUpdate();
if (rows > 0) {
writer.println("删除学生信息成功!");
}else{
writer.println("删除学生信息失败!");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(connection,preparedStatement,resultSet);
}
}
}
updateEditAction.java
package com.sj.www;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
public class updateEditAction extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
//写动态html界面
writer.println("n" +
"n" +
"n" +
" n" +
" update n" +
"n" +
"n" +
"n" +
" 修改学生信息n" +
"
n" +
" ");
//获取前端发来的数据
int id = Integer.parseInt(req.getParameter("studentid"));
try {
//获取连接数据库对象
connection = DBUtil.getconnection();
//然后进行查询相关信息
String s1 = "select name,sex,classno from table_student where id=?";
preparedStatement = connection.prepareStatement(s1);
preparedStatement.setInt(1,id);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
String name = resultSet.getString("name");
String sex = resultSet.getString("sex");
int classno = resultSet.getInt("classno");
writer.println("");
}
writer.println("n" +
"n" +
"");
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(connection, preparedStatement,resultSet);
}
}
}
updateAction.java
package com.sj.www;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class updateAction extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 该方法用于接受post请求,修改数据库
Connection connection = DBUtil.getconnection();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
//解决乱码
resp.setContentType("text/html");
//输出到屏幕上的工具
PrintWriter writer = resp.getWriter();
//获取post请求发送的数据
int studentid = Integer.parseInt(req.getParameter("studentid"));
String name = req.getParameter("studentname");
String sex = req.getParameter("studentsex");
int classno = Integer.parseInt(req.getParameter("studentclass"));
try {
String sql = "update table_student set name =? , sex=? , classno=? where id=?";
preparedStatement = connection.prepareStatement(sql);
//编译后,赋值,执行sql语句
preparedStatement.setString(1, name);
preparedStatement.setString(2, sex);
preparedStatement.setInt(3, classno);
preparedStatement.setInt(4, studentid);
int rows = preparedStatement.executeUpdate();
if (rows > 0) {
writer.write("修改成功!");
} else {
writer.write("修改失败!");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(connection, preparedStatement, resultSet);
}
}
}
details.java
package com.sj.www;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class detailsAction extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//读出get请求的请求体数据即可。
int studentid = Integer.parseInt(req.getParameter("studentid"));
String studentname = req.getParameter("studentname");
String studentsex = req.getParameter("studentsex");
int classno = Integer.parseInt(req.getParameter("classno"));
//直接根据所获得的数据以页面的形式输出即可
PrintWriter writer = resp.getWriter();
writer.println("n" +
"n" +
"n" +
" n" +
" detail n" +
"n" +
"n" +
"n" +
" 学生信息详情n" +
"
n" +
" 学生学号: "+studentid+"
n" +
" 学生姓名: "+studentname+"
n" +
" 学生性别: "+studentsex+"
n" +
" 学生班级: "+classno+"
n"+
"n" +
"n" +
"");
}
}
效果图
虽然简单,但是还是花费了不少心思的



