用Servlet、JSP实现帐号注册页面,用过滤器过滤对象防止中文乱码

本文介绍了一个使用JSP、Servlet和MySQL实现的用户注册系统的具体实现细节,包括开发环境配置、JSP页面设计、Servlet处理流程及数据库交互等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境: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>中的/*用来匹配所有请求


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex-Leung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值