Servlet实例开发---学生管理系统

Servlet总结

本程序采用Servlet开发技术,MVC分层,所有程序在设计时都要接口为操作的标准,主要逻辑操作只有增删改查。

具体实现操作请看源代码。

本程序采用的是MYSQL数据库,需加入相应的jar包

目录结构

首先贴上底层数据层:

连接数据库

package com.student.dbc ;
import java.sql.* ;
public class DatabaseConnection {
    private static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
     private static final String DBURL = "jdbc:mysql://localhost:3306/java_web?useUnicode=true&characterEncoding=UTF-8" ;
    private static final String DBUSER = "root" ;
    private static final String DBPASSWORD = "root" ;
    private Connection conn = null ;
    public DatabaseConnection() throws Exception{
        try{
            Class.forName(DBDRIVER) ;
            this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
        }catch(Exception e){
            throw e ;
        }
    }
    public Connection getConnection(){
        return this.conn ;
    }
    public void close() throws Exception{
        if(this.conn != null){
            try{
                this.conn.close() ;
            }catch(Exception e){
                throw e ;
            }
        }
    }
}
DatabaseConnection.java

实体类

package com.student.vo;

public class Student {
    private String id;
    private String name;
    private int age;
    private int sex;
    private String major;
    private String college;
    private String introduction;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
    public String getMajor() {
        return major;
    }
    public void setMajor(String major) {
        this.major = major;
    }
    public String getCollege() {
        return college;
    }
    public void setCollege(String college) {
        this.college = college;
    }
    public String getIntroduction() {
        return introduction;
    }
    public void setIntroduction(String introduction) {
        this.introduction = introduction;
    }
    
}
Student.java

业务逻辑类

package com.student.action;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import com.mysql.jdbc.Connection;
import com.student.dbc.DatabaseConnection;
import com.student.vo.Student;
public class StudentAction {
    
    private static Connection conn = null ;
    
    
    /**
     * 增加学生
     * @param id
     * @param name
     * @param age
     * @param sex
     * @param major
     * @param college
     * @param introduction
     * @return
     */
    public static boolean addStudent(String id,String name,int age,int sex,String major,String college,String introduction) {
        
        try {
            java.sql.Connection conn=new DatabaseConnection().getConnection();
            PreparedStatement st=conn.prepareStatement("insert into student values(?,?,?,?,?,?,?)");
        
            
            st.setString(1, id);
            st.setString(2, name);
            st.setInt(3, age);
            st.setInt(4, sex);
            st.setString(5, major);
            st.setString(6, college);
            st.setString(7, introduction);
            
            st.execute();
            conn.close();
            return true;
        
        } catch (Exception e) {
            // TODO: handle exception
            return false;
        }
        
    }
    /**
     * 更新学生
     * @param id
     * @param name
     * @param age
     * @param sex
     * @param major
     * @param college
     * @param introduction
     * @return
     */
    
    public static boolean updateStudent(String id,String name,int age,int sex,String major,String college,String introduction) {
        try {
            java.sql.Connection conn=new DatabaseConnection().getConnection();
            PreparedStatement st=conn.prepareStatement("update student set name=?,age=?,sex=?,major=?,college=?,introduction=? where id=?");
            
            st.setString(1, name);
            st.setInt(2, age);
            st.setInt(3, sex);
            st.setString(4, major);
            st.setString(5, college);
            st.setString(6, introduction);
            st.setString(7, id);
            
            st.execute();
            conn.close();
            return true;
        
        } catch (Exception e) {
            // TODO: handle exception
            return false;
        }
    }
    
    /**
     * 删除
     * @param id
     * @return
     */
    public static boolean deleteStudent(String id) {
        try {
            
            java.sql.Connection conn=new DatabaseConnection().getConnection();
            PreparedStatement st=conn.prepareStatement("delete from student where id=?");
            
            st.setString(1, id);
            
            st.execute();
            
            conn.close();
            return true;
        }catch (Exception e) {
            // TODO: handle exception
            return false;
        }
    }
    /**
     * 获取全部学生
     * @return
     */

