一步曲(html+servlet+SQL+Bean+Dao+加密(Base64))

设计思路:

1:编写前台页面jsp:register.jsp,使得用户能够实行注册操作

2:编写servlet:register.java,能够验证用户编写的信息进行合法化验证和注册

3:为了保护用户注册的数据能够好管理,进行必要的封装

4:在数据库操作方面就交给一个java类进行与数据库进行交互和操作

5:为了用户密码的安全,有必要对用户的密码进行加密(系统自带的加密技术)。

前期准备:

mysql 的jdbc驱动包

eclipse软件(已配备JDK)

tomcat软件

mysql软件

html:register.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<title>注册界面</title>
</head>
<body>
<center>
<h1>注册界面</h1>
<hr>
<form action="Register" method="post" name="register" onsubmit="javascript:
        if(document.register.username.value==''){
        alert('请输入您的姓名!');
        return false;
        }
        if(document.register.sex.value==''){
            alert('请选择您的性别!');
            return false;
        }
        if(document.register.userpwd.value==''){
            alert('请输入您的密码!');
            return false;
        }
        if(document.register.ID_number.value==''){
            alert('请输入您的身份证号码!');
            return false;
        }
        if(document.register.phone.value==''){
            alert('请输入您的手机号码!');
            return false;
        }
        if(document.register.email.value==''){
            alert('请输入您的邮箱!');
            return false;
        }
        if(document.register.home_address.value==''){
            alert('请输入您的家庭住址!');
            return false;
        }
        ">
<table>
    <tr>
        <td>姓名:</td>
        <td><input type="text" name="username"></td>
    </tr>
    <tr>
        <td>性别:</td>
        <td><input type="radio" name="sex" value="男" checked>男&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input
            type="radio" name="sex" value="女">女</td>
    </tr>
    <tr>
        <td>密码:</td>
        <td><input type="password" name="userpwd"></td>
    </tr>
    <tr>
        <td>身份证</td>
        <td><input type="text" name="ID_number" maxlength="19"></td>
    </tr>
    <tr>
        <td>手机:</td>
        <td><input type="text" name="phone" size="11" maxlength="11">(11位)</td>
    </tr>
    <tr>
        <td>邮箱:</td>
        <td><input type="text" name="email"></td>
    </tr>
    <tr>
        <td>住址:</td>
        <td><input type="text" name="home_address"></td>
    </tr>
    
    <tr>
        <td>状态:</td>
        <td><input type="text" name="info_status" readOnly="readonly"
            value="待审"></td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input type="reset" value="重置">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input
            type="submit" value="提交"></td>
    </tr>
</table>
</form>
${msg}</center>
</body>
</html>

servlet:Register.java

package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import dao.UserDao;
import util.Base64;
import bean.User;
public class Register extends HttpServlet {
    private static final long serialVersionUID = 1L;

public Register() {
    }

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

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String sex = request.getParameter("sex");
        String userpwd = request.getParameter("userpwd");
        String ID_number = request.getParameter("ID_number");
        String phone = request.getParameter("phone");
        String email = request.getParameter("email");
        String home_address = request.getParameter("home_address");
        String info_status = request.getParameter("info_status");
        /* 如果信息不完整提示信息不完整并且返回注册页面 */
        if (username.equals("") || sex.equals("") || userpwd.equals("")
                || ID_number.equals("") || phone.equals("") || email.equals("")
                ||home_address.equals("")|| info_status.equals("")) {
            request.setAttribute("msg", "Please add all message to submit!");
            request.getRequestDispatcher("register.jsp").forward(request,
                    response);
        } /* 如果注册信息完整继续执行注册环节 */

  else {
            String pwd_encrypt = "admin";
            pwd_encrypt = Base64.getBase64(userpwd);
            if (pwd_encrypt.equals("admin")) {
                System.out.println(username + "'s password encrtpt failed!!");
                request.setAttribute("msg", username
                        + "'s password encrtpt failed!!");
                request.getRequestDispatcher("register.jsp").forward(request,
                        response);
            }
            User user = new User(username, sex, userpwd, pwd_encrypt,
                    ID_number, phone, email, home_address, info_status);
            int result = UserDao.setUser(user);
            if (result > 0) {
                System.out.println("Register user success!");
                request.setAttribute("msg", "Register user success!");
                request.getRequestDispatcher("login.jsp").forward(request,
                        response);
            } else {
                System.out.println("Register user failed!");
                request.setAttribute("msg", "Register user failed!");
                request.getRequestDispatcher("register.jsp").forward(request,
                        response);
            }
        }
    }
}

