使用jsp+servlet+javabean+dao实现学生体质信息管理系统

在这里插入图片描述
大体样式如下,我已经将该项目部署到服务器上,网址是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)">
        学号&nbsp;<input type="text" name="xh" class="input1"><br><br>
        姓名&nbsp;<input type="text" name="xm" class="input1"><br><br>
        性别&nbsp;<input type="text" name="sex" class="input1"><br><br>
        年龄&nbsp;<input type="text" name="age" class="input1"><br><br>
        体重&nbsp;<input type="text" name="we" class="input1"><br><br>
        身高&nbsp;<input type="text" name="he" class="input1"><br><br>
        <input type="submit" value="提交">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <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&amp;useUnicode=true&amp;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”);这样进行接收。
这个功能就交由你们进行改进了。

有什么不足之处,尽可以在评论区留言。

  • 8
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值