Servlet 中的 Attribute

2024年8月31日 | 阅读 2 分钟

Servlet 中的属性是一个对象,可以从以下范围之一进行设置、获取或删除

  1. 请求范围
  2. 会话范围
  3. 应用程序范围

servlet 程序员可以使用属性将信息从一个 servlet 传递到另一个 servlet。这就像将对象从一个类传递到另一个类,以便我们可以一次又一次地重用同一个对象。

ServletRequest、HttpSession 和 ServletContext 接口的属性特定方法

以下是 4 个属性特定方法。它们如下:
  1. public void setAttribute(String name,Object object):在应用程序范围内设置给定的对象。
  2. public Object getAttribute(String name):返回指定名称的属性。
  3. public Enumeration getInitParameterNames():将上下文的初始化参数的名称作为 String 对象的 Enumeration 返回。
  4. public void removeAttribute(String name):从 servlet 上下文中删除具有给定名称的属性。

ServletContext 设置和获取属性的示例

在此示例中,我们在应用程序范围内设置属性,并从另一个 servlet 获取该值。

DemoServlet1.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DemoServlet1 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{

res.setContentType("text/html");
PrintWriter out=res.getWriter();

ServletContext context=getServletContext();
context.setAttribute("company","IBM");

out.println("Welcome to first servlet");
out.println("<a href='servlet2'>visit</a>");
out.close();

}catch(Exception e){out.println(e);}

}}

DemoServlet2.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DemoServlet2 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{

res.setContentType("text/html");
PrintWriter out=res.getWriter();

ServletContext context=getServletContext();
String n=(String)context.getAttribute("company");

out.println("Welcome to "+n);
out.close();

}catch(Exception e){out.println(e);}
}}

web.xml

<web-app>

<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>DemoServlet1</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>s2</servlet-name>
<servlet-class>DemoServlet2</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>

</web-app>


ServletConfig 和 ServletContext 的区别

servletconfig 对象指的是单个 servlet,而 servletcontext 对象指的是整个 Web 应用程序。