Bean:User

package bean;
public class User {
    private int uid;
    private String username;
    private String sex;
    private String userpwd;
    private String pwd_encrypt;
    private String ID_number;
    private String phone;
    private String email;
    private String home_address;
    private String info_status;
    public User() {
    }
  
    public User(String username, String sex, String userpwd,
            String pwd_encrypt, String iD_number, String phone, String email,
            String home_address, String info_status) {
        this.username = username;
        this.sex = sex;
        this.userpwd = userpwd;
        this.pwd_encrypt = pwd_encrypt;
        ID_number = iD_number;
        this.phone = phone;
        this.email = email;
        this.home_address = home_address;
        this.info_status = info_status;
    }
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getUserpwd() {
        return userpwd;
    }
    public void setUserpwd(String userpwd) {
        this.userpwd = userpwd;
    }
    public String getPwd_encrypt() {
        return pwd_encrypt;
    }
    public void setPwd_encrypt(String pwd_encrypt) {
        this.pwd_encrypt = pwd_encrypt;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getSex() {
        return sex;
    }
    public void setID_number(String iD_number) {
        ID_number = iD_number;
    }
    public String getID_number() {
        return ID_number;
    }

public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getPhone() {
        return phone;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getEmail() {
        return email;
    }
    public void setHome_address(String home_address) {
        this.home_address = home_address;
    }
    public String getHome_address() {
        return home_address;
    }
    public void setInfo_status(String info_status) {
        this.info_status = info_status;
    }
    public String getInfo_status() {
        return info_status;
    }
}

Dao:UserDao.java

package dao;
import java.sql.*;
import java.util.LinkedList;
import bean.User;
import connect.jdbcUtil;
public class UserDao {
    public static int setUser(User user) {
        String sql = "insert into `user`(username,userpwd,pwd_encrypt,sex,ID_number,phone,email,home_address,info_status) values(?,?,?,?,?,?,?,?,?)";
        String parm[] = { user.getUsername(), user.getUserpwd(),
                user.getPwd_encrypt(), user.getSex(), user.getID_number(),
                user.getPhone(), user.getEmail(), user.getHome_address(),
                user.getInfo_status() };
        int x = jdbcUtil.doUpdate(sql, parm);
        return x;
    }
}

加密(Base64):Base64.java

package util;
import java.util.*;
import sun.misc.*;
public class Base64 {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        while (cin.hasNext()) {
            String pwd = cin.next();
            String miwen = getBase64(pwd);
            System.out.println("密文(" + miwen.length() + "位):" + miwen);
            String mingwen = FromBase64(miwen);
            System.out.println("明文(" + mingwen.length() + "位):" + mingwen);
        }
    }
    public static String InBase64(String str) {
        String result = getBase64(str);
        return result;
    }
    public static String OutBase64(String str) {
        String result = FromBase64(str);
        return result;
    }

// 加密
    public static String getBase64(String str) {
        byte[] b = new byte[20];
        String s = null;
        try {
            b = str.getBytes("utf-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (b != null) {
            s = new BASE64Encoder().encode(b);
        }
        return s;
    }

// 解密
    public static String FromBase64(String s) {
        byte[] b = null;
        String result = null;
        if (s != null) {
            BASE64Decoder decoder = new BASE64Decoder();
            try {
                b = decoder.decodeBuffer(s);
                result = new String(b, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }
}
数据库连接:jdbcUtil.java

package connect;
import java.sql.*;
public class jdbcUtil {
    public static String url ="jdbc:mysql://localhost:3306/project?userUnicode=true&characterEncoding=UTF-8";
    public static String user = "root";
    public static String password = "78912312";
    public static String driver = "com.mysql.jdbc.Driver";
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

public static void close(ResultSet rs, Statement sm, Connection conn) {
        try {
            if (rs != null)
                rs.close();
            if (sm != null)
                sm.close();
            if (conn != null)
                conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

public static ResultSet doQuery(String sql) {
        Connection conn = getConnection();
        if (conn == null)
            return null;
        Statement sm = null;
        ResultSet rs = null;
        try {
            sm = conn.createStatement();
            rs = sm.executeQuery(sql);
            return rs;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (rs == null && sm != null) {
                close(null, sm, conn);
            }
        }
        return rs;
    }

public static int doUpdate(String sql, String[] paras) {
        Connection conn = getConnection();
        if (conn == null)
            return 0;
        PreparedStatement psm = null;
        int result = 0;
        try {
            psm = conn.prepareStatement(sql);
            for (int i = 0; i < paras.length; i++) {
                psm.setString(i + 1, paras[i]);
            }
            result = psm.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(null, psm, conn);
        }
        return result;
    }    
}
web.xml:(增加以下内容)

<servlet>
    <servlet-name>Register</servlet-name>
    <servlet-class>servlet.Register</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/Register</url-pattern>
  </servlet-mapping>

SQL:project.sql  (MySQL)

结果:

文档结构图:

Java EE注册三部曲(一步曲)的更多相关文章

  1. 【JAVA EE企业级开发四步走完全攻略】

    本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划,单个发blog比较零散,所以整理此索引,决定以后每发一季JAVA EE blog后会 ...

  2. JAVA EE企业级开发四步走完全攻略 [转]

    http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...

  3. Java EE中的容器和注入分析,历史与未来

    Java EE中的容器和注入分析,历史与未来 java中的容器 java中的注入 容器和注入的历史和展望 一.java中的容器 java EE中的注入,使我们定义的对象能够获取对资源和其他依赖项的引用 ...

  4. 使用SIP Servlet为Java EE添加语音功能

    会话发起协议(Session Initiation Protocol,SIP)是一种信号传输协议,用于建立.修改和终止两个端点之间的会话.SIP 可用于建立 两方呼叫.多方呼叫,或者甚至 Intern ...

  5. docker-compose下的java应用启动顺序两部曲之二:实战

    上篇回顾 本文是<docker-compose下的java应用启动顺序两部曲>的终篇,在上一篇<docker-compose下的java应用启动顺序两部曲之一:问题分析>中,我 ...

  6. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  7. 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

    一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...

  8. 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

    轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...

  9. 《Java EE 开发技术与案例教程》 这是一本好书啊:简洁精辟(相见恨晚)

    第一章:Java EE 概述 1.get:JPA:Java Persistence API, 数据持久化API: JPA是一种ORM规范,它的实现实例:Hibernate.mybatis 2.Web ...

随机推荐

  1. mysql分区表的原理和优缺点

    1.分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分 ...

  2. flexigrid随手记

    最近要用到flexigrid做表格,随手记一些知识点. 引入了两个jquery库(jquery.js和jquery-1.7.1.min.js),发生冲突,只保留一个 $("#gridTabl ...

  3. Centos6版本升级

    1.查看当前版本 [root@IDC-D-1699 docker]# cat /etc/issue CentOS release 6.8 (Final) Kernel \r on an \m 2.升级 ...

  4. Java动态代理的两种实现方式:

    方式一:传统的代理 package cn.hc.domain; import java.lang.reflect.InvocationHandler; import java.lang.reflect ...

  5. 20 个值得一试的JavaScript 框架

      投递人 itwriter 发布于 2011-09-26 17:46 评论(3) 有1956人阅读 原文链接 [收藏] « » 本文介绍 20 个值得一试的 JavaScript 框架,如果你认为答 ...

  6. metasploit模块功能介绍

    metasploit的模块构成及功能分析  转载自----http://forum.cnsec.org/thread-94704-1-1.html 今天我们介绍一下metasploit的基础架构和 市 ...

  7. consul的安装配置 一centos7环境

    centos7上consul的安装--新手笔记 环境 我用的是centos7, 用的是vmware 一 安装系统后首先要设置ip ifconfig eth0 →查看IP 不过输出的信息多一些 ifco ...

  8. VB.NET中的除法运算符 与 C#中的除法运算符

    VB.NET中的除法运算符有两个:/(浮点除法).\(整数除法) C#中的除法运算符只有一个:/(除法) VB.NET中的除法运算符与C#中的除法运算符存在很大的差异,使用时注意区分. 关于VB.NE ...

  9. HTML表格与列表

    HTML表格 表格其实就是很多的小单元格,而这些小单元格很有次序的排列着,它们有很多行,很多列.这些很多行列组成的东西,就叫表格,表格是<table>标签来定义的.而<table&g ...

  10. 《BI那点儿事》META DATA(元数据)

    关于数据仓库的数据,指在数据仓库建设过程中所产生的有关数据源定义,目标定义,转换规则等相关的关键数据.同时元数据还包含关于数据含义的商业信息,所有这些信息都应当妥善保存,并很好地管理.为数据仓库的发展 ...