    public static  ArrayList getAllstudent() {
        ArrayList students=new ArrayList();
        
        try {
            java.sql.Connection conn=new DatabaseConnection().getConnection();
            PreparedStatement st=conn.prepareStatement("select * from student");
            st.execute();
            ResultSet rs=st.getResultSet();
            while(rs.next()){
                Student student=new Student();
                student.setId(rs.getString("id"));
                student.setName(rs.getString("name"));
                student.setAge(rs.getInt("age"));
                student.setSex(rs.getInt("sex"));
                student.setMajor(rs.getString("major"));
                student.setCollege(rs.getString("college"));
                student.setIntroduction(rs.getString("introduction"));
                students.add(student);
                
            }
            conn.close();
        
        } catch (Exception e) {
            // TODO: handle exception
        }
            return students;
    }
    /**
     * 按学号查询学生
     * @param id
     * @return
     */
    public static  Student getStudent(String id) {
        
        Student student=null;
        try {
            java.sql.Connection conn=new DatabaseConnection().getConnection();
            PreparedStatement st=conn.prepareStatement("select * from student where id=?");
            
            st.setString(1,    id);
            st.execute();
            ResultSet rs=st.getResultSet();
            while(rs.next()){
                student=new Student();
            
                student.setId(rs.getString("id"));
                student.setName(rs.getString("name"));
                student.setAge(rs.getInt("age"));
                student.setSex(rs.getInt("sex"));
                student.setMajor(rs.getString("major"));
                student.setCollege(rs.getString("college"));
                student.setIntroduction(rs.getString("introduction"));
                
            
            }
            conn.close();
        
        } catch (Exception e) {
            // TODO: handle exception
        }
            return student;
    }
}
StudentAction.java

JSP与数据交换层

package com.student.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.student.action.StudentAction;
public class StudentServlet extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        
        if(request.getRequestURI().endsWith("/viewStudent")){
            RequestDispatcher dispatcher = request.getRequestDispatcher("viewstudent.jsp");
            dispatcher .forward(request, response);
        }else if(request.getRequestURI().endsWith("/addStudent")){
        
            doAddStudent(request,response);
        }
        else if (request.getRequestURI().endsWith("/updateStudent")) {
            
            doUpdateStudent(request,response);
        }else if (request.getRequestURI().endsWith("/deleteStudent")) {
            doDeleteStudent(request,response);
            
        }
            
        
    }

    private void doAddStudent(HttpServletRequest request, HttpServletResponse response) throws IOException{
        String id=request.getParameter("id");
        String name=request.getParameter("name");
        String age=request.getParameter("age");
        String sex=request.getParameter("sex");
        String major=request.getParameter("major");
        String college=request.getParameter("college");
        String introduction=request.getParameter("introduction");
        
        StudentAction.addStudent(id, name,new Integer(age), new Integer(sex), major, college, introduction);
        response.sendRedirect("index.jsp");
    }
    private void doUpdateStudent(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String id=request.getParameter("id");
        
        String name=request.getParameter("name");
        String age=request.getParameter("age");
        String sex=request.getParameter("sex");
        String major=request.getParameter("major");
        String college=request.getParameter("college");
        String introduction=request.getParameter("introduction");
        
        StudentAction.updateStudent(id, name, new Integer(age), new Integer(sex), major, college, introduction);
        response.sendRedirect("index.jsp");
}
    private void doDeleteStudent(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String id=request.getParameter("id");
    StudentAction.deleteStudent(id);
    response.sendRedirect("index.jsp");
}
    
}
StudentServlet.java

数据库表,可直接复制

STUDENT.SQL

JSP页面

<%@page import="com.student.vo.Student"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.student.action.StudentAction"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>学生管理系统</title>
    <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">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <link id="bs-css" href="css/bootstrap-cerulean.min.css" rel="stylesheet">

    <link href="css/charisma-app.css" rel="stylesheet">
    
   
    

  </head>

  <body>

<div class="box col-md-12" >
            <div class="box-inner">
                <div class="box-header well" data-original-title="">
                    <h2><i class="glyphicon glyphicon-user"></i> 学生管理系统</h2>
                     <div class="box-icon">
                        <a href="addstudent.jsp" class="btn btn-minimize btn-round btn-default"><i
                                class="glyphicon glyphicon-chevron-up"></i>添加学生</a>
                      
                              
                    </div>  
                </div>
                <div class="box-content">
                    <table class="table table-striped table-bordered responsive" width="80%">
                        <thead>
                        <tr>
                              <th class="center">&nbsp;&nbsp;&nbsp;&nbsp;学号</th>
                              <th class="center">&nbsp;&nbsp;&nbsp;&nbsp;姓名</th>
                              <th>&nbsp;&nbsp;&nbsp;&nbsp;年龄</th>
                              <th>&nbsp;&nbsp;&nbsp;&nbsp;性别</th>
                              <th>&nbsp;&nbsp;&nbsp;&nbsp;专业</th>
                              <th>&nbsp;&nbsp;&nbsp;&nbsp;学院</th>
                              <th>&nbsp;&nbsp;&nbsp;&nbsp;简介</th>
                            <th>&nbsp;&nbsp;&nbsp;&nbsp;操作</th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr>
                        <% ArrayList students=StudentAction.getAllstudent();
            for(int i=0;i<students.size();i++){
                Student student=(Student)students.get(i);%>
                
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;<%=student.getId() %></td>
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;<%=student.getName() %></td>
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;<%=student.getAge()%></td>
                            <% if(student.getSex()==1){%>
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;</td><%}else{ %>
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;</td>
                            <%} %>
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;<%=student.getMajor()%></td>
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;<%=student.getCollege()%></td>
                            <td class="center">&nbsp;&nbsp;&nbsp;&nbsp;<%=student.getIntroduction()%>...</td>
                        <td >
                              <a class="btn btn-success"href="viewStudent?id=<%=student.getId()%>">
                                    <i class="glyphicon glyphicon-zoom-in icon-white"></i>
                                    查看
                                </a>
                                
                                <a class="btn btn-info" href="updatestudent.jsp?id=<%=student.getId()%>">
                                    <i class="glyphicon glyphicon-edit icon-white"></i>
                                    修改
                                </a>
                                <a class="btn btn-danger" href="deleteStudent?id=<%=student.getId()%>">
                                    <i class="glyphicon glyphicon-trash icon-white"></i>
                                    删除
                                </a>
                           </td>
                            
                        </tr>
                       
                        </tbody>
                            <%
        
    } %>
                    </table>
                </div>
            </div>
        </div>

  </body>
