javawebday21(设置属性统计访问次数 获取类路径下的资源)

/*
 *一个项目中所有的资源被访问都要对访问量进行累加
 *创建一个int类型的变量 用来保存访问量 然后把它保存到ServletContext的域中 这样可以保证所有Servlet都可以访问到
 *  最初时 ServletContext中没有保存访问量相关的属性
 *  当本站第一次被访问时 创建一个变量 设置其值为1 保存到ServletContext中
 *  当以后的访问时就可以从ServletContext中获取这个变量 然后在其基础上加1
 *
 *获取ServletContext对象 查看是否存在名为count的属性 如果存在 说明不是第一次访问 如果不存在 说明是第一次访问
 *第一次访问 调用 ServletContext的setAttribute传递一个属性 名为count 值为1
 *第2~N次访问 调用ServletContext的getAttribute()方法获取 原来的访问量 给访问量加1 再调用ServletContext()的setAttribute()设置值
 *ServletContext application = this.getServletContext(); 获取ServletContext
 *Integer count = (Integer)application.getAttribute("count"); 获取ServletContext中的count属性
 *if(count == null) 如果在ServletContext中不存在count属性 那么设置count值为1表示第一次访问
 *{
 *  count = 1;
 *}else{
 *  count++;
 *}
 *response.setContentType("text/html;charset=utf-8");
 *response.getWriter().print("<h1>一共被访问了"+count+"次</h1>");
 *application.setAttribute("count",count);
 *
 *获取类路径资源 类路径对一个JavaWeb项目而言 就是/WEB-INFO/classes 和/WEB-INF/lib/每个jar包
 *Class
 *ClassLoader
 */
/*
         *1、获取ServletContext对象
         *2、从ServletContex对象中获取名为count的属性
         * 3、如果存在 给访问量加1再保存回去
         * 4、如果不存在说明是第一次访问 向ServletCotnext中保存名为count的属性 值为1 
         */
        ServletContext app = this.getServletContext();
        Integer count = (Integer) app.getAttribute("count");
        if(count == null)
        {
            app.setAttribute("count", 1);
        }
        else {
            app.setAttribute("count", count+1);
        }
        /*
         * 想浏览器输出
         *  需要使用响应对象
         */
        PrintWriter pw = response.getWriter();
        pw.print(count);
/**
     * 获取类路径下的资源
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
         *1、得到ClassLoader 
         *  先得到Class 再得到ClassLoader
         *2、调用其getResourceAsStream 得到一个InputStream
         */
//      ClassLoader cl = this.getClass().getClassLoader();
        //相对/classes
//      InputStream input = cl.getResourceAsStream("day04_01/b.txt");//classes的路径

        Class c = this.getClass();
        //相对当前.class文件所在目录
        InputStream input = c.getResourceAsStream("../a.txt");

        //相当classes文件夹
        InputStream input = c.getResourceAsStream("/a.txt");
        String s = IOUtils.toString(input);//读取输入流内容 转换成字符串输出
        System.out.println(s);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值