zoukankan      html  css  js  c++  java
  • ServletContext应用

    • WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
    • ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
    • 由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象

    ServletContext应用


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

    1)在InitServlet的Service方法中利用ServletContext对象存入需要共享的数据

    		// 获取Servlet通过ServletContex对象实现数据共享
    		ServletContext context = this.getServletContext();
    		// 存入共享的数据
    		conext.setAttribute("name", "ssss");

    2)在其他的Sevlet中利用ServletContext对象获取共享的数据

    		// 获取ServletContext对象
    		ServletContext context = this.getServletContext();
    		// 获取共享的数据
    		String name = (String)context.getAttribute("name");
    		System.out.println("共享的数据的值是" + name);


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

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

    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
    	<context-param>
    		<param-name>url</param-name>
    		<param-value>jdbc:mysql://localhost:3306/3g</param-value>
    	</context-param>
    	<context-param>
    		<param-name>user</param-name>
    		<param-value>root</param-value>
    	</context-param>
    	<context-param>
    		<param-name>password</param-name>
    		<param-value>chizhidan</param-value>
    	</context-param>
    ......
    </web-app>

    2) 在doPost中测试获取初始化参数的步骤

    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		/* 获取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的转发

    		/* 要利用ServletContext对象实现转发获取对象 */
    		ServletContext context = this.getServletContext();
    
    		// 在request对象中存入name属性
    		request.setAttribute("name", "redarmy");
    
    		/* 根据转发的地址获取 RequestDispatcher对象 */
    		REquesDspatcher rd = contex.getRequestDispatcher("/index.jsp");
    
    		// 调用转发方法 以下采用任意方法即可
    		rd.forward(request, response);



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

    A、利用ServletContext对象读取资源文件

    		
    
    /* 获取ServletContext对象 */
    ServletContext context = this.getServletContext();
    
    
    // 方式一
    URL url = context.getResource("WEB-INF/classes/db.properties");
    InputStream is = url.openStream();
    
    
    
    
    // 方式二
    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 ");
    
    
    

    B、如果在非Servlet环境下要读取资源文件时可以采用类加载器加载文件的方式读取资源

    		String path = Account.class.getClassLoader().getResource("db.properties").getPath();
    		FileReader is = new FileReader(path);


    C、解析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);
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    ORACLE触发器具体解释
    秒杀多线程第四篇 一个经典的多线程同步问题
    Java中Integer类的方法
    九大排序算法再总结
    删除条目时的确认对话框
    VirtualBox安装及使用说明和虚拟机安装XP系统图文教程
    J2EE之验证码实现
    教你用笔记本破解无线路由器password
    vSphere HA状况:未知配置错误解决的方法
    HDU 2504 又见GCD
  • 原文地址:https://www.cnblogs.com/ful1021/p/4804321.html
Copyright © 2011-2022 走看看