</html>
index.jsp
<%@page import="com.student.vo.Student"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.student.action.StudentAction"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>添加学生信息</title>
    <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">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
        <link id="bs-css" href="css/bootstrap-cerulean.min.css" rel="stylesheet">

    <link href="css/charisma-app.css" rel="stylesheet">
    
  </head>

  <body>
    <div class="box col-md-3">
        <div class="box-inner">
            <div class="box-header well" data-original-title="">
                <h2><i class="glyphicon glyphicon-edit"></i>学生信息</h2>
            </div>
            <div class="box-content">
                <form action="addStudent" method="post" role="form">
                    <div class="form-group">
                       
                        <input type="text" class="form-control" name="id" placeholder="学号">
                        
                        <input type="text" class="form-control" name="name" placeholder="姓名">
                        <input type="text" class="form-control"  name="age" placeholder="年龄">
                      
                       
                         <select  class="form-control" name="sex"><option value="1" >--------性别--------</option><option value="1"></option><option value="0"></option></select>
                        <input type="text" class="form-control"  name="major" placeholder="专业">
                       
                        <input type="text" class="form-control"  name="college" placeholder="学院">
                        <label for="exampleInputEmail1">简介</label>
                        <textarea type="text" class="form-control" rows="5" name="introduction" style="
resize: none;" ></textarea>
                    </div>
             
                    <button type="submit" class="btn btn-default">提交</button>
                </form>

            </div>
        </div>
    </div>
  
  </body>
</html>
addstudent.jsp
<%@page import="com.student.vo.Student"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.student.action.StudentAction"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>添加学生信息</title>
    <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">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
        <link id="bs-css" href="css/bootstrap-cerulean.min.css" rel="stylesheet">

    <link href="css/charisma-app.css" rel="stylesheet">
    
  </head>
<%
String id=request.getParameter("id");
Student student=StudentAction.getStudent(id); %>
  <body>
        <div class="box col-md-3">
        <div class="box-inner">
            <div class="box-header well" data-original-title="学生信息">
                <h2><i class="glyphicon glyphicon-edit"></i>修改学生信息</h2>
            </div>
            <div class="box-content">
                <form action="updateStudent" method="post" role="form">
                    <div class="form-group">
                       <label>学号</label>
                        <input type="text" class="form-control" name="id" value="<%=student.getId() %>">
                        <label>姓名</label>
                        <input type="text" class="form-control" name="name" value="<%=student.getName() %>">
                        <label>年龄</label>  <input type="text" class="form-control"  name="age" value="<%=student.getAge() %>">
                           <label>性别</label><% if(student.getSex()==1){%><%}else{ %><%} %>
                             <select  class="form-control" name="sex"><option  value="1">--------性别--------</option><option value="1"></option><option value="0"></option></select>
                         <label>专业</label> <input type="text" class="form-control"  name="major" value="<%=student.getMajor()%>">
                       
                        <label>学院</label>  <input type="text" class="form-control"  name="college" value="<%=student.getCollege()%>">
                        <label for="exampleInputEmail1">简介</label>
                        <textarea class="form-control" rows="5" name="introduction" placeholder=" <%=student.getIntroduction()%>" style="
resize: none;" ><%=student.getIntroduction()%></textarea>
                    </div>
             
                    <button type="submit" class="btn btn-default">更新信息</button>
                </form>

            </div>
        </div>
    </div>
  
  <form action="updateStudent" method="post">

