Tomcat与JavaWeb开发技术详解(第三版)_Ch4_P137_实验:使用ServletContextListener监听器

P137实验题:修改(Tomcat与JavaEE开发技术详解(第三版))本章4.4.1节的例程4-9的CounterServlet类,并修改web.xml文件中对CounterServlet类的配置,使它能完成与4.4.2节的例程4-11的MyServletContextListener相似的功能。修改后的CounterServlet增加了以下功能:

(1)当Servlet容器启动Web应用时,就会初始化CounterServlet。

(2)当Servlet容器初始化CountServlet时,CounterServlet读取count/count.txt文件中计数器的初始值,然后创建一个具有该功能的Counter对象,把它存放在Web应用范围内。

(3)当Servlet容器销毁CounterServlet时,CounterServlet把Web应用范围内的Counter对象的计数值保存到count/count.txt文件中。

Codes:

package mypack;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

public class CounterServlet1 extends HttpServlet implements ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("(CounterServlet1)helloapp2 application is Initialized.");
    
        //获取ServletContext对象
        ServletContext context = sce.getServletContext();
        
        try {
            //从文件中读取计数器的数值
            BufferedReader reader=new BufferedReader(
                    new InputStreamReader(context.getResourceAsStream(
                            "/count/count.txt")));
            int count=Integer.parseInt(reader.readLine());
            reader.close();
            
            System.out.println("(CounterServlet1)count="+count);
            
            //创建计数器对象
            Counter counter=new Counter(count);
            //把计数器对象保存到Web应用范围
            context.setAttribute("counter", counter);
        }catch(Exception e) {
            System.out.println("errorMode:"+e.getMessage());
            
        }
    
    }
    
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("(CounterServlet1)helloapp2 application is Destroyed.");
        
        //获取ServletContext对象
        ServletContext context=sce.getServletContext();
        //从Web应用范围获得计数器对象
        Counter counter=(Counter)context.getAttribute("counter");
        
        if(counter!=null) {
            try {
                //把计数器的数值写到context.txt文件中
                String filepath=context.getRealPath("/count");
                filepath=filepath+"/count.txt";
                PrintWriter pw=new PrintWriter(filepath);
                pw.println(counter.getCount());
                
                System.out.println("(CounterServlet1)count="+counter.getCount());
                pw.close();
            }catch(Exception e){
                System.out.println("errorMode:"+e.getMessage());
            }
        }

    }
    
    public void doGet(HttpServletRequest request,HttpServletResponse response) 
            throws IOException {
        
        //获得ServletContext的引用
        ServletContext context=getServletContext();
        
        //从ServletContext中读取 counter属性
        Counter counter=(Counter)context.getAttribute("counter");
        
        //如果ServletContext中没有counter属性,就创建counter属性
        if(counter==null) {
            counter=new Counter(1);
            context.setAttribute("counter", counter);
        }
        
        response.setContentType("text/html;charset=GBK");
        PrintWriter out=response.getWriter();
        out.println("<html><head><title>CounterServlet</title></head?");
        out.println("<body>");
        
        //输入当前的counter属性
        out.println("<h1>Welcome to our web-page.You're the "+counter.getCount()+" th visiter!</h1>");
        out.println("</body></html>");
        
        counter.add(1);        //将计数器 增 1
        out.close();
    }
    
}

 

 

 

TomcatJava Web开发技术详解第二》是一本专门介绍TomcatJava Web开发技术的书籍。它详细讲解了Tomcat服务器的原理和使用方法,以及Java Web开发的基础知识和常用框架的使用。 首先,本书对Tomcat服务器进行了全面的介绍。它详细讲解了Tomcat的基本原理,包括Tomcat的架构、组件和工作流程。读者可以通过本书了解Tomcat如何处理HTTP请求、如何管理Servlet和JSP等。 其次,本书还介绍了Java Web开发的基础知识。它涵盖了Java ServletJavaServer Pages(JSP)、JavaBean等技术的基本概念和使用方法。读者可以通过本书了解Java Web开发的基本流程和常用的开发工具。 此外,本书还介绍了一些常用的Java Web开发框架,如Struts、Spring和Hibernate等。它详细讲解了这些框架的基本原理和使用方法,以及如何将它们集成到Tomcat服务器中。读者可以通过本书学习如何使用这些框架来简化开发过程,提高开发效率。 最后,本书还提供了一些实例和案例,以帮助读者更好地理解和应用所学知识。通过实践,读者可以加深对TomcatJava Web开发技术的理解,并掌握实际开发中的技巧和经验。 总之,《TomcatJava Web开发技术详解第二》是一本全面介绍TomcatJava Web开发技术的书籍,适合有一定Java基础的开发人员学习和参考。无论是对于想深入了解Tomcat的原理和使用方法,还是对于想学习Java Web开发的基本知识和常用框架的使用,本书都是一本不可多得的权威资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值