由servlet设置的属性存储在哪里?
以下是我的servlet:
public class ServletExample extends HttpServlet { private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(request.getParameter("firstname") == null || request.getParameter("lastname") == null){
this.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
return;
}
String firstName = request.getParameter("firstname");
String lastName = request.getParameter("lastname");
request.setAttribute("firstname", firstName);
request.setAttribute("lastname", lastName);
this.getServletContext().getRequestDispatcher("/output.jsp").forward(request, response);
}
}
以下是我的index.jsp
:
<?xml version="1.0" encoding="ISO-8859-1" ?><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<form action="servletexample" method="post" >
<table border="0">
<tr>
<td>First Name:</td> <td><input type="text" name="firstname" /></td>
</tr>
<tr>
<td>Last Name:</td> <td><input type="text" name="lastname" /></td>
</tr>
<tr>
<td colspan="2"> <input type="submit" value="Submit" /></td>
</tr>
</table>
</form>
</body>
</html>
以下是我的output.jsp
:
<?xml version="1.0" encoding="ISO-8859-1" ?><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<h1>Your first and last name is: </h1>
<%
/*String firstName = (String)request.getAttribute("firstname");
String lastName = (String)request.getAttribute("lastname");*/
String firstName = request.getParameter("firstname");
String lastName = request.getParameter("lastname");
out.print(firstName + " " + lastName);
%>
</body>
</html>
我了解到,当加载Web应用程序时,servlet容器将创建ServletContext
一次并保存在服务器的内存中。ServletContext
是适用于整个Web应用程序的属性和配置的集合
按照上面的servletexample,request.setattribute
用于创建新属性。
1)
这些属性存储在ServletContext
吗?
2)
存储在其中的那些属性和配置是ServletContext
什么?
回答:
有三个范围:
- 应用范围(即SevletContext)
- 会话范围(即HttpSession)
- 请求范围(即HttpServletRequest)
获取ServletContext对象:
- getServletContext()。set attribute(“ name”,“ value”); //现在可以从应用程序内的任何Servlet访问name属性。
获取HttpSession对象:
request.getSession(true).set attribute(“ name2”,“ value”); //现在可以从当前会话访问name2属性
request.set attribute(“ name3”,“ value”);
//现在,在将响应发送回客户端之前,可以在Servlet或jsp中的任何位置访问name3属性。
问题:属性存储在哪里?
回答:属性存储在相应范围的Map(名称/值对)中。即会话映射,请求映射和ServletContext映射。
以上是 由servlet设置的属性存储在哪里? 的全部内容, 来源链接: utcz.com/qa/398668.html