Javascript код для получения ответа и действия в соответствии с этим ответом сервлета

1

Я сделал регистрационную форму, которая сравнивает имена пользователей и пароли, введенные из текстового файла, а затем показывает, является ли имя пользователя/пароль неправильным или разрешен доступ.

    <form role="form" action="/traveositelogin" method="post">
                        <div class="form-group">
                            <label class="sr-only" for="form-username">Username</label>
                            <input type="text" placeholder="Username..." class="form-username form-control" id="username">
                            <p id="UsernameIncorrect" hidden>Incorrect Username. Try Again</p>
                        </div>
                        <div class="form-group">
                            <label class="sr-only" for="form-password">Password</label>
                            <input type="password" placeholder="Password..." class="form-password form-control" id="password">
                            <P id="PasswordIncorrect" hidden>Incorrect Password. Try Again.</p>
                        </div>
                              <button type="submit" class="btn" id="Login">Login</button>
                                  <p><a href="contact.html"> Forgot Password?</a></p>

                    <div class="form-group">
                </div>

Это мой код сервлета:

package com.traveosoft;

import java.io.IOException;
import java.util.Properties;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class TraveoWebsiteLoginServlet extends HttpServlet {
  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException {
      resp.setContentType("text/plain");
      resp.getWriter().println("Hello, this is a testing servlet. \n\n");
      Properties p = System.getProperties();
      p.list(resp.getWriter());

     }

     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
          throws IOException {
          String filePath = "{login.txt}";
          String username = null;
          String password = null;

      //resp.setContentType("text/plain");
      //resp.getWriter().println("Hello, this is a testing servlet. Post method \n\n");
      //Properties p = System.getProperties();
      //p.list(resp.getWriter());

      if (req.getParameter("Login")!= null )
      {
          username = req.getParameter("username");
          password = req.getParameter("password");
          //resp.sendRedirect("index.html");
      }
  try
            {
                FileInputStream fstream = new FileInputStream("login.txt");
                // Use DataInputStream to read binary NOT text.
                BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
                String strLine;
                int count = 0;

                while((strLine = br.readLine())!= null)
                {
                    //Enter userName
                    String[] creds = strLine.split(",");
                    System.out.println("creds[0], creds[1]:" + creds[0] + "," +creds[1] );
                    //System.out.println("User name from the file is:"+ creds[0]);
                    if (creds[0].equals(username))
                    {
                        //user name matches. So we need to check for password now
                        count++;                        
                        if (creds[1].equals (password))
                        {
                            //Great... password also matches. Allow the user access to our repository
                            System.out.println("Allow access");
                        }
                        else
                        {
                            // Password didn't match. Ask the user to reenter the password
                            System.out.println("Wrong password. Try Again.");
                        }
                        break;
                    }

                    //strLine = br.readLine();
                    //count++;
                    //Enter Password
                    //System.out.println("Password from the file is:"+ creds[1]);
                }
                if (count == 0 )
                {
                    // No user name matched with the user name entered by the user. So user name itself is wrong
                    System.out.println("Your user name is wrong. Try Again.");
                }
                fstream.close();
                br.close();
            }
            catch (Exception e)
            {
                System.err.println("Error: " + e.getMessage());
            }
      }

} 

Как я могу написать код javascript, который, когда имя пользователя ошибочно, печатает "имя пользователя неверно"; пароль неверен, затем печатает "пароль неправильный"; и если оба они верны, я могу поместить ссылку гиперссылки на страницу, на которой хранятся ресурсы.

Я бы оценил пример кода в javascript (вместо jsp файлов). Я все еще изучаю все это, любая помощь будет действительно оценена. Заранее спасибо.

Теги:
jsp
servlets

1 ответ

0
Лучший ответ

Если я правильно понял, вы хотите, чтобы объект ответа (или сказать сообщение) отправлялся с серверной стороны на клиентскую сторону непосредственно в JS, а не отправлял его через JSP.
Для этого вам нужно предпринять дополнительные усилия...
Вы можете выполнить следующие шаги:
1. Создайте объект ответа.
2. Преобразуйте этот объект в формат JSON.
3. Задайте свой тип содержимого ответа как text/json и установите ответ.


// Объект Response, который должен быть отправлен на JavaScript.

            public class ResponseMessage {
                private boolean isLoginSuccess;
                private String errorMessage;

                // Getters and setters ...
            }

            // Servlet code 

            ResponseMessage message = new ResponseMessage();
            message.setError(true);
            message.setErrorMessage("Your error message");
            Gson gson = new Gson(); // GSON: library to convert Java object to JSON
            String content = gson.toJson(message);
            response.setContentType("text/json");
            response.getWriter().print(content);

Код JS

function processRequest() {
var result = jQuery.ajax ({
    url: "your.url",
    method: "post",
    async: false,
    data: ""
});

// Create JS object from JSON
var message = jQuery.parseJSON(result.responseText);

// Now you can show your message
if(message.isLoginSuccess) {
    alert("Welcome");
}else{
    alert("Login Failed");
}
}
  • 0
    хм, сэр, дело в том, что строки system.out.print не работают в моем коде, как будто они не печатают тот текст, который находится в сервлете, любым способом, который я мог бы сделать. Потому что, поскольку я очень новичок в этом, я не очень хорошо разбираюсь с добытчиками и сеттерами.
  • 0
    Привет Раши, геттеры и сеттеры - не что иное, как простые методы, которые возвращают и устанавливают значения атрибутов класса соответственно. Как public getMessage () {return this.mesage; }
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню