我的招聘网-用户注册模块设计与实现

一 实体类

1 Worker

package com.lyq.bean;
import java.util.Date;
public class Worker {
    private int wID;            //应聘人员编号字段
    private String wName;       //应聘人员姓名字段
    private String sex;         //性别字段
    private Date birth;         //出生年月字段
    private String wType;       //工种字段
    private String title;       //职称字段
    private int years;          //工龄字段
    private String major;       //专业字段
    private String education;   //学历字段
    //应聘人员编号字段的get方法
    public int getwID() {
        return wID;
    }
    //应聘人员编号字段的set方法
    public void setwID(int wID) {
        this.wID = wID;
    }
    //其余字段的get和set方法请自行补充
    
    public String getwName() {
        return wName;
    }
     public void setwName(String wName) {
           this.wName = wName;
     }
     public String getSex() {
           return sex;
     }
     public void setSex(String sex) {
           this.sex = sex;
     }
     public Date getBirth() {
           return birth;
     }
     public void setBirth(Date birth) {
           this.birth = birth;
     }
     public String getwType() {
           return wType;
     }
     public void setwType(String wType) {
           this.wType = wType;
     }
     public String getTitle() {
           return title;
     }
     public void setTitle(String title) {
           this.title = title;
     }
     public int getYears() {
           return years;
     }
     public void setYears(int years) {
           this.years = years;
     }
     public String getMajor() {
           return major;
     }
     public void setMajor(String major) {
           this.major = major;
     }
     public String getEducation() {
           return education;
     }
     public void setEducation(String education) {
           this.education = education;
     }
}

2 Workuser类

package com.lyq.bean;
public class WorkUser {
    private String wUser;       //应聘人员账户名字段
    private String wPassword;   //应聘人员账户的密码字段
    private int wID;            //关联应聘人员编号字段
    //应聘人员账户名字段的get方法
    public String getwUser() {
        return wUser;
    }
    //应聘人员账户名字段的set方法
    public void setwUser(String wUser) {
        this.wUser = wUser;
    }
    
    //其余字段的get和set方法请自行补充
    //应聘人员账户密码字段的get方法
    public String getwPassword() {
        return wPassword;
    }
    //应聘人员账户密码字段的set方法
    public void setwPassword(String wPassword) {
        this.wPassword = wPassword;
    }
    //关联应聘人员编号字段的get方法
    public int getwID() {
        return wID;
    }
    //关联应聘人员编号字段的set方法
    public void setwID(int wID) {
        this.wID = wID;
    }
}

二 工具类

package com.lyq.bean;
import java.security.MessageDigest;
public class MD5Util {
    public static String md5Encode(String inStr) throws  Exception{
        MessageDigest md5 = null;
        //MessageDigest对象接收任意大小的数据,并输出固定长度的哈希值
        try {
            md5 = MessageDigest.getInstance("MD5");
            //对getInstance对象初始化,设定为MD5算法
        } catch(Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
            return "";   //失败时返回空字符串
        }
        byte[] byteArray = inStr.getBytes("UTF-8");
        //将需要加密的字段转换为字节数组,指定UTF-8编码格式
        byte[] md5Bytes = md5.digest(byteArray);
        //使用填充式操作完成哈希计算
        StringBuffer hexValue = new StringBuffer();
        //定义一个StringBuffer来存储加密字符
        for(int i = 0; i < md5Bytes.length; i++){
            int val = ((int) md5Bytes[i]) & 0xff;
            if(val < 16){
                hexValue.append("0");
            }
            hexValue.append(Integer.toHexString(val));
            //转换为十六进制存储到StringBuffer中
        }
        return hexValue.toString();
        //返回经过MD5加密后的密文
    }
}

三 DAO层

WorkerDAO

package com.lyq.bean;

