Элегантный способ реализовать страницу входа в JSP - PullRequest
1 голос
/ 09 марта 2012

Я новичок в веб-разработке JSP.У меня есть страница входа в систему (Login.jsp) для моего веб-приложения, которая имеет стандартные элементы управления входом в систему (например, имя пользователя, поля ввода пароля, флажок Запомнить меня и кнопку входа в систему), чего я хочу достичь, когда пользователь предоставляет учетные данные, после отправкиподробнее, вызывается Authenticate.jsp, где учетные данные сопоставляются с базой данных, если они правильные, создается сеанс для этого пользователя и если учетные данные неверны.Я перенаправляю пользователя обратно на страницу входа с помощью response.sendRedirect("./Login.jsp?status=fail");

В файле Login.jsp всегда проверяется параметр status, и когда он дает значение fail, у меня есть <div> ниже текстовых полей, в которых естьсообщение User Name or Password Incorrect!, показывается пользователю при такой ошибке.Безопасно ли отправлять такие параметры через URL (для данной цели)?Какой более подходящий или стандартный способ реализовать что-то подобное?Кроме того, когда пользователь заходит на страницу входа в первый раз, при поиске параметра status будет выброшено NullPointerException.У меня есть весь код Login.jsp для проверки параметра, как показано ниже.

    try
    {
        String stat = request.getParameter("Status");
        if(stat.equalsIgnoreCase("fail"))
            msg = "Invalid Username or Password!";
        else
            msg = " ";
    }
    catch(NullPointerException e)
    {
        msg = " ";
    }
    catch(Exception e)
    {
        out.println(e);
    }

И этот строковый объект msg записан в этот <div>, как я уже упоминал.Поэтому, если параметр status не найден, предполагается, что пользователь посещает страницу в первый раз, и, следовательно, сообщение о неверных учетных данных не будет отображаться.

Возможно, это некак это реализовано в реальных системах.

Исправьте меня.

Спасибо.

Примечание: При поиске того же запроса в Интернете большинствоиз них была другая страница JSP для неудачного входа в систему, хотя я хочу оставить только одну страницу для этого.

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Вот в вашем коде String stat = request.getParameter("Status");

stat всегда будет NULL при доступе к Login.jsp. Это неправильный способ реализовать это.

Всегда предлагается реализовать шаблон MVC, где у вас есть JSP для представления и просмотра. Servlets для перенаправления запросов и Beans в качестве модели.

Вот еще несколько объяснений ...

1) Разделение интересов (SoC). Позвольте вашему представлению (jsp) обрабатывать рендеринг, Контроллер (сервлет) обрабатывает поток приложения и всю вашу обработку в другом наборе классов. Это было бы основами MVC. Вот определение википедии для простого макета.

Model - The model is a collection of Java classes that form a software application 
intended to store, and optionally separate, data. A single front end class that can
communicate with any user interface (for example: a console, a graphical user interface,
or a web application).


View - The view is represented by a Java Server Page,
with data being transported to the page in the HttpServletRequest or HttpSession.

Controller - The Controller servlet communicates with the front end of the model and loads the HttpServletRequest or HttpSession with appropriate data,
before forwarding the HttpServletRequest and Response to the JSP using a RequestDispatcher.

Вы должны создать сервлет, который вызывается из Login.jsp, а затем вы получаете параметры из запросов и затем проверяете учетные данные. Затем выполняете такие задачи, как ведение сеансов после проверки учетных данных. Перенаправить из сервлета либо на Login.jsp с параметрами, если неверные учетные данные поддерживаются, либо на другую страницу после аутентификации пользователя.

1 голос
/ 09 марта 2012

При профессиональном развитии вы намного лучше, если используете систему безопасности. Оба Apache Shiro & Spring Security являются очень хорошими кандидатами для обеспечения безопасности в вашем проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...