添加学生信息系统

一、题目要求

二、完成页面

 

 

 

 

 

三、源代码

  代码由四个文件组成,其中一个.jsp文件,三个.java文件。

1、jsp文件代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%--设置页面的脚本支持语言为java—导入util包中的类—申明编码方式为UTF-8--%>
<% 
request.setCharacterEncoding("UTF-8"); //设置响应的编码为UTF-8
response.setCharacterEncoding("UTF-8"); //设置响应的编码为UTF-8
%>
<%
String path = request.getContextPath(); //相对Path设置
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; //相对Path设置
%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>用户注册</title>
        <style>
            a{
                text-decoration: none;
            }
        </style>
        <script type="text/javascript">
            function check() {
                var user = document.getElementById("user").value;
                var password = document.getElementById("password").value;
                var sex = document.getElementById("sex").value;
                var name = document.getElementById("name").value;
                var xuehao = document.getElementById("xuehao").value;
                var mail = document.getElementById("mail").value;
                var school = document.getElementById("school").value;
                var xi = document.getElementById("xi").value;
                var banji = document.getElementById("banji").value;
                var nianfen = document.getElementById("nianfen").value;
                var place = document.getElementById("place").value;
                var beizhu = document.getElementById("beizhu").value;
                
                var res=/^[0-9a-zA-Z]*$/; //必须是数字和英文组合
                var myPattern = new RegExp("^[a-zA-Z]");//以英文字母开头
                var userlength=document.getElementById("user").value.length;
                if(!((res.test(user))&&(myPattern.test(user))&&userlength>5&&userlength<=12)) 
                    {
                    alert('用户名必须为字母数字组成且必须为6为组成首字母大写');
                    document.getElementById("user").focus();
                    return false;
                    }
                if((res.test(password)&&password.length<8)) 
                {
                    alert('由八位英文和数字组成');
                    document.getElementById("password").focus();
                    return false;
                }
                if(sex=="")
                    {
                    alert('性别不能为空!');
                    document.getElementById("sex").focus();
                    return false;
                    }
                
                if((xuehao[0]!=2||xuehao[1]!=0||xuehao[2]!=1||xuehao[3]!=8)||xuehao.length!=8){
                    alert("学号格式不正确");
                    document.getElementById("xuehao").focus();
                    return false;
                }
                
                var kao=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
                if(!(kao.test(mail)))
                {alert("邮箱格式不正确");
                document.getElementById("mail").focus();
                return false;}
            }
        </script>
    </head>
    <body>
        <table border="0px" cellspacing="0px" cellpadding="0px" align="center" width="95%" height="100%">
            <!-- 网站头部 -->
            <tr>
                <td>
                    <!-- 一个一行三列的表格 -->
                    <table width="100%" height="50px" cellpadding="0px" cellspacing="0px" border="0px" align="center">
                        <tr height="50px">
                            <td width="33.3%">
                                <a href="https://user.qzone.qq.com/794133319?ADUIN=794133319&ADSESSION=1569985311&ADTAG=CLIENT.QQ.5659_MyTip.0&ADPUBNO=26941&source=namecardhoverstar"><img src="img/header/webheader.png" height="50px"></a>
                            </td>
                            <td width="33.3%">
                                <img src="img/header/header.png" height="47px" >
                            </td>
                            <td width="33.3%">
                                <a href="#">登陆</a>&nbsp;&nbsp;
                                <a href="#">注册</a>&nbsp;&nbsp;
                                <a href="#">购物车</a>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <!-- 导航栏 -->
            <tr height="50px" bgcolor="black">
                <td>
                    &nbsp;&nbsp;&nbsp;&nbsp;
                    <a href="index.html"><font color="whitesmoke" size="4">首页</font></a> &nbsp;&nbsp;&nbsp;&nbsp;
                    <a href="#"><font color="whitesmoke" size="3">手机数码</font></a>&nbsp;&nbsp;&nbsp;&nbsp;
                    <a href="#"><font color="whitesmoke" size="3">电脑办公</font></a>&nbsp;&nbsp;&nbsp;&nbsp;
                    <a href="#"><font color="whitesmoke" size="3">鞋靴箱包</font></a>&nbsp;&nbsp;&nbsp;&nbsp;
                    <a href="#"><font color="whitesmoke" size="3">生活电器</font></a>
                </td>
            </tr>
            <!-- 注册表单 -->
            <tr height="700px">
                <td background="img/hot/regist_bg.jpg">
                    <!-- 嵌套一个十行两列的表格 -->
                    <form action="ZhuceServlet?method=add" method="post" onsubmit="return check()">
                        <table border="0px" cellspacing="0px" cellpadding="0px" align="center" bgcolor="white" width="750px" height="500px">
                                <tr align="center"> 
                                    <td>
                                    登陆账号: <input type="text" name="user" required="required" id="user"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    登陆密码: <input type="password" name="password" required="required" id="password"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    &nbsp;&nbsp;&nbsp;&nbsp;性别:
                                    <select name="sex" id="sex">
                                        <option value="">--请选择--</option>
                                        <option value="男"></option>
                                        <option value="女"></option>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    &nbsp;&nbsp;&nbsp;&nbsp;姓名: <input type="text" name="name" required="required" id="name"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    &nbsp;&nbsp;&nbsp;&nbsp;学号: <input type="text" name="xuehao" required="required" id="xuehao"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    电子邮件: <input type="text" name="mail" id="mail"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    所在学校: <input type="text" name="school" id="school"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    &nbsp;所在系: <input type="text" name="xi" id="xi"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    所在班级: <input type="text" name="banji" id="banji"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    入学年份(届):
                                    <select name="nianfen" id="nianfen">
                                        <option value="">--请选择--</option>
                                        <option value="1999">1999</option>
                                        <option value="1997">1997</option>
                                        <option value="1996">1996</option>
                                        <option value="1995">1995</option>
                                    </select></td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    生源地: <input type="text" name="place" id="place"/>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    备注: <textarea rows="3" name="beizhu" id="beizhu"></textarea>
                                    </td>
                                </tr>
                                <tr align="center"> 
                                    <td>
                                    <input type="submit" value="添加" />
                                    </td>
                                </tr>
                            </table>
                            </form>
                </td>
            </tr>
            <!-- 广告 -->
            <tr>
                <td>
                    <img src="img/ad/footer.jpg" width="100%">
                </td>
            </tr>
            <!-- 关于我们 -->
            <tr align="center">
                <td>
                    <a href="#">关于我们</a> &nbsp;
                    <a href="#">联系我们</a>&nbsp;
                    <a href="#">招贤纳士</a>&nbsp;
                    <a href="#">法律声明</a>&nbsp;
                    <a href="#">友情链接</a>&nbsp;
                    <a href="#">支付方式</a>&nbsp;
                    <a href="#">配送方式</a>&nbsp;
                    <a href="#">服务声明</a>&nbsp;
                    <a href="#">广告声明</a>
                    
            
                </td>
            </tr>
        </table>
    </body>
