Servlet 学习笔记①

  1. dd
  2. dd
  3. dd
  4. dd
  5. dd
  6. dd

7. ServletConfig: 封装了Servlet 的配置信息,并且可以获取 ServletContext 

  • 配置初始化参数:
    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>servlettest.HelloServlet</servlet-class>
        <!-- 配置Servlet 初始化参数, 且该节点必须在load-on-startup 的前面 -->
        <init-param>
            <!-- 参数名 -->
            <param-name>username</param-name>
            <!-- 参数值 -->
            <param-value>root</param-value>    
        </init-param>
        
        <init-param>
            <param-name>password</param-name>
            <param-value>12345</param-value>
        </init-param>
        
        <!-- 指定Servlet被创建的时机 -->
        <load-on-startup>-1</load-on-startup>
    </servlet>
    • 获取初始化参数:
      • getInitParameter(String name): 获取指定参数名的初始化参数
      • getInitParameterNames(): 获取参数名组成的Enumeration对象
      • getServletName():用的比较少:
	@Override
	public void init(ServletConfig servletConfig) throws ServletException {
		System.out.println("This is init");
		
		String user = servletConfig.getInitParameter("user");
		System.out.println("user=" + user);
		
		Enumeration<String> parameterNmaes = servletConfig.getInitParameterNames();
		while (parameterNmaes.hasMoreElements()){
			String name = parameterNmaes.nextElement();
			String value = servletConfig.getInitParameter(name);
		    System.out.println(name + " = " + value);
		}
		
		String servletName = servletConfig.getServletName();
		System.out.println(servletName);
	}

  

8. ServletContext 

  • Servlet 为每一个WEB应用程序都创建了一个对应的ServletContext 对象, ServletContext 对象被包含在ServletConfig 对象中, 调用ServletConfig.getServletContext 方法可以返回ServletContext对象的引用。
  • 由于一个WEB 应用程序中的所有Servlet 都 共享一个ServletContext 对象,ServletContext 对象又称为application 对象(WEB 应用程序对象), 当前WEB 应用的初始化参数可以为所有的Servlet 获取, 而前面介绍的 Servlet 初始化参数只能被那个Servlet 所使用。
  • 该对象代表当前的WEB 应用: 可以认为ServletContext 是当前WEB应用的一个大管家, 可以从中获取当前WEB 应用的各方面的信息设置WEB 应用的初始化参数
  • 功能:
    • 获取WEB应用程序的初始化参数
    • 记录日志
    • application 域范围的属性
    • 访问资源文件
    • 获取虚拟路径锁映射的本地路径
    • WEB 应用程序之间的访问
    • ServletContext 的其他方法

 

    <!-- 配置当前WEB 应用的初始化参数 -->
    <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    
    <context-param>
        <param-name>jdbcUrl</param-name>
        <param-value>jdbc:mysql:///atguigu</param-value>
    </context-param>

① 获取当前WEB 应用的初始化参数: 

  • getInitParameterNames()
  • getInitParameter()
	public void init(ServletConfig servletConfig) throws ServletException {
		ServletContext servletContext = servletConfig.getServletContext();
		String driver = servletContext.getInitParameter("driver");
		System.out.println("driver=" + driver);
		
		Enumeration<String> contextName = servletContext.getInitParameterNames();
		while (contextName.hasMoreElements()){
			System.out.println(contextName.nextElement());
		}
	}

② 获取WEB 应用中的文件的路,获取当前WEB 应用的某个文件在服务器上的绝对路径:而不是部署前的路径。D:\tomcat7\webapps\HelloServletTest\web.xml

  • getRealPath()
		String realPath = servletContext.getRealPath("/web.xml");
		System.out.println(realPath);

③ 获取当前WEB 应用的名称:/HelloServletTest

  • getContextPath()
		String contextPath = servletContext.getContextPath();
		System.out.println(contextPath);

④ 获取当前WEB 应用的某一个文件对应的文件输入流

  • getResourceAsStream(String path): path 的 / 为当前WEB 应用的根目录。
		ClassLoader classloader = getClass().getClassLoader();
		InputStream is1 = classloader.getResourceAsStream("jdbc.properties");
		System.out.println("1. " + is1);
		
		InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
		System.out.println("2. " + is2);

⑤ 和attribute 相关的几个方法 

 

posted on 2016-04-04 16:59  我表情悠哉  阅读(112)  评论(0编辑  收藏  举报

导航