首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在动态Web项目中检查/处理用户名不可用(已作为主键使用的用户名)错误

问在动态Web项目中检查/处理用户名不可用(已作为主键使用的用户名)错误
EN

Stack Overflow用户
提问于 2020-05-13 18:06:16
回答 1查看 142关注 0票数 2

我正在为大学开发项目,我是这个界面的新手,需要帮助解决这个问题。我使用SQLyog和eclipse上的动态web项目在mysql上创建了一个DB。对于注册,我使用了以下代码:

register.jsp

代码语言:javascript
复制
<form action="register1.jsp" method="post">
                    <div class="firstname">
                        <label for="firstname"></label> <input type="text"
                            placeholder="My first name is" name="firstname" required>
                    </div>
                    <div class="lastname">
                        <label for="lastname"></label> <input type="text"
                            placeholder="My last name is" name="lastname" required>
                    </div>
                    <div class="email">
                        <label for="email"></label> <input type="email"
                            placeholder="My e-mail ID is" name="email_id" required>
                    </div>
                    <div class="username">
                        <label for="username"></label> <input type="text"
                            placeholder="My username is" name="username" required>
                    </div>
                    <div class="pwd">
                        <label for="pwd"></label> <input type="password"
                            placeholder="My password is" name="pwd" required>
                    </div>
                    <div class="submit">
                        <input type="submit" value="Register" id="form_button" />
                    </div>
                </form>

register1.jsp

代码语言:javascript
复制
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%
String firstname=request.getParameter("firstname");
String lastname=request.getParameter("lastname");
String username=request.getParameter("username");
session.putValue("username",username);
String pwd=request.getParameter("pwd");
String email_id=request.getParameter("email_id");

Class.forName("com.mysql.jdbc.Driver");
Connection con= DriverManager.getConnection("jdbc:mysql://localhost/cinushi_university","CinthiyaSingh", "Cinthiya@098");
Statement st=con.createStatement();
ResultSet rs;
int i=st.executeUpdate("insert into users values('"+ username+ "','"+pwd+ "','"+firstname+ "','"+ lastname+ "','"+ email_id+ "')");
if (i > 0) {
    response.sendRedirect("login.jsp");
} else {
    request.setAttribute("errorMessage", "Already Existing Username/Email");
    request.getRequestDispatcher("Register.jsp").forward(request, response);

}%>

当查询试图违反主键(用户名)属性并显示“已在使用的用户名”的错误时,我希望重新加载注册页面。但是,服务器的错误页加载了错误详细信息。

请查一下这个。我不想再用其他文件了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 04:40:56

首先使用select语句检查表中是否已经存在username,然后如果存在显示error并重定向table.So中的insert数据,代码如下所示:

代码语言:javascript
复制
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/cinushi_university", "CinthiyaSingh", "Cinthiya@098");
    //selecting username from users table
    PreparedStatement ps = con.prepareStatement("select *from users where username=?");
    ps.setString(1, username);
    ResultSet rs = ps.executeQuery();
    //if true
    if (rs.next()) {
     //sending error message on Register page
     request.setAttribute("errorMessage", "Already Existing Username/Email");
     request.getRequestDispatcher("Register.jsp").forward(request, response);

    } else {
     //If not exist performing insert 
     PreparedStatement ps1 = con.prepareStatement("insert into users values(?,?,?,?,?)");
     //setting value for "?"
     ps1.setString(1, username);
     ps1.setString(2, pwd);
     ps1.setString(3, firstname);
     ps1.setString(4, lastname);
     ps1.setString(5, email_id);
     int i = ps1.executeUpdate();
     //if updated successfully
     if (i > 0) {
      //redirect
      response.sendRedirect("login.jsp");
     }
   //close connection
    }

然后在Register.jsp中使用${errorMessage}获取上述错误消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61781764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档