Java EE注册三部曲(一步曲)
一步曲(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>男 <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="重置"> <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注册三部曲(一步曲)的更多相关文章
- 【JAVA EE企业级开发四步走完全攻略】
本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划,单个发blog比较零散,所以整理此索引,决定以后每发一季JAVA EE blog后会 ...
- JAVA EE企业级开发四步走完全攻略 [转]
http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...
- Java EE中的容器和注入分析,历史与未来
Java EE中的容器和注入分析,历史与未来 java中的容器 java中的注入 容器和注入的历史和展望 一.java中的容器 java EE中的注入,使我们定义的对象能够获取对资源和其他依赖项的引用 ...
- 使用SIP Servlet为Java EE添加语音功能
会话发起协议(Session Initiation Protocol,SIP)是一种信号传输协议,用于建立.修改和终止两个端点之间的会话.SIP 可用于建立 两方呼叫.多方呼叫,或者甚至 Intern ...
- docker-compose下的java应用启动顺序两部曲之二:实战
上篇回顾 本文是<docker-compose下的java应用启动顺序两部曲>的终篇,在上一篇<docker-compose下的java应用启动顺序两部曲之一:问题分析>中,我 ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】
一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- 《Java EE 开发技术与案例教程》 这是一本好书啊:简洁精辟(相见恨晚)
第一章:Java EE 概述 1.get:JPA:Java Persistence API, 数据持久化API: JPA是一种ORM规范,它的实现实例:Hibernate.mybatis 2.Web ...
随机推荐
- Moving Tables(贪心或Dp POJ1083)
Moving Tables Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28304 Accepted: 9446 De ...
- 第四章 函数(JavaScript:语言精粹)
函数包含一组语句,用来指定对象的行为,其代码可以用来重复使用. 一般来说,编程就是将一组需求分解成一组函数和数据结构的技能. 概览:函数对象 | 函数字面量 | 调用 | 方法调用模式 | 函 ...
- Flowplayer-JavaScript API
source url: https://flowplayer.org/docs/api.html Global API access Use the flowplayer function to ge ...
- 【Python】我的Python学习笔记【1】【using Python 2】
1.模块格式 #!/usr/bin/env python # -*- coding: utf-8 -*- ... ...def main(): ...... ... if __name__=='__m ...
- [转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件
原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中 ...
- Xcode7中,如何新建category分类
易忘,所以留存: 1, 2, 3, 结果如下: 补充: http://tech.meituan.com/DiveIntoCategory.html
- Codeforces Round #339 (Div.2)
A. Link/Cut Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- Python namedtuple
我们都知道Python中的tuple是一个非常高效的集合对象,但是我们只能通过索引的方式访问这个集合中的元素,比如下面的代码: Bob=('bob',30,'male') print'Represen ...
- [jetbrains系列] 外链第三方库+代码补全设置
jetbrains系列的IDE真的是太好用了,有种相见恨晚的感觉. 在开发过程中第三方库是必不可少的,在开发的时候如果有一个可以补全的IDE可以节省查文档的时间. 举个例子:给pycharm配pysp ...
- UITableViewCell的cell重用原理
iOS设备的内存有限,如果用UITableView显示成千上万条数据, 就需要成千上万个UITableViewCell对象的话, 那将会耗尽iOS设备的内存.要解决该问题,需要重用UITableVie ...