</html>

2、ZhuceServlet.java 文件

package RegisterServlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import TextLogin.TextLogin;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ZhuceServlet
 */
@WebServlet("/ZhuceServlet")
public class ZhuceServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           req.setCharacterEncoding("utf-8");
           String method = req.getParameter("method");
           System.out.println(method);
           if ("add".equals(method)) {
               System.out.println("ok");
               String user = req.getParameter("user");
               String password = req.getParameter("password");
               String sex = req.getParameter("sex");
               String name = req.getParameter("name");
               String xuehao = req.getParameter("xuehao");
               String mail = req.getParameter("mail");
               String school = req.getParameter("school");
               String xi = req.getParameter("xi");
               String banji = req.getParameter("banji");
               String nianfen = req.getParameter("nianfen");
               String place = req.getParameter("place");
               String beizhu = req.getParameter("beizhu");
               boolean pd=TextLogin.add(user, password, sex, name, xuehao, mail, school, xi, banji, nianfen, place, beizhu);
               if(pd) {
                   req.setAttribute("message", "注册成功");
                   req.getRequestDispatcher("Register.jsp").forward(req,resp);
               }else {
                   req.setAttribute("message", "注册失败,请重新注册");
                   req.getRequestDispatcher("Register.jsp").forward(req,resp);
               }
           }
           
    }

    
    
    
    
    
    
    
    
    
    
    
    public ZhuceServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