<table >
<tr><td>学号</td><td><input type="text" name="id" value="<%=id %>" readonly="true" ></td></tr>
<tr><td>姓名</td><td><input type="text" name="name" value="<%=student.getName() %>"></td></tr>
<tr><td>年龄</td><td><input type="text" name="age" value="<%=student.getAge()%>"></td></tr>
<tr><td>性别</td><td><select name="sex"><option value="1"></option><option value="0"></option></select></td></tr>
<tr><td>专业</td><td><input type="text" name="major" value="<%=student.getMajor()%>"></td></tr>
<tr><td>学院</td><td><input type="text" name="college" value="<%=student.getCollege()%>"></td></tr>
<tr><td>简介</td><td><textarea  rows="10" cols="30" name="introduction" ><%=student.getIntroduction() %></textarea></td></tr>
<tr><td colspan="2"><input type="submit" value="提交"></td></tr>
</table>
</form>

  </body>
</html>
updatestudent.jsp
<%@page import="com.student.vo.Student"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.student.action.StudentAction"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>查看学生信息</title>
    <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">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
        <link id="bs-css" href="css/bootstrap-cerulean.min.css" rel="stylesheet">

    <link href="css/charisma-app.css" rel="stylesheet">
    
  </head>
<%
String id=request.getParameter("id");
Student student=StudentAction.getStudent(id); %>
  <body>
      <div class="box col-md-3">
        <div class="box-inner">
            <div class="box-header well" data-original-title="学生信息">
                <h2><i class="glyphicon glyphicon-edit"></i>学生信息</h2>
               
                        &nbsp;<a href="index.jsp" ><h5 align="right">返回</h5></a>
                      
                              
                  
            </div>
            <div class="box-content">
                <form action="#" method="post" role="form">
                    <div class="form-group">
                       <label>学号</label>
                        <input type="text" class="form-control" name="id" placeholder="<%=student.getId() %>" readonly="readonly">
                        <label>姓名</label>
                        <input type="text" class="form-control" name="name" placeholder="<%=student.getName() %>" readonly="readonly">
                        <label>年龄</label>  <input type="text" class="form-control"  name="age" placeholder="<%=student.getAge() %>" readonly="readonly">
                           <label>性别</label><% if(student.getSex()==1){%>
                             <input type="text" class="form-control"  placeholder="男" readonly="readonly"><%}else{ %>
                            <input type="text" class="form-control"  placeholder="女" readonly="readonly"></td>
                            <%} %>
                         <label>专业</label> <input type="text" class="form-control"  name="major" placeholder="<%=student.getMajor()%>" readonly="readonly">
                       
                        <label>学院</label>  <input type="text" class="form-control"  name="college" placeholder="<%=student.getCollege()%>" readonly="readonly">
                        <label for="exampleInputEmail1">简介</label>
                        <textarea type="text" class="form-control" rows="5" name="introduction" placeholder=" <%=student.getIntroduction()%>" style="
resize: none;" readonly="readonly"></textarea>
                    </div>
             
                </form>

            </div>
        </div>
    </div>
  


  </body>
</html>
viewstudent.jsp

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <servlet>
   
    <servlet-name>StudentServlet</servlet-name>
    <servlet-class>com.student.servlet.StudentServlet</servlet-class>
  </servlet>
  
  <servlet>
    <servlet-name>addStudent</servlet-name>
    <servlet-class>com.student.servlet.StudentServlet</servlet-class>
  </servlet>
  
 <servlet>
    <servlet-name>viewStudent</servlet-name>
    <servlet-class>com.student.servlet.StudentServlet</servlet-class>
  </servlet>
  
  
    <servlet>
    <servlet-name>deleteStudent</servlet-name>
    <servlet-class>com.student.servlet.StudentServlet</servlet-class>
  </servlet>
    <servlet>
    <servlet-name>updateStudent</servlet-name>
    <servlet-class>com.student.servlet.StudentServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>StudentServlet</servlet-name>
    <url-pattern>/StudentServlet</url-pattern>
  </servlet-mapping>
  
    <servlet-mapping>
    <servlet-name>updateStudent</servlet-name>
    <url-pattern>/updateStudent</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>deleteStudent</servlet-name>
    <url-pattern>/deleteStudent</url-pattern>
  </servlet-mapping>


  <servlet-mapping>
    <servlet-name>addStudent</servlet-name>
    <url-pattern>/addStudent</url-pattern>
  </servlet-mapping>
 

  <servlet-mapping>
    <servlet-name>viewStudent</servlet-name>
    <url-pattern>/viewStudent</url-pattern>
  </servlet-mapping>
</web-app>
web.xml

css样式,可以自己添加,本人就不贴css了。

园友可以思考下分页效果怎么实现?

程序效果图

原文地址:https://www.cnblogs.com/oumyye/p/4278068.html