`

javaWeb开发中ServletContext总结

 
阅读更多

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

  由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

 

1.多个Servlet通过ServletContext对象实现数据共享。

 

InitServletService方法中利用ServletContext对象存入需要共享的数据

 

/*获取ServletContext对象*/  

 

ServletContext context = this.getServletContext();   

 

//存入共享的数据    

 

context.setAttribute("name", "haha"); 

 

在其它的Servlet中利用ServletContext对象获取共享的数据   

 

/*获取ServletContext对象*/  

 

ServletContext context = this.getServletContext();   

 

//获取共享的数据   

 

String name = context.getAttribute("name");   

 

System.out.println("共享的内容值是:"+name);  

 

2.获取WEB应用的初始化参数

 

web.xml文件中配置需要初始化的参数信息。

 

<web-app>   

 

 <context-param>   

 

<param-name>url</param-name>   

 

<param-value>jdbc:mysql://localhost:3306/4g</param-value>   

 

 </context-param>   

 

<context-param>   

 

 <param-name>password</param-name>   

 

 <param-value>1314qr</param-value>   

 

 </context-param>   

 

 <context-param>   

 

  <param-name>user</param-name>   

 

  <param-value>root</param-value>   

 

  </context-param>   

 

</web-app>  

 

DemoServletdoPost方法中测试获取初始化参数的步骤如下:   

 

/*获取ServletContext对象*/  

 

 ServletContext context = this.getServletContext();   

 

/*获取初始化参数*/  

 

//获取指定名称的初始化参数   

 

String url = context.getInitParameter("url"); 

 

 //获取web.xml文件中所有的初始化应用参数          

 

 Enumeration<String> enumer = context.getInitParameterNames();   

 

while(enumer.hasMoreElements()){   

 

String name = enumer.nextElement();   

 

 String value = context.getInitParameter(name);   

 

 System.out.println(name+"=========="+value);   

 

    }   

 

3.实现Servlet的转发:

 

在测试的Servlet中实现转发的步骤如下:  

 

/*要利用ServletContext对象实现转发获取对象*/  

 

ServletContext context = this.getServletContext();   

 

 //request对象中存入name属性    

 

request.setAttribute("name", "haha");   

 

 /*根据转发的地址获取 RequestDispatcher对象*/  

 

RequestDispatcher  rd  = context.getRequestDispatcher("/index.jsp");   

 

//调用转发方法 以下采用任意方法即可    

 

rd.forward(request, response);   

 

  //rd.include(request, response);   

 

注意:forwardinclude的区别 

 

forward方法是把请求的内容转发到另外的一个servlet.include是把另一个servlet处理过后的内容拿过来.

 

(forward方法调用后在响应中的没有提交的内容被自动消除。将请求转发给其他的Servlet后,由

 

    被调用的Servlet负责对请求做出响应,而原先Servlet的执行则终止。      

 

   include方法使原先的Servlet和转发到的Servlet都可以输出响应信息,即原先的Servlet还可以继续输出响应信息

 

4.利用ServletContext对象读取资源文件。  

 

读取资源文件(properties文件(属性文件))的三种方式

 

配置的properties的内容如下:   

 

url=jdbc\:mysql\://localhost\:3306/3g ; 

 

user=root;

 

password=root;  

 

获取实现的代码如下:   

 

/*获取ServletContext对象*/  

 

ServletContext context = this.getServletContext();     

 

//第一种方式    

 

URL url = context.getResource("WEB-INF/classes/db.properties");   

 

InputStream is =  url.openStream();   

 

//第二种方式   

 

 /*读取db.properties文件*/  

 

String path =context.getRealPath("WEB-INF/classes/db.properties");   

 

 /*根据文件的路径 构建文件对象*/  

 

File file = new File(path);   

 

 /*根据file文件对象 创建输入流*/  

 

InputStream is = new FileInputStream(file);   

 

//第三种方式   

 

InputStream is = context.getResourceAsStream("WEB-INF/classes/db.properties ");    

 

 以三种方式任意一种可以:    

 

  /*解析properties的文件*/  

 

     Properties prop = new Properties();   

 

     //从输入流中读取属性列表(键和元素对)。   

 

      prop.load(is);   

 

      Set<String> set = prop.stringPropertyNames();   

 

       //遍历set集合   

 

       Iterator<String> it = set.iterator();   

 

       while(it.hasNext()){   

 

           String key = it.next();   

 

           String value = prop.getProperty(key);   

 

           System.out.println(key+"-----"+value);   

 

              } 

分享到:
评论

相关推荐

    方立勋:JavaWeb视频前十一天教程配套ppt下载

    方立勋JavaWeb视频教程_servlet开发和ServletConfig与ServletContext对象(第五天) 方立勋JavaWeb视频教程_request response(第六天) 方立勋JavaWeb视频教程_Cookie和Session(第七天) 方立勋JavaWeb视频教程_...

    深入体验Java Web开发内幕

    4.1 Servlet的有关概念与前置知识  4.2 Servlet开发入门  4.3 Servlet的特点及运行过程  4.4 ServletConfig接口  4.5 GenericServlet与HttpServlet类  4.6 ServletContext接口  4.7 思考与...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    《Java Web程序设计任务教程》-章节习题.docx 第1章网页开发基础 2.Java Web概述等

    在Servlet开发中,实现了多个Servlet之间数据共享的对象是【 】。 2.在Servlet容器启动每一个web应用时,就会创建一个唯一的ServletContext对象,该对象和web应用具有相同的【 】。 第4章请求和响应 会话及会话技术

    基于JavaWeb的讯友网络相册设计与实现

    当Java Web应用运行时,Servlet容器为每个Web 应用创建惟的ServletContext对象,它被同一个Web应用中所有的组件共享。 访问网络相册程序时首先进入网络相册的主界面。在该页面中共包括功能导航区域、图片展示区域、...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:...

    javaweb教程-java中级资料(ppt+txt).zip

    第六节 Web开发模型 第七节 Servlet知识 第八节 Session和ServletContext 第九节 Jsp语法和Jsp隐含对象 第十节 JavaBean知识 第十一节 MVC模式 第十二节 EL表达式 第十三节 JSTL知识1 第十四节 JSTL知识2 第十五节 ...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...

    java web 视频、电子书、源码(李兴华老师出版)

    9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:...

    Learning-working-skill

    学习工作技能 2021.01.04-2021.01.07 Git学习 2021.01.10 内部匿名类,Lambda表达,Streamstream 2021.01.17 文件类,字节流,字节缓冲流 ... Servlet,ServletConfig,ServletContext,Servlet注解开发

Global site tag (gtag.js) - Google Analytics