开发环境:NetBeans 8.0
操作系统:Ubuntu 14.04 64bit
数据库:Mysql 5.5
JSP代码:
<%--
Document : index
Created on : 2014-4-24, 19:32:31
Author : pleung
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
<h1 align="center">BlackHole</h1>
<form action="SaveServlet" method="post" onsubmit="return reg(this);">
<table align="center" border="0" width="500">
<tr>
<td align="right" width="30%">用户名:</td>
<td><input type="text" name="username" class="box"></td>
</tr>
<tr>
<td align="right" width="30%">密 码:</td>
<td><input type="password" name="password" class="box"></td>
</tr>
<tr>
<td align="right" width="30%">确认密码:</td>
<td><input type="password" name="repassword" class="box"></td>
</tr>
<tr>
<td align="right">性别:</td>
<td>
<input type="radio" name="sex" value="男" checked="checked">男
<input type="radio" name="sex" value="女">女
</td>
</tr>
<tr>
<td align="right">密码找回问题:</td>
<td><input type="text" name="question" class="box"></td>
</tr>
<tr>
<td align="right">密码找回答案:</td>
<td><input type="text" name="answer" class="box"></td>
</tr>
<tr>
<td align="right">邮 箱:</td>
<td><input type="text" name="email" class="box"></td>
</tr>
<tr>
<td colspan="2" align="center" height="40">
<input type="submit" value="注 册">
<input type="reset" value="重 置">
</td>
</tr>
</table>
</form>
</body>
</html>
Servlet代码:
package org.pleung.course;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author pleung
*/
@WebServlet(name = "SaveServlet", urlPatterns = {"/SaveServlet"})
public class SaveServlet extends HttpServlet {
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//TODO
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection con = null;
try{
//注册mysql驱动程序
Class.forName("com.mysql.jdbc.Driver");
//DriverManager驱动管理器
con = DriverManager.getConnection("jdbc:mysql://localhost/zhuce?characterEncoding=utf8","root","156987423");
if(con != null){
System.out.println("数据库连接成功");
}
}catch(Exception e){
e.printStackTrace();
}
response.setContentType("text/html");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//获取post请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String question = request.getParameter("question");
String answer =request.getParameter("answer");
String email = request.getParameter("email");
if(con != null){
try{
//将数据插入mysql对应表
String sql = "insert into tb_user(username,password,sex,question,answer,email)"
+"values(?,?,?,?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2,password);
ps.setString(3,sex);
ps.setString(4,question);
ps.setString(5,answer);
ps.setString(6,answer);
ps.executeUpdate();
PrintWriter out = response.getWriter();
out.printf("<h1 aling = 'center'>");
out.printf(username+"注册成功!");
out.printf("</h1>");
out.flush();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}else{
response.sendError(500,"数据库连接错误!");
}
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
过滤器代码:
package org.pleung.course;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* @author pleung
*/
public class testFilter implements Filter{
String encoding = null;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//获取初始化参数
encoding = filterConfig.getInitParameter("encoding");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//对请求进行过滤处理
//判断字符编码是否为空
if(encoding != null){
//设置request的编码格式
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setContentType("text/html;charset="+encoding);
}
//传递给下一个过滤器
chain.doFilter(request,response);
}
@Override
public void destroy() {
//销毁方法,释放资源
encoding = null;
}
}
过滤器web.xml代码块:
<!--声明-->
<filter>
<!--过滤器名称-->
<filter-name>testFilter</filter-name>
<!--过滤器完整类名-->
<filter-class>org.pleung.course.testFilter</filter-class>
<!--初始化参数-->
<init-param>
<!--参数名称-->
<param-name>encoding</param-name>
<!--参数值-->
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!--过滤器映射-->
<filter-mapping>
<filter-name>testFilter</filter-name>
<!--过滤器URL映射-->
<url-pattern>/*</url-pattern>
</filter-mapping>
<url-pattern>/*</url-pattern>中的/*用来匹配所有请求