<%@ page language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>用户注册</title>
<script type="text/javascript" src="js/news.js"></script>
</head>
<%
//获取验证消息
request.setCharacterEncoding("UTF-8");
String message = (String) request.getAttribute("message");
%>
<body>
<div id="mess" style="color:red;">
<%=message != null && !message.equals("") ? message : "" %>
</div>
<form name="form1" method="post" action="control.jsp"
onsubmit="return checkAll()">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userName" id="userName"
value='<%=request.getParameter("userName") == null ? ""
: request.getParameter("userName") %>'>
</td>
</tr>
<tr>
<td>输入登录密码:</td>
<td><input type="password" name="pwd" id="pwd"
value='<%=request.getParameter("pwd") == null ? ""
: request.getParameter("pwd") %>'>
</td>
</tr>
<tr>
<td>再次输入密码:</td>
<td><input type="password" name="validatepwd" id="validatepwd"
value='<%=request.getParameter("validatepwd") == null ? ""
: request.getParameter("validatepwd") %>'>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="注册"></td>
</tr>
</table>
</form>
<body>
</html>
control.jsp
<%@page import="com.sunny.dao.UserDao"%>
<%@page import="com.sunny.daoimpl.UserDaoImpl"%>
<%@page import="com.sunny.entity.User"%>
<%@ page language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>注册处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("userName");
String pwd = request.getParameter("pwd");
String validatepwd = request.getParameter("validatepwd");
if (name == null || name.equals("")) {
request.setAttribute("message", "用户名不能为空");
request.getRequestDispatcher("register.jsp")
.forward(request, response);
} else if (pwd == null || pwd.equals("")) {
request.setAttribute("message", "密码不能为空");
request.getRequestDispatcher("register.jsp")
.forward(request, response);
}else if(validatepwd==null || validatepwd.equals("")){
request.setAttribute("message","确认密码不能为空");
} else if (!validatepwd.equals(pwd)) {
request.setAttribute("message", "两次输入的密码不一致");
request.getRequestDispatcher("register.jsp")
.forward(request, response);
} else {
User user=new User();
user.setUname(name);
user.setUpwd(pwd);
UserDao userDao=new UserDaoImpl();
int result=userDao.add(user);
if (result > 0) {
out.println("<script type='text/javascript'>"
+"alert('注册成功!马上登录。');location.href='login.jsp';"
+"</script>");
} else {
request.setAttribute("message", "注册失败,请重新注册。");
request.getRequestDispatcher("register.jsp")
.forward(request, response);
}
}
%>
</body>
</html>
package com.sunny.dao;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
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 java.util.Properties;
/**
* 数据库连接与关闭工具类。
*/
public class BaseDao {
private static String driver; // 数据库驱动字符串
private static String url; // 连接URL字符串
private static String user; // 数据库用户名
private static String password; // 用户密码
Connection conn = null;// 数据连接对象
static{//静态代码块,在类加载的时候执行
init();
}
/**
* 初始化连接参数,从配置文件里获得
*/
public static void init(){
Properties params=new Properties();
String configFile = "database.properties";//配置文件路径
//加载配置文件到输入流中
InputStream is=BaseDao.class.getClassLoader().getResourceAsStream(configFile);
try {
//从输入流中读取属性列表
params.load(is);
} catch (IOException e) {
e.printStackTrace();
}
//根据指定的获取对应的值
driver=params.getProperty("driver");
url=params.getProperty("url");
user=params.getProperty("user");
password=params.getProperty("password");
}
/**
* 获取数据库连接对象。
*/
public Connection getConnection() {
if(conn==null){
// 获取连接并捕获异常
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();// 异常处理
}
}
return conn;// 返回连接对象
}
/**
* 关闭数据库连接。
* @param conn 数据库连接
* @param stmt Statement对象
* @param rs 结果集
*/
public void closeAll(Connection conn, Statement stmt,
ResultSet rs) {
// 若结果集对象不为空,则关闭
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 若Statement对象不为空,则关闭
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 若数据库连接对象不为空,则关闭
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 增、删、改的操作
* @param sql 预编译的 SQL 语句
* @param param 预编译的 SQL 语句中的‘?’参数的字符串数组
* @return 影响的行数
*/
public int executeUpdate(String preparedSql, Object[] param) {
PreparedStatement pstmt = null;
int num = 0;
conn = getConnection();
try {
pstmt = conn.prepareStatement(preparedSql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数
}
}
num = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally{
closeAll(conn, pstmt, null);
}
return num;
}
public ResultSet executeQuery(String sql,Object[] param) throws Exception{
PreparedStatement pstmt = null;
ResultSet rs=null;
conn = getConnection();
try {
pstmt = conn.prepareStatement(sql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数
}
}
rs= pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} finally{
closeAll(conn, pstmt, rs);
}
return rs;
}
}
package com.sunny.daoimpl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.sunny.dao.BaseDao;
import com.sunny.dao.UserDao;
import com.sunny.entity.User;
public class UserDaoImpl extends BaseDao implements UserDao {
@Override
public int add(User user) {
int result=0;
Connection connection=null;
connection=this.getConnection();
String sql="insert into user (uname,upwd) values (?,?)";
Object [] param=new Object[]{user.getUname(),user.getUpwd()};
result=this.executeUpdate(sql, param);
return result;
}
@Override
/**
* 根据对象查找对象
*/
public User find(User user) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
User user2=null;
try {
conn = this.getConnection();
String sql = "select uname,upwd from user where uname = ? and upwd=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUname());
pstmt.setString(2, user.getUpwd());
rs = pstmt.executeQuery(); //获取user对象的信息
while(rs.next()) {
//将获取到的user对象的属性赋给一个新的对象user2
user2 = new User();
user2 .setUname(rs.getString("uname"));
user2.setUpwd(rs.getString("upwd"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
this.closeAll(conn, pstmt, rs);
}
return user2;
}
}