Приложение Java EE не печатает файл JSP как jsp, но как HTML - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть проект maven web-приложение.У меня есть несколько файлов JSP с HTML-кодом и тегами JSP.У меня есть соединение в локальной базе данных и несколько сервлетов.

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

<div class="hello-text"><h1>Hello <span>${sessionScope.user_name}</span>. This is yours stats:</h1></div>

Когда я вошел в систему, единственный текст, который у меня есть, это "Hello $ {sessionScope.user_name}. Это ваша статистика:

Это мой код сервлета для входа в систему:

@WebServlet("/login")
public class UserLoginServlet extends HttpServlet {

private static final long serialVersionUID = 2717450811223035557L;

private UserRepository userRepository = new UserRepositoryBean();

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    resp.setContentType("text/html");
    String login = req.getParameter("login");
    String password = req.getParameter("password");
    PrintWriter writer = resp.getWriter();

    if (login == null | login.isEmpty() | password == null | password.isEmpty()) {
        writer.write("ERROR");
        return;
    } else {
        if (userRepository.validateUser(login, password)) {
            HttpSession session = req.getSession();
            session.setAttribute("user_name", login);
            resp.sendRedirect("profile.jsp");
        } else {
            req.setAttribute("error", "Invalid login or password. Try again.");
            req.getRequestDispatcher("login.jsp").forward(req, resp);
        }
    }

    writer.close();
}

}

Почему у меня нет сообщения, например, Hello Admin. Это ваша статистика:? У меня всегда естьЗдравствуйте, $ {sessionScope.user_name}. Это ваша статистика: ...

1 Ответ

0 голосов
/ 14 февраля 2019

SendRedirect не должен смешиваться с другим выводом какой-либо страницы.

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

    String login = req.getParameter("login");
    String password = req.getParameter("password");

    if (login.isEmpty() || password.isEmpty()) {
        resp.setContentType("text/html");
        PrintWriter writer = resp.getWriter();
        writer.write("ERROR");
        return;
    }
    if (userRepository.validateUser(login, password)) {
        HttpSession session = req.getSession();
        session.setAttribute("user_name", login);
        resp.sendRedirect("profile.jsp");
    } else {
        req.setAttribute("error", "Invalid login or password. Try again.");
        req.getRequestDispatcher("login.jsp").forward(req, resp);
    }
}

Первый if может быть сделан проверкой - как часто бывает пустой ввод - красивым сообщением об ошибке, помещенным всохранена та же форма с уже выполненным вводом.

Если JSP представлен в виде HTML, убедитесь, что он имеет действительное отображение сервлета.Кроме того, JSP лучше не размещать в общедоступном каталоге, но, возможно, в WEB-INF / jsps / или подобном.

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