大体样式如下,我已经将该项目部署到服务器上,网址是http://156.233.25.190:8080/ch_05/index.jsp
在服务器上数据库出了些问题还没解决,只有界面,但是在我电脑上数据库是没有问题的。
此项目连接数据库用的是DButils+cp03的方法。
一、建立jsp页面
几乎每个界面的css是一样的,在此不做重复的代码
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
<style>
*{
margin: 0px;
padding: 0px;
}
.header{
width: 100%;
height: 150px;
border:1px solid #96c2f1;
background:#eff7ff;
}
h1{
padding-top: 50px;
text-align: center;
font-family: 楷体;
}
.body{
float: left;
border:1px solid #96c2f1;
background:#eff7ff;
}
#body1{
width: 29%;
height: 700px;
}
#body2{
width: 70%;
height: 700px;
}
ul{
font-family: 楷体;
font-size: 30px;
line-height: 70px;
list-style-type: none;
padding-top: 150px;
padding-left: 100px;
}
img{
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div class="header">
<h1>学生身体素质信息管理系统</h1>
</div>
<div class="body" id="body1">
<ul>
<li><a href="selectall.jsp">列出全部学生</a></li>
<li><a href="select.jsp">按条件查找学生</a></li>
<li><a href="add.jsp">新添加学生</a></li>
<li><a href="delete.jsp">按条件删除学生</a></li>
<li><a href="modify.jsp">按条件修改学生</a></li>
</ul>
</div>
<div class="body" id="body2">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1555415523222&di=2dda7cb8703f50b022427b7e8e95fafd&imgtype=0&src=http%3A%2F%2Fs10.sinaimg.cn%2Fmw690%2F002E9Pdjzy7cAlyLipH89%26690">
</div>
</body>
</html>
add.jsp
<body>
<div class="header">
<h1>学生身体素质信息管理系统</h1>
</div>
<div class="body" id="body1">
<ul>
<li><a href="selectall.jsp">列出全部学生</a></li>
<li><a href="select.jsp">按条件查找学生</a></li>
<li><a href="add.jsp">新添加学生</a></li>
<li><a href="delete.jsp">按条件删除学生</a></li>
<li><a href="modify.jsp">按条件修改学生</a></li>
</ul>
</div>
<div class="body" id="body2">
<form method="post" action="add" onsubmit="return check(this)">
学号 <input type="text" name="xh" class="input1"><br><br>
姓名 <input type="text" name="xm" class="input1"><br><br>
性别 <input type="text" name="sex" class="input1"><br><br>
年龄 <input type="text" name="age" class="input1"><br><br>
体重 <input type="text" name="we" class="input1"><br><br>
身高 <input type="text" name="he" class="input1"><br><br>
<input type="submit" value="提交">
<input type="reset" value="取消">
</form>
<jsp:useBean id="a" class="bean.Student" scope="session"></jsp:useBean>
<%-- <jsp:setProperty name="student" property="num" param="xh">
<jsp:setProperty name="student" property="name" param="xm">
<jsp:setProperty name="student" property="sex" param="sex">
<jsp:setProperty name="student" property="age" param="age">
<jsp:setProperty name="student" property="weight" param="we">
<jsp:setProperty name="student" property="height" param="he"> --%>
</div>
</body>
delete.jsp
<body>
<div class="header">
<h1>学生身体素质信息管理系统</h1>
</div>
<div class="body" id="body1">
<ul>
<li><a href="selectall.jsp">列出全部学生</a></li>
<li><a href="select.jsp">按条件查找学生</a></li>
<li><a href="add.jsp">新添加学生</a></li>
<li><a href="delete.jsp">按条件删除学生</a></li>
<li><a href="modify.jsp">按条件修改学生</a></li>
</ul>
</div>
<div class="body" id="body2">
<h1>请选择删除记录所满足的条件</h1>
<hr align="center" color="black" width="90%" >
<form method="post" action="Delete">
姓名:<input type="text" name="xm"><br><br>
性别:男<input type="radio" name="sex" value="男">
女<input type="radio" name="sex" value="女"><br><br>
体重范围:<br><br>
最小<input type="text" name="min"><br>
最大<input type="text" name="max"><br>
<input type="submit" value="查询">
<input type="reset" value="重置">
</form>
</div>
</body>
select.jsp
<body>
<div class="header">
<h1>学生身体素质信息管理系统</h1>
</div>
<div class="body" id="body1">
<ul>
<li><a href="selectall.jsp">列出全部学生</a></li>
<li><a href="select.jsp">按条件查找学生</a></li>
<li><a href="add.jsp">新添加学生</a></li>
<li><a href="delete.jsp">按条件删除学生</a></li>
<li><a href="modify.jsp">按条件修改学生</a></li>
</ul>
</div>
<div class="body" id="body2">
<p>请选择查询条件</p><br><br>
<hr width="100%" color="black"><br><br>
<form method="post" action="Select">
<div class="form">
性别:男<input type="radio" name="sex" value="男">
女<input type="radio" name="sex" value="女"><br><br>
体重范围:<br><br>
最小<input type="text" name="min"><br>
最大<input type="text" name="max"><br>
<input type="submit" value="查询">
<input type="reset" value="重置">
</div>
</form>
</div>
</body>
modify.jsp
<body>
<div class="header">
<h1>学生身体素质信息管理系统</h1>
</div>
<div class="body" id="body1">
<ul>
<li><a href="selectall.jsp">列出全部学生</a></li>
<li><a href="select.jsp">按条件查找学生</a></li>
<li><a href="add.jsp">新添加学生</a></li>
<li><a href="delete.jsp">按条件删除学生</a></li>
<li><a href="modify.jsp">按条件修改学生</a></li>
</ul>
</div>
<div class="body" id="body2">
<h1>请选择修改记录所满足的条件</h1>
<hr align="center" color="black" width="90%" >
<form method="post" action="Update">
姓名:<input type="text" name="xm"><br><br>
性别:男<input type="radio" name="sex" value="男">
女<input type="radio" name="sex" value="女"><br><br>
<input type="submit" value="查询">
<input type="reset" value="重置">
</form>
</div>
</body>
selectall.jsp
<body>
<div class="header">
<h1>学生身体素质信息管理系统</h1>
</div>
<div class="body" id="body1">
<ul>
<li><a href="selectall.jsp">列出全部学生</a></li>
<li><a href="select.jsp">按条件查找学生</a></li>
<li><a href="add.jsp">新添加学生</a></li>
<li><a href="delete.jsp">按条件删除学生</a></li>
<li><a href="modify.jsp">按条件修改学生</a></li>
</ul>
</div>
<div class="body" id="body2">
<%! UserService us=new UserService(); %>
<%! List<Student> list =new ArrayList<Student>(); %>
<%! Student[] s=new Student[list.size()];%>
<% list=us.queryALLstudent(); %>
<div class="body_table">
<table align="center" border="1">
<tr><td>学号</td><td>姓名</td><td>年龄</td><td>性别</td><td>体重</td><td>身高</td></tr>
<%
for(int i=0; i<list.size(); i++){
%>
<tr>
<td><%=list.get(i).getId() %></td>
<td><%=list.get(i).getName() %></td>
<td><%=list.get(i).getAge() %></td>
<td><%=list.get(i).getSex() %></td>
<td><%=list.get(i).getWeight() %></td>
<td><%=list.get(i).getHeight() %></td>
</tr>
<%
}
%>
</table>
</div>
</div>
</body>
二、建立javabean类
在src文件下建立四个包,bean,dao,service,servlet,该类写在bean类下
public class Student {
private String id;
private String name;
private String sex;
private String age;
private String weight;
private String height;
public Student(String num, String name, String sex, String age, String weight, String height) {
this.id = num;
this.name = name;
this.sex = sex;
this.age = age;
this.weight = weight;
this.height = height;
}
public Student() {
// TODO Auto-generated constructor stub
}
public String getId() {
return id;
}
public void setId(String num) {
this.id = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
@Override
public String toString() {
return "student{" +
"num='" + id + '\'' +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age='" + age + '\'' +
", weight='" + weight + '\'' +
", height='" + height + '\'' +
'}';
}
}
三,建立dao层
dao层使用DButils和c3p0,两种方法,其所使用的jar包我已经上传,你可以在我的csdn上下载
c3p0-config.xml 该配置文件是手动添加到src中的,在我上传的资源中有
<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/students?serverTimezone=GMT&useUnicode=true&characterEncoding=utf-8</property>
<property name="user">root</property>
<property name="password"></property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
</named-config>
</c3p0-config>
你只需要修改上面的四个标签,将它改成你的数据库的信息即可
然后在dao层里新建DataSourceUtils类,该类基本不做改动,复制粘贴即可。至于里面方法的功能注释里已经写了
package dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
public class DataSourceUtils {
private static ComboPooledDataSource ds=new ComboPooledDataSource();
/**
* 获取数据源
* @return 连接池
*/
public static DataSource getDataSource() {
return ds ;
}
/**
* 释放资源
* @param conn
* @param st
* @param rs
*/
public static void CloseResource(Connection conn,Statement st , ResultSet rs){
closeResultSet(rs);
closeStaement(st);
closeConn(conn);
}
/**
* 获取连接
* @return 连接
* @throws SQLException
*/
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
/**
*释放连接
* @param conn
* 连接
*/
public static void closeConn(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null ;
}
}
}
/**
* 释放语句执行者
* @param st
* 语句执行者
*/
public static void closeStaement(Statement st){
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null ;
}
}
}
/**
* 释放结果集
* @param rs
* 结果集
*/
public static void closeResultSet(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null ;
}
}
}
}
再新建一个userdao类,实现客户的增删查改
package dao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import bean.Student;
public class UserDao {
QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
List<Student> list =new ArrayList<Student>();
public void addStudent(Student s){
String sql = "insert into students_info values(?,?,?,?,?,?)";
try {
@SuppressWarnings("unused")
int update = qr.update(sql,s.getId(),s.getName(),s.getSex(),s.getAge(),s.getWeight(),s.getHeight());
}catch (SQLException e){
e.printStackTrace();
}
}
public Student updateStudent(String name){
String sql = "select * from students_info where name=?";
Student s=new Student();
s=null;
try {
s=qr.query(sql,new BeanHandler<Student>(Student.class), name);
}catch(SQLException e) {
e.printStackTrace();
}
return s;
}
public int deleteStudent(String name) {
String sql="delete from students_info where name=?";
int update = 0;
try {
update=qr.update(sql,name);
}catch (SQLException e){
e.printStackTrace();
}
return update;
}
public List<Student> serachStudent(String sex,String max,String min) {
QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource());
String sql="select * from students_info where sex=? and weight between ? and ?";
try {
list=qr.query(sql,new BeanListHandler<Student>(Student.class) ,sex, min, max);
}catch(SQLException e) {
e.printStackTrace();
}
return list;
}
@SuppressWarnings("deprecation")
public Student queryOneStudent(String id) {
String sql="select * from students_info where id=?";
Student s=new Student();
try {
s=qr.query(sql,new BeanHandler<Student>(Student.class),id);
}catch(SQLException e) {
e.printStackTrace();
}
return s;
}
public List<Student> queryAllStudent(){
String sql="select * from students_info";
try {
list=qr.query(sql, new BeanListHandler<Student>(Student.class));
}catch(SQLException e) {
e.printStackTrace();
}
return list;
}
}
四、然后在service包中新建UserService类,实现中间层
package service;
import java.util.ArrayList;
import java.util.List;
import bean.Student;
import dao.UserDao;
public class UserService {
UserDao userDao = new UserDao();
// public Student login(Student user) throws SQLException {
// // TODO Auto-generated method stub
// //调用dao层,完成查询数据
// UserDao userDao = new UserDao();
// return userDao.login(user);
// }
public void addStudent(Student s) {
userDao.addStudent(s);
}
public List<Student> queryALLstudent(){
return userDao.queryAllStudent();
}
public List<Student> searchStudent(String sex,String max,String min){
return userDao.serachStudent(sex, max, min);
}
public boolean deleteStduent(String name) {
if(userDao.deleteStudent(name)==1){
return true;
}else {
return false;
}
}
public boolean updateStudent(String name) {
if(userDao.updateStudent(name)!=null) {
return true;
}else {
return false;
}
}
}
五、最后实现该项目的业务逻辑,servlet包中新建Add,Delete,Update,select四个servlet
由于逻辑都写在dopost方法中,所以我下面的四个servlet只写dopost方法
Add.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
UserService us=new UserService();
Student s=new Student();
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
s.setId(request.getParameter("xh"));
s.setName(request.getParameter("xm"));
s.setSex(request.getParameter("sex"));
s.setAge(request.getParameter("age"));
s.setWeight(request.getParameter("we"));
s.setHeight(request.getParameter("he"));
us.addStudent(s);
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("插入成功,点击下面链接返回首页<br>");
out.println("<a href='index.jsp'>点击这里</a>");
}
Delete.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
UserService us=new UserService();
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String s=request.getParameter("xm");
if(us.deleteStduent(s)) {
out.println("删除成功!");
}else {
out.println("查无此人,删除失败!");
}
}
select.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
UserService us=new UserService();
List list =new ArrayList();
request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);
String sex=request.getParameter("sex");
String min=request.getParameter("min");
String max=request.getParameter("max");
list=us.searchStudent(sex, max, min);
response.setContentType("text/html");
PrintWriter out=response.getWriter();`
out.println("<p>"+"学号"+" "+"姓名"+" "+"年龄"+" "+"性别"+" "+"体重"+" "+"身高"+"</p>");
for(int i=0; i<list.size(); i++){
//out.println(s[i].getNum()+" "+s[i].getName()+" "+s[i].getAge()+" "+s[i].getSex()+" "+s[i].getWeight()+" "+s[i].getHeight());
out.println(list.get(i).getId()+" "+list.get(i).getName()+" "+list.get(i).getAge()+" "+list.get(i).getSex()+" "+list.get(i).getWeight()+" "+list.get(i).getHeight()+"<br>");
}
}
update.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
UserService us=new UserService();
Student s=new Student();
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String name=request.getParameter("xm");
if(us.updateStudent(name)) {
us.deleteStduent(name);
response.sendRedirect("add.jsp");
}else {
out.println("表中无此人,无法修改!");
}
}
这样,这个工程就弄完了,缺点是有的,查询的结果是servlet的输出,这样不好,我们可以新建一个jsp将servlet中的list传到jsp中,然后进行显示。
request.setAttribute(“list”, list);
request.getRequestDispatcher(“select_01.jsp”).forward(request, response);
通过这两行代码就可以将list传到jsp中,
jsp中ArrayList list=(ArrayList)request.getAttribute(“list”);这样进行接收。
这个功能就交由你们进行改进了。
有什么不足之处,尽可以在评论区留言。