3、TextLogin.java文件

package TextLogin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

import UTILS.JDBCUtil;

public class TextLogin {
    
//    @Test
//    public void ce() {
//        
//        add("2", "1", "1", "1", "1", "1", "1");
//    }
    
    
    
    public static boolean add(String user,String password,String sex,String name,String xuehao,String mail,String school,String xi,String banji,String nianfen,String place,String beizhu) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        boolean pd = false;
        System.out.println("add run!");
        try {
            //获取连接
            conn = JDBCUtil.getConn();
            //编写语句
            String sql = "insert into ceshi values(?,?,?,?,?,?,?,?,?,?,?,?)";
            //预编译
            pstmt = conn.prepareStatement(sql);
            //设置数据
            pstmt.setString(1, user);
            pstmt.setString(2, password);
            pstmt.setString(3, sex);
            pstmt.setString(4, name);
            pstmt.setString(5, xuehao);
            pstmt.setString(6, mail);
            pstmt.setString(7, school);
            pstmt.setString(8, xi);
            pstmt.setString(9, banji);
            pstmt.setString(10, nianfen);
            pstmt.setString(11, place);
            pstmt.setString(12, beizhu);
            //执行
            int res = pstmt.executeUpdate();
            //判断
            if(res>0) {
                pd=true;
            }else {
                pd=false;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            
            JDBCUtil.close(conn,pstmt);
        }
        return pd;
    }
    
//    public static boolean add(String user,String password,String name,String sex,String place,String phone,String mail) {
//        boolean pd = false;
//        Connection conn = null;
//        Statement stmt = null;
//        String sql = "insert into register2 values('"+user+"','"+password+"','"+name+"','"+sex+"','"+place+"','"+phone+"','"+mail+"')";
//        try {
//            conn = JDBCUtil.getConn();
//            stmt = conn.createStatement();
//            stmt.executeUpdate(sql);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }finally {
//            JDBCUtil.close(conn, stmt);
//            pd=true;
//        }
//        return pd;
//    }
    
    
    
}

4、JDBCUtil.java 文件

package UTILS;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtil {

    private static String url="jdbc:mysql://localhost:3306/register?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8";
    private static String user="root";
    private static String password="newpassword";
    
    public static Connection getConn() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;    
    }
    
    public static void close(Connection conn,Statement stmt,ResultSet rs) {
        if(rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt!=null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void close(Connection conn,PreparedStatement pstmt) {
        if(pstmt!=null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void close(Connection conn,Statement stmt) {
        if(stmt!=null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

四、代码分析

1、Register.jsp

  这是网页的主页面的代码,在画出页面后加入了表单的校验,当数据校验成功后会将表单数据发送到servlet层。

2、ZhuceServlet.java

  这个文件接收来自jsp页面的数据,然后调用Dao层的函数来进行数据库的写入。

3、TextLogin.java

  这个文件里存放的是用来写入数据库的代码,在该文件里调用了JDBCUtil类来获取和数据库的连接。

4、JDBCUtil.java

  这个文件里存放的类是用来注册驱动、获取和数据库的连接以及关闭相应的连接的方法,用来供TextLogin调用。

五、设计思路

  首先在jsp页面进行表单数据的校验,如果校验不成功则提示错误,然后另用户重新输入数据,如果校验成功,则将表单中的数据发送到servlet层,servlet层接收到数据后开始进行数据的存放,然后调用Dao层的add函数来进行数据库的写入,这时Dao层调用JDBCUtil来注册驱动和获取数据库的连接,然后进行数据的写入,如果写入成功则返回true,写入失败则返回false,servlet层接收到Dao层的返回值后进行不同的处理,如果写入成功则向注册页面发送注册成功的消息,反之则发生注册失败的消息。

posted @ 2019-10-21 17:32  Nevesettle  阅读(344)  评论(0编辑  收藏  举报