Servlet的三大域对象

1 Servlet的三大域对象

一个在Servlet的属性,可以在以下三个范围对象(称为域对象)内获取或删除:

  • 请求范围(request)
  • 会话范围(session)
  • 应用范围(application)

在开发中,我们可以给一个Servlet设置属性,将信息传递到另一个Servlet。就像将对象从一个类传递到另一个类一样,这样我们可以一次又一次地重用同一对象。

2 域对象操作常用方法

三个域对象都有相同的操作方法,如下:

  1. public void setAttribute(String name,Object object):在应用程序范围内设置给定的对象。
  2. public Object getAttribute(String name):返回指定名称的属性。
  3. public Enumeration getInitParameterNames():以字符串对象的枚举形式返回上下文的初始化参数的名称。
  4. public void removeAttribute(String name):从删除具有给定名称的属性。

3 给ServletContext设置和获取属性值

3.1 编写DemoServlet1

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class DemoServlet1 extends HttpServlet{

    public void doGet(HttpServletRequest req,HttpServletResponse res)
            throws ServletException,IOException
    {
        PrintWriter out = null;
        try{

            res.setContentType("text/html;charset=utf-8");
            out=res.getWriter();

            ServletContext context=getServletContext();
            context.setAttribute("name","一点教程网");

            out.println("这是DemoServlet1");
            out.println("<a href='servlet2'>点击跳转</a>");
            out.close();

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

}

3.2 编写DemoServlet2

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class DemoServlet2 extends HttpServlet{

    public void doGet(HttpServletRequest req,HttpServletResponse res)
            throws ServletException,IOException
    {
        PrintWriter out = null;
        try{

            res.setContentType("text/html;charset=utf-8");
            out=res.getWriter();

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

            out.println("欢迎访问:"+n);
            out.close();

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

}

3.3 配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

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

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

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

    <servlet-mapping>
        <servlet-name>DemoServlet2</servlet-name>
        <url-pattern>/servlet2</url-pattern>
    </servlet-mapping>
</web-app>

3.4 运行测试

先访问DemoServlet1,http://localhost:8080/servlet1,效果如下:

点击链接后,跳转到DemoServlet2,效果如下:

一点教程,一个分享编程知识的公众号。跟着站长一起学习和进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「一点教程」,你已然超越了90%的程序员!

一点教程二维码