首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用servlet登录和注册不起作用

使用servlet登录和注册不起作用
EN

Stack Overflow用户
提问于 2014-10-14 00:30:30
回答 2查看 166关注 0票数 0

因此,我正在尝试创建一个登录servlet和一个注册servlet。但我似乎不能让它工作。

我正在尝试做一个网上商店,你必须先登录才能开始购物。我是web应用开发的新手,所以请耐心等待。

下面是我的代码:

登录:

代码语言:javascript
运行
复制
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) 
        {
            
            String username = request.getParameter("userName");
            String password = request.getParameter("password");
            
            if(!username.equals("") && !password.equals(""))
            {
                for(Customer c : Data.getCustomers())
                {
                    if(c.getUserName().equals(username) && c.getPasword().equals(password))
                    {
                        response.sendRedirect("Catalogue.html");
                    }
                    else
                    {
                        out.println("<!DOCTYPE html>");
                        out.println("<html>");
                        out.println("<head>");
                        out.println("<title>Invalid username or password</title>");            
                        out.println("</head>");
                        out.println("<body>");
                        out.println("<h1>Ooops, something went wrong</h1>");
                        out.println("<h2><b>Wrong username or password.</b></h2>");
                        out.println("<h2>Please </h2>");
                        out.println("<form>"
                                + "<input type=\"button\" value=\"Try again\""
                                + "onClick=\"history.go(-1);"
                                + "return true; \"></form>\"");
                        out.println("</body>");
                        out.println("</html>");  
                    }
                }
            }
            
            
        }
    }

注册:

代码语言:javascript
运行
复制
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        response.setContentType("text/html;charset=UTF-8");
        String contextPath = request.getContextPath();

        try (PrintWriter out = response.getWriter())
        {
            String firstname = request.getParameter("firstName");
            String lastname = request.getParameter("lastName");
            String username = request.getParameter("userName");
            String password = request.getParameter("password");
            String email = request.getParameter("email");

            Customer c = new Customer(firstname, lastname, username, password, email);

            if (request.getParameter("register") != null)
            {

equals("") || username.equals("") || password.equals("") || email.equals(""))
                {

                    out.println("<!DOCTYPE html>");
                    out.println("<html>");
                    out.println("<head>");
                    out.println("<title>Missing info</title>");
                    out.println("</head>");
                    out.println("<body>");
                    out.println("<h1>Ooops, something went wrong</h1>");
                    out.println("<h2><b>Please fill out all the fields to register.</b></h2>");
                    out.println("<form>"
                            + "<input type=\"button\" value=\"Try again\""
                            + "onClick=\"history.go(-1);return true; \"></form>");
                    out.println("</body>");
                    out.println("</html>");
                } else
                {

                    for (Customer customer : Data.getCustomers())
                    {
                        if (!username.equals(customer.getUserName()) &&       !password.equals(customer.getPasword()))
                        {
                            Data.addNewCustomer(firstname, lastname, username, password, email);
                 
                            response.sendRedirect("Catalogue.html");
                            
                        } else
                        {

                            out.println("<!DOCTYPE html>");
                            out.println("<html>");
                            out.println("<head>");
                            out.println("<title>Invalid username</title>");
                            out.println("</head>");
                            out.println("<body>");
                            out.println("<h1>Ooops, try again!</h1>");
                            out.println("<h2><b>Username already in use</b></h2>");
                            out.println("<h2>Please choose another one and</h2>");
                            out.println("<form>"
                                    + "<input type=\"button\" value=\"Try again\""
                                    + "onClick=\"history.go(-1);"
                                    + "return true; \"></form>");
                            out.println("</body>");
                            out.println("</html>");

                        }
                    }

                }

            }
        }

    }

HTML登录:

代码语言:javascript
运行
复制
<html>
    <head>
        <title>Login</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
    <center><h1>Login</h1></center>
    <form action="LoginServlet"
          method="post">
        <center><dl> 
            <dt><b>Please fill in your username and password to login: </b></dt>
            <dd>Username: 
            <input type="text" name="userName"></dd>
            <dd>Password: 
            <input type="password" name="password"></dd>
            </dl></center>
    <center>
        <input type="submit" name="Login" value="Login">
        <input type="submit" name="cancel" value="Cancel">
        
        <br><br><br><br><br><br>
        <b>If you don't have an account, please </b>
        <a href='Registration.html'>register</a><b>.</b>
        
        <br><br><br><img src="online-shop.jpg">
    </form>
    </center>
    </body>
</html>

HTML注册:

代码语言:javascript
运行
复制
<html>
    <head>
        <title>Register</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body> 
    <center><h1>Register</h1></center>
    <form method="post" action="RegistrationServlet">
        <center><dl> 
            <dt><b>Please fill in the information below to register: </b></dt>
            <dd>Firstname:
            <input type="text" name="firstName"></dd>
            <dd>Lastname:
            <input type="text" name="lastName"></dd>
            <dd>Username:
                <input type="text" name="userName"></dd>
            <dd>Password:
                <input type="password" name="password"></dd>
            <dd>E-mail:
                <input type="text" name="email"></dd>
            </dl></center>
    <center>
            <input type="submit" name="register" value="Submit" >
            <input type="submit" name="register" value="Cancel" >
        
        <br><br><br><img src="online-shop.jpg">
    </form>
    </center>
    </body>
    
</html>

EN

回答 2

Stack Overflow用户

发布于 2014-10-14 01:46:26

您可以放入一些日志记录,以检查至少

  1. 表示您的servlet正在被触发,
  2. 它们正在接收什么请求参数值,以及
  3. 这些参数与之进行比较的数据。

不过,我想您会发现,当Data.getCustomers()返回零客户时,您的每个servlet都会从其processRequest()方法的底部退出,而不发送重定向或向响应的输出流打印任何内容。(除了如果任何表单字段保留为空,注册servlet将发送其错误响应)。

此外,我认为当您拥有客户时,您会发现您的servlet以有趣的方式失败。它们都扫描所提供的客户,并对每个客户执行操作。您真正想要的是不同的:查找与给定用户名匹配的现有客户(不考虑密码);然后根据整体查找是否成功采取行动(包括检查密码)。也许添加一个Data.getCustomerByUsername(String)方法会更方便,而不是检索和遍历所有的客户。如果不能这样做,那么可以向servlet类添加一个类似的方法。

票数 0
EN

Stack Overflow用户

发布于 2014-10-22 14:45:44

代码语言:javascript
运行
复制
once try like this

out.println("<form><a href=\"catalogue.html\">link</a></form></body></html>");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26344696

复制
相关文章

相似问题

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