`
剑晨java
  • 浏览: 23557 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

ServletConfig和ServletContext

阅读更多
  一、ServletConfig。
   在servlet配置文件中,可以使用多个<init-param>标签为servlet配置一些初始参数。而web容器在创建servlet实例对象时,会自动把初始化信息封装到ServletConfig对象中,并调用servlet的init()方法,并将ServletConfig对象传递给servlet。进而,我们可以通过ServletConfig对象得到servlet的初始化信息。
   有些信息不适合在程序中写死,就可以放在配置文件中。比如数据库,编码表等。      
<servlet>
    <servlet-name>ServletDemo1</servlet-name>
    <servlet-class>cn.netjava.config.ServletDemo1</servlet-class>
    <init-param>
    	<param-name>charset</param-name>
    	<param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    	<param-name>url</param-name>
    	<param-value>jdbc:mysql://localhost:2353/data</param-value>
    </init-param>
    <init-param>
    	<param-name>username</param-name>
    	<param-value>xxx</param-value>
    </init-param>
    <init-param>
    	<param-name>password</param-name>
    	<param-value>xxx</param-value>
    </init-param>
  </servlet>
  //1.写法一
		ServletConfig config=this.getServletConfig();
		System.out.println(config.getInitParameter("charset"));//指定名称信息
		Enumeration e1=config.getInitParameterNames();
		while(e1.hasMoreElements()){//所有信息
			String name=(String) e1.nextElement();
			System.out.println(config.getInitParameter(name));
		}
		System.out.println("--------------------");
		//2.写法二
		System.out.println(this.getInitParameter("charset"));
		Enumeration e2=this.getInitParameterNames();
		while(e2.hasMoreElements()){
			String name=(String) e2.nextElement();
			System.out.println(this.getInitParameter(name));
		}


   二、ServletContext。
   web容器在启动时,它会为每个web应用创建一个对应的ServletContext对象,它代表当前web应用。由于一个web应用中所有servlet对象共享一个ServletContext对象,所以多个servlet对象可以通过ServletContext对象实现数据共享。ServletContext对象也被称为context域对象(web开发四大域对象,page、request、session、context)。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo2 extends HttpServlet {

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.
		String data="xxx";
		this.getServletContext().setAttribute("data", data);
		//2.
		String username="yyy";
		this.getServletConfig().getServletContext().setAttribute("username", username);
		
	}

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo3 extends HttpServlet {

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		System.out.println((String)this.getServletContext().getAttribute("data"));
	}

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

     在开发中,ServletContext通常用来:
     (1)获取web应用的初始化参数
  <context-param>
  	<param-name>data</param-name>
  	<param-value>xxx</param-value>
  </context-param>

     如此就为整个web应用配置了初始化参数,整个web应用的所有servlet都可以通过ServletContext对象得到初始化信息。比如上面提到的数据库信息,就可以在此配置,因为很多servlet都要用到数据库,而在所有servlet依依配置麻烦。
     (2)实现servlet的转发
      在web开发中,servlet通常只用来处理数据,而把数据显示交给jsp显示,这就会用到servlet转发。
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//将数据交给1.jsp显示
		String data="xxxx";
		this.getServletContext().setAttribute("data", data);
		this.getServletContext().getRequestDispatcher("/WEB-INF/1.jsp").forward(request, response);
	}

      当然此处数据存在context域中有问题,因为多个用户访问就会出现数据覆盖,在开发中应存在request域中,此处只为介绍其作用。
     (3)利用ServletContext读取资源文件
      资源文件有两种xml和properties,有关系数据用xml,没关系用properties。以存储数据库信息的properties为例。
url=jdbc:mysql://localhost:2343//data
username=root
password=root
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		InputStream ins=this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
		Properties props=new Properties();
		props.load(ins);
		System.out.println(props.get("url"));
	}
分享到:
评论

相关推荐

    ServletConfig与ServletContext.docx

    注意:每个servlet有一个ServletConfig,...如果修改XML来改变一个初始化参数的值,只有当Web应用重新部署时Web应用其他部分才会看到,因为servlet只会初始化一次,在初始化时会为它提供ServletConfig和ServletContext。

    ServletContext与ServletConfig关系

    ServletContext与ServletConfig关系

    有关ServletConfig与ServletContext的访问

    下面小编就为大家带来一篇有关ServletConfig与ServletContext的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    ServletContext与ServletConfig的深度分析

    很清楚的讲解了ServletContext和ServletConfig,不光有理论上的讲解,还有例子。

    【动力节点】Java经典教程_Servlet经典实战视频教程

    包括Servlet生命周期、ServletConfig、ServletContext、欢迎页头面的设置,及的设置与匹配。第二部分为Servlet核心。除了包括基础的API外,例如GenericServl 资源太大,传百度网盘了,链接在附件中,有需要的同学...

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

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

    JAVA servlet API说明文档

    servlet容器的详细说明,包括里面接口的方法。内容如下:RequestDispatch, servlet, servletConfig, servletContext。。

    Servlet知识点和示例

    this.ServletConfig.getServletContext方法获得对ServletContext对象的引用.还可以直接通过 this.getServletContext方法获得对ServletContext对象的引用. (3)由于一个WEB应用中的所有Servlet共享同一个...

    Servlet+API中文API[China]

    Servlet处理请求、多线程和映射、Servlet的卸载、Servlet映射技术、通过类名调用Servlet、HTTP会话、建立Session、Request Dispatcher接口、Servlet接口、ServletConfig接口、ServletContext接口、SingleThreadModel...

    Learning-working-skill

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

    java_web_第3章_servlet2.ppt

    3.1 Web应用的结构和部署 3.2 部署描述文件 3.3 ServletConfig接口 3.4 ServletContext接口 3.5 Servlet的多线程问题 3.6 一个综合实例

    JavaWeb中Servlet技术

    主要包括Servlet基础和 ServletConfig接口,ServletContext接口两大部分; javaweb,servlet,接口,编写类; 初学者,大学生,复习,详细,课堂笔记;

    J2EE中文版.chm

    java开发web的帮助文档,内含Cookie ...ServletConfig ServletContext ServletException ServletInputStream ServletOutputStream ServletRequest ServletResponse SingleThreadModel UnavailableException

    JAVA J2EE 类库文档

    ServletContext ServletContextAttributeEvent ServletContextAttributeListener ServletContextEvent ServletContextListener ServletException ServletInputStream ServletOutputStream ServletRequest ...

    servletapi

    Servlet处理请求、多线程和映射、Servlet的卸载、Servlet映射技术、通过类名调用Servlet、HTTP会话、建立Session、Request Dispatcher接口、Servlet接口、ServletConfig接口、ServletContext接口、SingleThreadModel...

    学习servlet的实例和参考api

    类 ServletConfig ServletOutputStream ServletContext ServletInputStream ServletResponse GenericServlet ServletRequest Servlet &lt;br&gt;javax.servlet.http&lt;br&gt;接口 类 HttpSession Cookie...

    JavaWeb的三大组件详细总结

    1、ServletConfig API:2、GenericServlet类2、HttpServlet类:(重点掌握)1、doGet和doPost的区别:2、Servlet细节:3、web.xml文件(了解)4、ServletContext(重要):3、网站访问量统计小案例:二、过滤器三、监听...

    Servlet的运行机制

    3. 使用代码以及文字,说明Servlet的运行机制和生命周期 4. 实现用Servlet实现伪静态页面的访问 5. 实现用缺省的Servlet实现对静态页面的访问。 6. 使用ServletConfig对象,访问web.xml中的数据库连接信息。 7. 使用...

    史上最全Java面试大全

    14如何利用ServletContext和ServletConfig对象获得初始化参数 27 15说出Servlet的生命周期,并说出Servlet和CGI的区别 27 16.访问修饰符public,private,protected,以及不写(默认)时的区别? 27 17. Math.round...

    JSP 从配置文件获取参数详解

    这一节将介绍 ServletContext 和 ServletConfig 这两个接口。 通过这两个接口,我们可以在web.xml中设置一些参数,如数据库地址、用户名密码等,供 Servlet 使用, 这样每次参数值变动时,不用重新编译Servlet了。 ...

Global site tag (gtag.js) - Google Analytics