import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class WorkerDAO {
    /**
     * 获取数据库连接
     * @return
     */
    //获取数据库连接,返回一个Connection对象的实例
    public Connection getConnection(){
        Connection connection = null;   //声明Connection对象的实例
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            //装载数据库驱动,若连接报错,可尝试将参数替换为"com.mysql.jdbc.Driver"
            String url = "jdbc:mysql://localhost:3306/work?characterEncoding=UTF-8";
            String username = "root";
            String password = "";       //账号密码信息根据自己MySQL系统的设定填写
            connection = DriverManager.getConnection(url, username, password);
            //建立与数据库的连接
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;  //返回Connection对象实例
    }

    /**
     * 查看所有应聘人员信息
     * @return
     * @throws IOException
     */
    public List<Worker> findAllWorker() throws IOException{
        List<Worker> list = new ArrayList<Worker>();
        Connection connection = getConnection();
        try {
            CallableStatement cStatement = connection.prepareCall("{call findAllWorker()}");
            ResultSet resultSet = cStatement.executeQuery();
            while(resultSet.next()){
                Worker worker = new Worker();
                worker.setwID(resultSet.getInt("wID"));
                worker.setwName(resultSet.getString("wName"));
                worker.setSex(resultSet.getString("sex"));
                worker.setBirth(resultSet.getDate("birth"));
                worker.setwType(resultSet.getString("wType"));
                worker.setTitle(resultSet.getString("title"));
                worker.setYears(resultSet.getInt("years"));
                worker.setMajor(resultSet.getString("major"));
                worker.setEducation(resultSet.getString("education"));
                list.add(worker);
            }
            connection.close();
            cStatement.close();
            resultSet.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

    /**
     * 通过应聘人员编号查询该应聘人员是否存在
     * @param wID
     * @return
     */
    public boolean isWorker(int wID){
        Worker worker = findWorkerByID(wID);
        if(worker == null){
            return false;
        } else {
            return true;
        }
    }

    /**
     * 通过应聘人员编号查询应聘人员信息
     * @param wID
     * @return
     */
    public Worker findWorkerByID(int wID){
        List<Worker> list = new ArrayList<Worker>();
        Connection connection = getConnection();
        try {
            CallableStatement cStatement = connection.prepareCall("{call findWorkerByID(?)}");
            cStatement.setInt(1, wID);
            ResultSet resultSet = cStatement.executeQuery();
            while(resultSet.next()){
                Worker worker = new Worker();
                worker.setwID(resultSet.getInt("wID"));
                worker.setwName(resultSet.getString("wName"));
                worker.setSex(resultSet.getString("sex"));
                worker.setBirth(resultSet.getDate("birth"));
                worker.setwType(resultSet.getString("wType"));
                worker.setTitle(resultSet.getString("title"));
                worker.setYears(resultSet.getInt("years"));
                worker.setMajor(resultSet.getString("major"));
                worker.setEducation(resultSet.getString("education"));
                list.add(worker);
            }
            connection.close();
            cStatement.close();
            resultSet.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(list == null || list.size() < 1){
            return null;
        } else {
            return list.get(0);
        }
    }

    /**
     * 添加一条待业应聘人员记录
     * @param worker
     * @return
     */
    //添加一条待就业应聘人员记录,返回一个boolean,根据返回值确实是否添加成功
    public boolean insertWorker(Worker worker){
        Connection connection = getConnection();    //获取数据库连接
        boolean flag = false;
        try {
            String sql = "insert into worker(wName, sex, birth, wType, title, years,"
                    + " major, education) value(?, ?, ?, ?, ?, ?, ?, ?)";
            //这里不需要填写wID字段,因为该字段为自动编号,数据库系统将自动添加编号
            PreparedStatement pStatement = connection.prepareStatement(sql);
            pStatement.setString(1, worker.getwName());
            //向PreparedStatement对象添加数据
            pStatement.setString(2, worker.getSex());
            java.util.Date date = worker.getBirth();
            //由于sql有关的日期类为java.sql.Date类
            //而本地获取的为java.util.Date类,因此需要转换
            java.sql.Date sqlDate = new java.sql.Date(date.getTime());
            pStatement.setDate(3, sqlDate);
            pStatement.setString(4, worker.getwType());
            pStatement.setString(5, worker.getTitle());
            pStatement.setInt(6, worker.getYears());
            pStatement.setString(7, worker.getMajor());
            pStatement.setString(8, worker.getEducation());
            int row = pStatement.executeUpdate();   //添加数据
            if(row > 0){
                //返回值为成功添加记录的条数,当返回值大于0时,表示添加成功
                flag = true;
            }
            pStatement.close(); //关闭PreparedStatement对象实例
            connection.close(); //关闭Connection对象实例
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

    /**
     * 通过姓名与出生年月查询应聘人员编号
     * @param name
     * @param birth
     * @return
     */
    //通过性别与出生年月查询应聘人员编号
    public int findWorkerID(String name, Date birth){
        List<Worker> list = new ArrayList<Worker>();
        //用来存储查询记录
        Connection connection = getConnection();
        try {
            CallableStatement cStatement = connection.prepareCall
                    ("{call findWorkerByNameAndBirth(?, ?)}");
            //调用存储过程,存储过程写法将在后文提到
            cStatement.setString(1, name);  //添加数据
            java.sql.Date sqlDate = new java.sql.Date(birth.getTime());
            cStatement.setDate(2, sqlDate);
            ResultSet resultSet = cStatement.executeQuery();
            while(resultSet.next()){
                Worker worker = new Worker();
                worker.setwID(resultSet.getInt("wID"));
                worker.setwName(resultSet.getString("wName"));
                worker.setSex(resultSet.getString("sex"));
                worker.setBirth(resultSet.getDate("birth"));
                worker.setwType(resultSet.getString("wType"));
                worker.setTitle(resultSet.getString("title"));
                worker.setYears(resultSet.getInt("years"));
                worker.setMajor(resultSet.getString("major"));
                worker.setEducation(resultSet.getString("education"));
                list.add(worker);   //从ResultSet对象中读取值
            }
            connection.close();
            cStatement.close();
            resultSet.close();  //释放资源
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(list == null || list.size() < 1){
            //判断是否查询成功
            return 0;
        } else {
            //若查询成功,则将list中的第一个值的wID字段返回
            return (list.get(0).getwID());
        }
    }
}

WorkUserDAO

package com.lyq.bean;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class WorkUserDAO {
    /**
     * 获取数据库连接
     * @return
     */
    //获取数据库连接
    public Connection getConnection(){
        Connection connection = null;   //声明Connection对象的实例
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            //装载数据库驱动,若连接报错,可尝试将参数替换为"com.mysql.jdbc.Driver"
            String url = "jdbc:mysql://localhost:3306/work?characterEncoding=UTF-8";
            String username = "root";
            String password = "";       //账号密码信息根据自己MySQL系统的设定填写
            connection = DriverManager.getConnection(url, username, password);
            //建立与数据库的连接
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;  //返回Connection对象实例
    }
    
    /**
     * 添加一条待业应聘人员账户记录
     * @param worker
     * @return
     */
    //添加一条待业应聘人员账户记录
    public boolean insertWorkUser(WorkUser workUser){
        Connection connection = getConnection();    //获取数据库连接
        boolean flag = false;
        try {
            String sql = "insert into workuser"
                    + "(wuser, wpassword, wID) value(?, ?, ?)";
            PreparedStatement pStatement = connection.prepareStatement(sql);
            pStatement.setString(1, workUser.getwUser());
            String password = MD5Util.md5Encode(workUser.getwPassword());
            //对用户输入的密码字段信息进行MD5加密处理,workuser表的密码字段存储密文
            pStatement.setString(2, password);
            pStatement.setInt(3, workUser.getwID());
            int row = pStatement.executeUpdate();
            if(row > 0){
                //判断是否添加成功,若row为0,则表示添加失败
                flag = true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

    /**
     * 通过用户名查询应聘人员账号
     * @param user
     * @return
     */
    //通过应聘人员账户名查询应聘人员账号
    public WorkUser findWorkUserByID(String user){
        List<WorkUser> list = new ArrayList<WorkUser>();
        //用来暂存查询结果的数组
        Connection connection = getConnection();
        //获取数据库连接
        try {
            CallableStatement cStatement = connection.prepareCall
                    ("{call findWorkUserByID(?)}");
            //调用数据库存储过程findWorkUserByID,参数为应聘人员账户名字段
            cStatement.setString(1, user);  //添加参数
            ResultSet resultSet = cStatement.executeQuery();
            //执行查询语句
            while(resultSet.next()){
                WorkUser workUser = new WorkUser();
                workUser.setwUser(resultSet.getString("wuser"));
                workUser.setwPassword(resultSet.getString("wpassword"));
                workUser.setwID(resultSet.getInt("wID"));
                list.add(workUser);
                //将查询结果存储到list中
            }
            connection.close(); //关闭数据库连接
            cStatement.close();
            resultSet.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(list == null || list.size() < 1){
            //判断是否查询成功
            return null;
        } else {
            //若查询成功则将结果从list中取出并返回
            return list.get(0);
        }
    }
}

四 视图层

1 应聘人员注册页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;  charset=UTF-8">
<script language="javascript" type="text/javascript"
     src="My97DatePicker/WdatePicker.js"></script>
<title>待就业人员注册</title>
</head>
<body>
    <div style="background-image: url('images/backmm.jpg');">
        <form action="addWorker.jsp" method="post">
            <table align="center">
                <tr>
                    <td align="center" colspan="2">
                        <h2>
                            <b>
待就业人员注册</b>
                        </h2>
                        <hr>
                    </td>
                </tr>
                <tr>
                    <td align="right">注册账号:</td>
                    <td><input type="text" name="wuser"></td>
                </tr>
                <tr>
                    <td align="right">密&nbsp;&nbsp;&nbsp;&nbsp;码:</td>
                    <td><input type="password"  name="wpassword"></td>
                </tr>
                <tr>
                    <td align="center" colspan="2"><hr></td>
                </tr>
                <tr>
                    <td align="right">姓&nbsp;&nbsp;&nbsp;&nbsp;名:</td>
                    <td><input type="text" name="wName"></td>
                </tr>
                <tr>
                    <td align="right">性&nbsp;&nbsp;&nbsp;&nbsp;别:</td>
                    <td><select name="sex" size="1">
                            <option value="男">男</option>
                            <option value="女">女</option>
                    </select></td>
                </tr>
                <tr>
                    <td align="right">出生年月:</td>
                    <td><input name="birth" class="Wdate"
                         onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})">
                    </td>
                </tr>
                <tr>
                    <td align="right">工作类别:</td>
                    <td><input type="text" name="wType"></td>
                </tr>
                <tr>
                    <td align="right">职&nbsp;&nbsp;&nbsp;&nbsp;称:</td>
                    <td><input type="text" name="title"></td>
                </tr>
                <tr>
                    <td align="right">工作年限:</td>
                    <td><select name="years" size="1">
                            <%
                            for (int i = 0; i < 20; i++) {
                            %>
                            <option value="<%=i + 1%>"><%=i +  1%></option>
                            <%
                            }
                            %>
                    </select></td>
                </tr>
                <tr>
                    <td align="right">专&nbsp;&nbsp;&nbsp;&nbsp;业:</td>
                    <td><input type="text" name="major"></td>
                </tr>
                <tr>
                    <td align="right">学&nbsp;&nbsp;&nbsp;&nbsp;历:</td>
                    <td><select name="education" size="1">
                            <option value="初中及以下">初中及以下</option>
                            <option value="高中">高中</option>
                            <option value="专科">专科</option>
                            <option value="本科">本科</option>
                            <option value="硕士研究生">硕士研究生</option>
                            <option value="博士研究生">博士研究生</option>
                    </select></td>
                </tr>
                <tr>
                    <td>
</td>
                </tr>
                <tr>
                    <td align="center" colspan="2"><input  type="submit"
                    value="注&nbsp;&nbsp;&nbsp;&nbsp;册"></td>
                </tr>
                <tr>
                    <td align="right" colspan="2"><a  href="index.jsp">返回主页</a></td>
                </tr>
                <tr>
                    <td>
</td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>

2 用户注册事件处理页

<%@page import="com.lyq.bean.WorkUserDAO"%>
<%@page import="com.lyq.bean.WorkUser"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="com.lyq.bean.Worker"%>
<%@page import="com.lyq.bean.WorkerDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;  charset=UTF-8">
<title>添加待就业人员信息</title>
</head>
<body>
    <%
    request.setCharacterEncoding("utf-8");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Worker worker = new Worker();   //用于存储用户输入信息
    worker.setwName(new String(request.getParameter("wName")));
    //设计编码格式问题,将从newWorker.jsp页面中提取到的数据转码为gbk格式
    worker.setSex(new String(request.getParameter("sex")));
    worker.setBirth(sdf.parse(request.getParameter("birth")));
    worker.setwType(new String(request.getParameter("wType")));
    worker.setTitle(new String(request.getParameter("title")));
     worker.setYears(Integer.parseInt(request.getParameter("years")));
    worker.setMajor(new String(request.getParameter("major")));
    worker.setEducation(new  String(request.getParameter("education")));
    if (worker.getwName().equals("") ||  worker.getwType().equals("")
            || worker.getTitle().equals("") ||  worker.getMajor().equals("")
            || worker.getEducation().equals("")) {
        //判断是否存在空字段,若存在空字段则提示错误
    %>
        所有个人信息不能放空!
    <a href="newWorker.jsp">重新填写注册信息</a>
    <%
    } else {
        boolean flag = new WorkerDAO().insertWorker(worker);
        //首先写入职工个人信息表,成功后再写入职工账户表
        if (flag) {
            WorkUser workUser = new WorkUser();
            workUser.setwUser(new  String(request.getParameter("wuser")));
            workUser.setwPassword(new  String(request.getParameter("wpassword")));
            workUser.setwID(new  WorkerDAO().findWorkerID(worker.getwName(), worker.getBirth()));
            //从职工表中查询得到其职工编号
            boolean userFlag = new  WorkUserDAO().insertWorkUser(workUser);
            //写入职工账户表
            if (flag) {
                out.print("职工注册成功!您的职工编号为:" +  workUser.getwID());
                } else {
                    out.print("职工注册失败!");
                }
            } else {
                out.print("添加数据失败!");
            }
        %>
    <a href="index.jsp">返回主页</a>
    <%
    }
    %>
</body>
</html>

五 运行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值