gpt4 book ai didi

java - JSP 默认对象验证

转载 作者:行者123 更新时间:2023-12-01 21:45:21 30 4
gpt4 key购买 nike

我正在开发一个使用 MVC 设计并以 JSP 作为 View 层的项目。我正在测试 JSP 可用的 session 、应用程序和请求对象的结果。我编写了以下代码:

<%@ 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
分区 session :6
乘法上下文:2400
乘法应用:2400

当我重新提交时,传递给请求对象的参数为空,因此添加结果应该为零。如果我打开一个新选项卡,访问不带参数的 url,则添加结果应该为零。当我打开其他浏览器时,分区 session 应该为零。但一切都会一样。


因为根据理论,只有 session 和应用程序/上下文对象在多个请求之间是持久的,并且只有上下文在多个 session 中是持久的。


各位,我哪里出错了。谢谢。

最佳答案

您已经创建了从翻译后的 JSP 创建的 Servlet 实例的实例变量。

<%! int result = 0   

您需要重新加载 JSP 或 Web 应用程序才能恢复为零。在 Tomcat 中(参见工作文件夹),如下所示

public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {

int result = 0;
...
}

因此,在add_request方法中,当参数为空时,将返回result的持久值。

关于java - JSP 默认对象验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062212/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com