JavaWeb ServletContext/application初试总结

Posted shiyicode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb ServletContext/application初试总结相关的知识,希望对你有一定的参考价值。

简介:ServletContext/application

为什么将其两者放在一起介绍呢,因为他们可以被看做是同一个类,只是名字起得不同而已。
ServletContext是在Servlet中使用,而application则作为内置对象用于jsp中。
他们的作用域是整个tomcat的从启动到关闭的过程
我们可以将其看做是JavaWeb应用里的全局变量。

功能

所谓功能,也就是说,我们在什么时候会用到它们。
当你的服务端需要一些配置属性供所有客户端来进行访问,用ServletContext/application就正好。
比如:页面的访问次数,当前在线人数,等等信息。

使用

application

已经说过,application是jsp的内置对象,使用起来很方便。如下,很简单,不再赘述。

<% application.setAttribute("num", 10); %>
<% int num = (int)application.getAttribute("num"); %>

ServletContext

我们主要来说一下ServletContext的使用,既然要供所有客户端访问,那么肯定要进行初始化,这里主要有两种方式

1:通过监听器(listener)来初始化

第一步:用一个类实现ServletContextListener接口提供的两个方法
contextInitialized:在tomcat启动的时候会调用
contextDestroyed:在tomcat关闭的时候会调用
如下

public class ContextLoaderListener implements ServletContextListener 

    @Override
    public void contextInitialized(ServletContextEvent sce) 
        ServletContext servletContext = sce.getServletContext();
        servletContext.setAttribute("num", 10);
        System.out.println("begin:" + servletContext.getAttribute("num"));
    

    @Override
    public void contextDestroyed(ServletContextEvent sce) 
        ServletContext servletContext = sce.getServletContext();
        System.out.println("end:" + servletContext.getAttribute("num"));
    

第二步,在web.xml里面配置监听器,如下

<listener>
    <listener-class>com.web.listener.ContextLoaderListener</listener-class>
</listener>

2:自定义Servlet并设置Servlet的load-on-startup=1

第一步,自定义Servlet类,重写init()和destroy(),如下

public class ContextLoaderServlet implements Servlet 

    private ServletConfig config;

    @Override
    public void init(ServletConfig config) throws ServletException 
        this.config = config;
        ServletContext servletContext = config.getServletContext();
        servletContext.setAttribute("num", 10);
        System.out.println("begin:" + servletContext.getAttribute("num"));
    

    @Override
    public void destroy() 
        ServletContext servletContext = config.getServletContext();
        System.out.println("end:" + servletContext.getAttribute("num"));
    

    @Override
    public ServletConfig getServletConfig() 
        return null;
    

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException 

    

    @Override
    public String getServletInfo() 
        return null;
    

第二步,配置servlet为自启动,将如下配置添入web.xml

<servlet>
        <servlet-name>ContextLoaderServlet</servlet-name>
        <servlet-class>com.web.ContextLoaderServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ContextLoaderServlet</servlet-name>
        <url-pattern>/ContextLoaderServlet</url-pattern>
    </servlet-mapping>

以上是关于JavaWeb ServletContext/application初试总结的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb学习总结JavaWeb开发入门

javaweb这个功能怎么实现 ajax

JavaWeb学习笔记总结 目录篇

javaweb项目启动报错

javaweb怎么做一个目录树

JavaWeb学习—JavaWeb简介