JSP Включить не работает

login.html
Этот файл содержит код для 2 кнопок. Кнопка входа в систему и регистрации 2 формы.
connected.jsp
Этот файл содержит код для 1 кнопки, которую пользователь может нажать и выйти из системы.
Controller.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="something.*" %>
<%@ page errorPage="Error.jsp" %>

<% 

request.setCharacterEncoding("ISO-8859-7");
String errorMessages = "";
String username = request.getParameter("username");
String password = request.getParameter("password");
if ((password.length() > 0) && !(username.length() > 0)) {
    errorMessages = ("message1");
    throw new Exception(errorMessages);
}
if ((username.length() > 0) && !(password.length() > 0)) {
    errorMessages = ("message2"); 
    throw new Exception(errorMessages);
}
if (!(password.length() > 0) && !(username.length() > 0)) {
    errorMessages = ("message3");
    throw new Exception(errorMessages);
}
DB_something db = new DB_something ();
db.open();
if (request.getParameter("FistName") == null) {
    db.authenticateUser(username, password);
    session.setAttribute("login_status", "connected");

} else {
    String fName = request.getParameter("FistName");
    String lName = request.getParameter("LastName");
    String email = request.getParameter("email");
    String gender = request.getParameter("sex");
    String month = request.getParameter("month");
    String day = request.getParameter("day");
    String year = request.getParameter("year");
    String address = request.getParameter("Adress");
    db.registerUser(fName, lName, email, username, password, gender, month, day, year, address);
    session.setAttribute("login_status", "connected");
}
db.close();
%>
<jsp:forward page="index.jsp" />

DB_something - это класс, который открывает и закрывает соединение с базой данных и проверяет, выполнен ли вход в систему, а также регистрирует пользователя в случае регистрации.

index.jsp

    <%
    if (request.getParameter("login_status") == null) {
    %>
    <jsp:include page="login.html" />
    <%
    } else {
        if(1==1)
            throw new Exception("error...");
    %>
    <jsp:include page="connected.jsp" />
    <%
    } 
    %> .  .  .  .

в моем index.jsp я попытался включить login.html, если пользователь не подключен (login_status = null), и включить connected.jsp, если пользователь подключен (login_status = "connected"), проблема в том, что он не работает.it всегда добавляет login.html.. Я даже пытаюсь добавить исключение throw (if 1==1, потому что в противном случае было сгенерировано исключение..), но вывод всегда одинаков (исключение никогда не работает) Есть идеи?

1 ответ

Решение

Вы сохраняете атрибут в сеансе, но пытаетесь извлечь его из запроса.

Вместо директивы -

<jsp:forward page="index.jsp" />

использовать этот:

<jsp:forward page="index.jsp">
    <jsp:param name="login_status" value="connected" />
</jsp:forward>

Или извлеките атрибут из сеанса:

if(request.getSession().getAttribute("login_status") == null) {
   ...
}
Другие вопросы по тегам