鱼C论坛

 找回密码
 立即注册
查看: 2888|回复: 0

[学习笔记] JSP&Servlet06

[复制链接]
发表于 2017-7-14 13:35:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
ServletContext
                一个项目只有一个ServletContext对象,我们可以在N多个Servlet中获取这个唯一的对象
                使用它给多个Servlet传递数据
                与Tomcat同生共死,启动则创建ServletContext,关闭时,ServletContext销毁
        Servlet、GenericServlet、HttpServlet都可以获得ServletContext
        Init()的参数方法  ServletConfig.getServletContext()
        或者继承上面接口,类后  调用父类方法
                        This.getServletContext()
                        This.getServletConfig.getServletContext()
       
        域对象的功能   域对象用来在多个servlet中传递数据,有存取数据功能
        ServletContext是JavaWeb四大域对象之一:
        pageContext
        ServletRequest
        HttpSession
        ServletContext
        所有域对象都有存取数据的功能,因为域对象内部有一个map,用来存储数据
       
        ServletContext对象操作方法
        Void setAttribute(String name,Object value)
                       存储一个对象,即一个域属性,键值对
        Object getAttribute(String name)
        获取ServletContext中的数据
       
        Void removeAttribute(String name)
        移除ServletContext中的域属性
       
        Enumeration getAttributeNames()
        获取该域所有属性的名称
       
        使用myeclipse创建Servlet,会自动在web.xml中配置好访问路径,以及键值对
         
        获取应用初始化参数
                Servlet只能获取自己的初始化参数,也就是局部的参数
                配置公共的初始化参数,可以为所有Servlet使用,通过调用ServletContext调用
               
                配置:web.xml
                <context-param>
                <param-neme>name</param-name>
                <param-value>value</param-value>
                </context-param>
               
        获取真实路径
                使用ServletContext对象调用getRealPath("/***")获取真实路径
                ServeltCOntext.getRealPath("/***")
               
        获取资源流
                把资源以输入流的方式获取
                ServletContext.getResourceAsStream("/***")
       
        获取指定目录下所有资源路径
                ServletContext.getResourcePath("/***")
               
        访问量统计
                创建一个int变量,保存访问量,保存到ServletContext的域中,这样所有的Servlet
                都可以访问
                1、获取ServletContext对象
                2、从ServletContext对象中获取名为count的属性
                        3、如果存在,给访问量加1,然后保存回去
                        4、如果不存在,说明是第一次访问,向ServletContext中保存名为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);
       
        获取类路径下资源
                类路径对一个JavaWEB而言,就是/WEB-INF/classes和/WEB-INF/lib/*.jar
                方法:
                        1、先得到Class,再得到ClassLoader
                        2、调用其getResourceAsStream() 得到一个InputStream
                       
                        导入第三方类包,放到lib下   a.txt在cn.itcast.servlet包里
                        Commons-io-14
                        相对/classes   
                        ClassLoader cl=this.getClass().getClassLoader(); //类加载器
                        InputStream input=cl.getResourceAsStream("cn/itcast/servlet/a.txt");
                        String s=IOUtils.toString(input);
                        System.out.println(s);
                       
                        相对.class文件所在目录
                        Class c=this.getClass();
                        InputStream input=c.getResourceAsStream("a.txt");
                        String s=IOUtils.toString(input);
                        System.out.println(s);

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
小甲鱼 + 3 + 3 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 13:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表