javaWeb 简单注册登录(含数据库连接) -- (三) 实现用户注册请求的响应

传进来什么

根据第一篇
中js的逻辑判断(逻辑问题先不看), 基本的学号、账号和密码长度之类不符的都已经筛完了, 能够通过表单提交的参数值只有是否重复需要判断
如果未重复, 插入用户数据
同时要记录注册结果, 以页面的形式反馈给用户


如何判断

这里写图片描述
1. 根据上一篇创建的user表信息可知, user表以User字段为主码, 所以要判断的就是传进来的user是否已经在user表的User字段值集合中
2. 所以, 需要对数据库进行查询, 获取User字段值集合
3. 如何未出现重复, 还要把新的用户信息插入user表中
4. 把能够体现判断结果状态的对象设置为请求对象的属性
5. 把请求分派给一个jsp


新建一个名为registerServlet的servlet, 用来处理该请求

在web.xml中配置registerServlet

 <servlet>
    <servlet-name>register</servlet-name>
    <servlet-class>adrui.registerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>register</servlet-name>
    <url-pattern>/register.do</url-pattern>
    <!-- 这里这个映射的url要和login.html中action的属性值一致()表示同意虚拟目录 -->
  </servlet-mapping>

registerServlet.java

package adrui;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
/**
 * Servlet implementation class registerServlet
 */
@WebServlet("/registerServlet")
public class registerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static Statement state = null;
    private static String sql = null;
    private static ResultSet rs = null;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public registerServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
     /**表单里是method="POST"*/
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //doGet(request, response);
        String sno = request.getParameter("Sno");
        String user = request.getParameter("LoginUser");
        String pass = request.getParameter("LoginPass");
        //获取register.html中输入的参数值(参数名和name属性值对应)
        Connection conn = (Connection)(getServletContext().getAttribute("conn"));
        //根据上下文获取数据库连接对象
        try{
            state = conn.createStatement();//根据连接创建陈述式对象
            sql = "select User from user";
            rs = state.executeQuery(sql);//执行查询语句
            boolean f = true;
            while(rs.next()){//遍历
                if(rs.getString(1).equals(user)){
                    f = false;
                    break;
                }
            }
            String res = "false";//res作为标识结果的对象
            if(f){//未重复
                res = "true";
                //System.out.println("f = true");
                sql = "insert into user values('" + sno + "', '" + user + "', '" + pass + "')";
                state.executeUpdate(sql);//插入数据 

            }
            request.setAttribute("res", res);//设置请求属性
            RequestDispatcher view = request.getRequestDispatcher("register.jsp");
            view.forward(request, response);//分派
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

}


register.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="refresh" content="10;url=login.html">
<title>Register Result</title>
</head>
<body>
    <!-- 获取标识结果对象 -->
    <% String f = (String)request.getAttribute("res");
        if(f.equals("true")){
    %>
    <p>恭喜您注册成功, <span style='font-family:"consolas";' id="cnt"></span>秒后将自动跳转登录页面</p>
    <a href="login.html">点击跳转</a>
    <script type="text/javascript">
        var sec = 10;
        function cnt()
        {
            document.getElementById("cnt").innerHTML = sec--;
            setTimeout("cnt()", 1000);
        }
        window.onload = cnt();<!-- 计数器 -->
    </script>
    <%
        }else{  
    %>
    <p>抱歉, 该用户名已被注册</p>
    <p><a href="register.html">点击返回注册页面</a></p>
    <p><a href="login.html">去往登录页面</a></p>
    <% } %>
</body>
</html>

测试:
1.
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
2.
这里写图片描述

这里写图片描述


以上

  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值