jsp bean 的范围请求不起作用
jsp bean's Scope Request doesn't work
我对 JSP Bean 的范围 - 请求有疑问。我有一个带有 jsp bean 'message' 的页面 Index.jsp,它的范围是 Request 和一个页面 result.jsp。当我从 Index.jsp 向 result.jsp 发送请求时。我的 bean 'message' 应该保持它的价值,但现在没有了。
我尝试使用 Session 范围,我的 bean 运行良好。我搜索了所有关于这个问题的问题,但没有答案能满足我的问题。
这是我的代码:
文件 Index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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">
</head>
<body>
<%
String name = request.getParameter("name") == null ? "" :
request.getParameter("name");
int age = ( request.getParameter("age") == null ||
request.getParameter("age") == "") ? 0 :
Integer.parseInt(request.getParameter("age"));
%>
<h1>Nice to meet you</h1>
<form method="post" action="View/result.jsp">
<jsp:useBean id="message" class="com.java.Message" scope="request"/>
<jsp:setProperty name="message" property="message" value="Hello world!"/>
<label>Name: </label> <br>
<input type="text" name="name" placeholder = "Phan Dinh The"/> <br>
<label>Age: </label> <br>
<input type="number" name="age" placeholder = "25"/> <br>
<input type="checkbox" name="title"/> Senior <br>
<input type="radio" name="language" value="c#"/> C# <br>
<input type="radio" name="language" value="java"/> Java <br>
<br><br>
<jsp:include page="View/date.jsp" flush="true"/>
<input type="submit" value="submit"/>
<br><br>
</form>
<br><br>
</body>
</html>
文件result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="com.java.Message"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>Insert title here</title>
</head>
<body>
<jsp:useBean id="message" class="com.java.Message" scope="request"/>
<jsp:getProperty name="message" property="message"/>
</body>
</html>
我的class留言
package com.java;
public class Message {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String content) {
this.message = content;
}
}
我用的是Tomcat8.0.23,Jsp版本2.3,ServletAPI3.1
当你使用
<jsp:setProperty name="message" property="message" value="Hello world!"/>
在 index.jsp 文件中,属性 的范围是 index.jsp 页面的请求。一旦索引 jsp 页面 returns 到客户端,该请求就完成了。当您提交表单时,将创建一个新请求,用于生成结果页面。因此,当您在 result.jsp 代码中时,没有名为 'message'.
的请求范围参数
您可以随时将消息放入
<input type="hidden" name="message">Hello World</input>
表单的字段,并在 results.jsp 中检索它。
我对 JSP Bean 的范围 - 请求有疑问。我有一个带有 jsp bean 'message' 的页面 Index.jsp,它的范围是 Request 和一个页面 result.jsp。当我从 Index.jsp 向 result.jsp 发送请求时。我的 bean 'message' 应该保持它的价值,但现在没有了。
我尝试使用 Session 范围,我的 bean 运行良好。我搜索了所有关于这个问题的问题,但没有答案能满足我的问题。
这是我的代码: 文件 Index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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">
</head>
<body>
<%
String name = request.getParameter("name") == null ? "" :
request.getParameter("name");
int age = ( request.getParameter("age") == null ||
request.getParameter("age") == "") ? 0 :
Integer.parseInt(request.getParameter("age"));
%>
<h1>Nice to meet you</h1>
<form method="post" action="View/result.jsp">
<jsp:useBean id="message" class="com.java.Message" scope="request"/>
<jsp:setProperty name="message" property="message" value="Hello world!"/>
<label>Name: </label> <br>
<input type="text" name="name" placeholder = "Phan Dinh The"/> <br>
<label>Age: </label> <br>
<input type="number" name="age" placeholder = "25"/> <br>
<input type="checkbox" name="title"/> Senior <br>
<input type="radio" name="language" value="c#"/> C# <br>
<input type="radio" name="language" value="java"/> Java <br>
<br><br>
<jsp:include page="View/date.jsp" flush="true"/>
<input type="submit" value="submit"/>
<br><br>
</form>
<br><br>
</body>
</html>
文件result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="com.java.Message"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>Insert title here</title>
</head>
<body>
<jsp:useBean id="message" class="com.java.Message" scope="request"/>
<jsp:getProperty name="message" property="message"/>
</body>
</html>
我的class留言
package com.java;
public class Message {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String content) {
this.message = content;
}
}
我用的是Tomcat8.0.23,Jsp版本2.3,ServletAPI3.1
当你使用
<jsp:setProperty name="message" property="message" value="Hello world!"/>
在 index.jsp 文件中,属性 的范围是 index.jsp 页面的请求。一旦索引 jsp 页面 returns 到客户端,该请求就完成了。当您提交表单时,将创建一个新请求,用于生成结果页面。因此,当您在 result.jsp 代码中时,没有名为 'message'.
的请求范围参数您可以随时将消息放入
<input type="hidden" name="message">Hello World</input>
表单的字段,并在 results.jsp 中检索它。