Я работал над проектом с использованием MVC, создающего JSP в качестве уровня представления. Я тестировал результат сеанса, аппликации и объекта запроса, доступного JSP. Я написал следующий код:JSP Проверка объекта по умолчанию
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Calculator</title>
</head>
<body>
<%! int result = 0;
int add_request(String num1, String num2){
if((num1 != null && num2 !=null) && (!num1.isEmpty() && !num2.isEmpty()))
result = Integer.parseInt(num1)+Integer.parseInt(num2);
return result;
}
int div_session(String number, String number1){
if((number != null && number1 != null) && (!number.isEmpty() && !number1.isEmpty()))
return (Integer.parseInt(number)/Integer.parseInt(number1));
return 0;
}
int mult_context(String number, String number1){
if((number != null && number1 != null) && (!number.isEmpty() && !number1.isEmpty()))
return (Integer.parseInt(number)*Integer.parseInt(number1));
return 0;
}
%>
<div align="center">
<form>
Number: <input type="text" name="num1" /> <br>
Number: <input type="text" name="num2" />
<div align="center">
<input type="submit" >
</div>
</form>
</div>
<%
ServletContext context = request.getServletContext();
String firstnum = request.getParameter("num1");
String secondnum = request.getParameter("num2");
if((firstnum != null && secondnum != null) && (!firstnum.isEmpty() && !secondnum.isEmpty()))
{
session.setAttribute("test1", firstnum);
session.setAttribute("test2", secondnum);
context.setAttribute("test1", firstnum);
context.setAttribute("test2", secondnum);
application.setAttribute("test1", firstnum);
application.setAttribute("test2", secondnum);
}
%>
Result:<br>
<br>Add request: <%= add_request(request.getParameter("num1"), request.getParameter("num2")) %>
<br>Division session: <%= div_session((String)session.getAttribute("test1"), (String)session.getAttribute("test2")) %>
<br>Multiplication context: <%= mult_context((String)context.getAttribute("test1"), (String)context.getAttribute("test2")) %>
<br>Application Result: <%= mult_context((String)application.getAttribute("test1"), (String)application.getAttribute("test2")) %>
</body>
</html>
Нужный выход был:
Номер: 120
Количество: 20
Добавить результат: 140
Отдел Сессия: 6
Контракт умножения: 2400
Умножение аппликата ion: 2400
И когда я повторно отправлю, тогда параметр, переданный объекту запроса, равен нулю, поэтому добавление результата должно быть нулевым. если я открываю новую вкладку, то присоединяет url без параметра, а затем добавляет результат, равный нулю. Когда я открываю другой браузер, то сеанс отдела должен быть равен нулю. но все идет так же.
Поскольку согласно теории только сеанс и объект приложения/контекста постоянны между несколькими запросами, и только контекст является постоянным через несколько сеансов.
Ребята, где я неправильно. Спасибо.
все выглядит нормально. –
Если я обновляю, тогда параметры num1 и num2 будут равны нулю, поэтому метод add покажет 0, но покажет последний результат, не обновляя результат в следующем запросе. так и сеанс и приложение. –