目录
这里主要用JSP方式实现了基本的注册功能。项目名称为NWPU_JavaWeb_Project。项目目录的组织结构为:
1.前端页面
前端页面比较简陋,只实现了基本的跳转以及输入的功能。但有几点需要注意的地方。
首先,要设置编码方式,这里设置编码方式为UTF-8。
其次,在jsp页面中有一段自动生成的代码:
这里用out.print(path + "------" + basePath);方式输出一下,在页面上的输出结果为:
因为项目名称是:NWPU_JavaWeb_Project,所以这么一输出就了解path和basePath是什么意思了。
index.jsp的代码(当前未实现登录功能):
<body>
<center>
This is my JSP's index page.
<br>
<a href="<%=path%>/user/admin/register.jsp">注册</a>
<br>
<a href="<%=path%>/user/admin/login.jsp">登录</a>
</center>
</body>
register.jsp的代码:
<html>
<head>
<base href="<%=basePath%>">
<title>register page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!-- 表单验证 -->
<script type="text/javascript">
function isValid(form){
if(form.username.value==""){
alert("用户名不能为空!");
return false;
}
if(form.userpwd.value!=form.userpwd1.value){
alert("两次输入的密码不同!");
return false;
}
if(form.userpwd.value==""){
alert("密码不能为空!");
return false;
}
if(form.userpwd1.value==""){
alert("请再次输入密码!");
return false;
}
return true;
}
</script>
</head>
<body>
<center>
<form method="post" action="<%=path%>/servlet/UserServlet?param=1"
onSubmit="return isValid(this);">
<table>
<caption>用户注册</caption>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" size="21"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="userpwd" size="21"></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="userpwd1" size="21"></td>
</tr>
<tr>
<td><input type="submit" value="注册" /></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
2.实体类beans
User.java的代码:
package com.nwpu.beans;
public class User {
private String userName;
private String userPWD;
public User(String userName, String userPWD) {
this.userName = userName;
this.userPWD = userPWD;
}
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;
}
}
3.工具类Dao
UserDao.java的代码:
package com.nwpu.dao;
import java.sql.Connection;
import java.sql.Statement;
import com.nwpu.beans.User;
import com.nwpu.db.DBUtil;
public class UserDao {
// 用户注册
public int register(User user) {
int work = -1;
Connection conn = DBUtil.getConnection();
Statement stmt = null;
try {
stmt = conn.createStatement();
String sql = "INSERT INTO user(username, userpwd) VALUES('"
+ user.getUserName() + "','" + user.getUserPWD() + "')";
System.out.println("------注册用户:------\n" + sql);
work = stmt.executeUpdate(sql);
if (work > 0) {
System.out.println("------注册成功------");
} else {
System.out.println("------注册失败------");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBUtil.closeConnection(stmt, conn);
}
return work;
}
}
4.Servlet类
UserServlet.java的代码:
package com.nwpu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.nwpu.beans.User;
import com.nwpu.dao.UserDao;
public class UserServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int param = Integer.parseInt(request.getParameter("param"));
switch (param) {
// 注册user
case 1:
this.register(request, response);
break;
// 查询user
case 2:
break;
default:
break;
}
}
// 注册
private void register(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
int work = -1;
request.setCharacterEncoding("UTF-8");
//response.setCharacterEncoding("UTF-8");//并没有用
PrintWriter out = response.getWriter();
// 获取对象
String userName = new String(request.getParameter("username").getBytes(
"ISO-8859-1"), "UTF-8");
System.out.print(userName+"---");
String userPWD = request.getParameter("userpwd");
System.out.print(userPWD+"---");
String userPWD1 = request.getParameter("userpwd1");
System.out.println(userPWD1);
// 服务器验证
/*
if (!isValid(userName, userPWD, userPWD1)) {
out.print("注册失败!");
return;
}
*/
// 打印
System.out.println(userName + "***" + userPWD);
// 注入对象
User user = new User(userName, userPWD);
UserDao dao = new UserDao();
work = dao.register(user);// 返回受影响的条数
if (work > 0) {
String msg="注册成功!";
String url="index.jsp";
//加了,弹窗就不乱码了
out.print("<html><head><meta charset='UTF-8'>");
out.println("<script>");
out.println("alert('" + msg + "');");
out.println("window.location='" + url + "'");
out.println("</script>");
out.print("</head></html>");
}
out.flush();
out.close();
}
private boolean isValid(String userName, String userPWD, String userPWD1) {
if (userName == "") {
return false;
}
if (userPWD != userPWD1) {
return false;
}
if (userPWD == "") {
return false;
}
if (userPWD1 == "") {
return false;
}
return true;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public UserServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void init() throws ServletException {
// Put your code here
}
}
5.JDBC工具类
DBUtil.java的代码:
package com.nwpu.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author yylin
*
*/
public class DBUtil {
// 连接mySql数据库
private static String mySqlDriver = "com.mysql.jdbc.Driver";// 数据库连接字符串
// “nwpu_db”是数据库名
// ?characterEncoding=utf-8 设置jdbc连接的编码方式以保证插入数据不会乱码
private static String mySqlURL = "jdbc:mysql://localhost:3306/nwpu_db?characterEncoding=UTF-8";
private static String mySqlUserName = "root";
private static String mySqlUserPSW = "123654";
// 连接SQLServer数据库
private static String sqlServerDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// 数据库连接字符串
private static String sqlServerURL = "jdbc:sqlserver://localhost:1434; DatabaseName=testJDBC";// “testJDBC”是数据库名
private static String sqlServerUserName = "sa";
private static String sqlServerUserPSW = "123654";
// 连接Oracle数据库
private static String oracleDriver = "oracle.jdbc.driver.OracleDriver";// 数据库连接字符串
private static String oracleSqlURL = "jdbc:oracle:thin:@localhost:1521:orcl";// “orcl”是数据库名
private static String oracleSqlUserName = "scott";
private static String oracleSqlUserPSW = "tiger";
// 需要连接的数据库字符串
private static String driverName = mySqlDriver;
private static String DBURL = mySqlURL;
private static String userName = mySqlUserName;
private static String userPSW = mySqlUserPSW;
// 连接数据库
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(driverName);// 加载JDBC驱动
conn = DriverManager.getConnection(DBURL, userName, userPSW);// 连接数据库
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// 关闭连接,Statement方法
public static void closeConnection(ResultSet rs, Statement stmt,
Connection conn) {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭连接,PreparedStatement方法
public static void closeConnection(PreparedStatement pstmt, Connection conn) {
try {
if (pstmt != null) {
pstmt.close();
pstmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭连接,Statement方法
public static void closeConnection(Statement stmt, Connection conn) {
// TODO Auto-generated method stub
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭连接,conn方法
public static void closeConnection(Connection conn) {
// TODO Auto-generated method stub
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
6.XML文件
xml文件代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<!-- 类名 -->
<servlet-name>UserServlet</servlet-name>
<!-- 所在的包 -->
<servlet-class>com.nwpu.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<!-- 访问的网址 -->
<url-pattern>/servlet/UserServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>