ServletConfig对象详解
- 格式:doc
- 大小:35.50 KB
- 文档页数:1
ServletConfig(对象的获取、应⽤、、ServletConfig与Servlet。
1、每个Servlet都单独拥有⼀个属于⾃⼰的ServletConfig对象,⽤来获取web.xml中servlet的配置信息。
2、ServletConfig对象的获取和运⽤:protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ServletConfig servletConfig=this.getServletConfig();//获取ServletConfig对象String sc=servletConfig.getInitParameter("ServletConfig");//由配置⽂件中的键获取值System.out.println(sc);}<servlet><servlet-name>ServletConfigDemo</servlet-name><servlet-class>pers.zhb.logservlet.ServletConfigDemo</servlet-class><init-param><param-name>ServletConfig</param-name><param-value>ni hao</param-value></init-param></servlet><servlet-mapping><servlet-name>ServletConfigDemo</servlet-name><url-pattern>/servletconfig</url-pattern></servlet-mapping>配置⽂件中的键和值要写在<servlet>标签内部,代表的是本Servlet⾃⼰所有。
servletConfig与servletContext的区别⼀、区别1、定义1)ServletConfig:Servlet的配置对象,容器在初始化Servlet时通过它传递信息给Servlet。
2)ServletContext:上下⽂对象,提供了⼀系列⽅法供Servlet与Web容器交互。
2、创建时机1)ServletConfig:在容器初始化Servlet的时候,并为其提供上下⽂初始化参数的名/值对的引⽤。
2)ServletContext:容器启动的时候,并为其提供Servlet初始化参数的名/值对的引⽤。
3、作⽤范围(可见性)1)ServletContext:每个JVM中每个Web应⽤⼀个ServletContext。
2)ServletConfig:每个JVM中每个Web应⽤的每个Servlet⼀个ServletConfig。
所以ServletConfig=Servlet初始化参数,ServletContext=上下⽂初始化参数。
4、DD中的初始化参数配置1)ServletConfig配置如下(注意是在<servlet>标签中):Xml代码1. <servlet>2. <init-param>3. <param-name>email</param-name>4. <param-value></param-value>5. </init-param>6. <servlet-name>JarDownload</servlet-name>7. <servlet-class>com.linwei.servlet.JarDownload</servlet-class>8. </servlet>2)ServletContext配置如下(注意是直接在<web-app>标签下):Xml代码1. <context-param>2. <param-name>email</param-name>3. <param-value></param-value>4. </context-param>5、Servlet中的访问⽅法1)ServletConfig:getServletConfig().getInitParameter(“name”)。
ServletConfig与ServletContext对象详解来自https:///pql925/article/details/53259089一、ServletConfig对象在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet 配置一些初始化参数。
(配置在某个servlet标签或者整个web-app下)当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。
进而,程序员通过ServletConfi g对象就可以得到当前servlet的初始化参数信息。
首先,需要创建私有变量:private ServletConfig config = null;其次,要重写init方法,传入config,令this.config = config;从而获得Serv letConfig对象最后,就可以获得<init-parm>中的配置信息了//获取初始化参数String value1 =this.config.getInitParameter("x1");//获得配置文档中<init-param>标签下name对应的valueString vlaue2 =this.config.getInitParameter("x2");//2.获取所有的初始化参数(用Enumeration接收)Enumeration e =this.config.getInitParameterNames();while(e.hasMoreElements()){String name =(String) e.nextElement();String value= this.config.getInitParameter(name);System.out.println(name+ "=" + value);}在开发中ServletConfig的作用有如下三个:1)获得字符集编码String charset =this.config.getInitParameter("charset");2)获得数据库连接信息String url =this.config.getInitParameter("url");String username =this.config.getInitParameter("username");String password =this.config.getInitParameter("password");3)获得配置文件String configFile =this.config.getInitParameter("config");二、ServletContext对象WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletCon text对象,它代表当前web应用。
各章知识点1.什么是B/S;前端后端关系B/S 是指在开发的过程中,客户端只需要一个浏览器,就可以实现与服务器交互,服务器承担所有的逻辑和计算,浏览器只负责将结果显示在屏幕上前端:主要负责与用户进行交互的界面和体验。
前端开发者使用HTML、CSS和JavaScript等技术来构建和优化Web界面,确保用户可以方便地与网站或应用进行交互。
后端:主要负责处理数据、逻辑运算和服务器配置等。
后端开发者使用各种编程语言和框架(如Python、Java、Ruby、.NET等)来处理数据请求、执行复杂的业务逻辑,并与数据库进行交互。
在开发过程中,前端和后端开发者需要紧密合作,确保数据的正确传递和显示。
他们通常会使用API (应用程序编程接口)来定义数据交换的格式和规则。
前端开发者需要了解后端提供的API接口,以便正确地请求和显示数据。
同样,后端开发者也需要了解前端的需求,以便提供合适的数据接口和功能支持。
2.JSP的基本元素、工作流程、生命周期JSP脚本元素的三种类型:JSP Scriptlets、JSP声明语句和JSP表达式。
1).JSP Scriptlets 是一段代码段。
当需要使用Java实现一些复杂操作或控制时,可以使用它。
<% java 代码(变量、方法、表达式等)%>在JSP Scriptlets中声明的变量是JSP Scriptlets时,会为局部变量分配内存空间,调用结束后,释放局部变量占有的内存空间。
2).声明标识:JSP声明语句的作用和语法。
如下所示:JSP的声明语句用于声明变量和方法,它以“<%!”开始,以“%>”结束,其语法格式如下所示: <%! 定义的变量或方法等 %>在上述语法格式中,被声明的Java代码将被编译到Servlet的_jspService()方法之外,即在JSP声明语句中定义的都是成员方法、成员变量、静态方法、静态变量、静态代码块等。
JSP脚本中的九个内置对象JSP脚本中包含九个内置对象,这九个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化(由JSP页面对应的Servlet的_jspService()方法来创建这些实例)。
内置对象名所属类型有效范围说明称application javax.servlet.ServletContext application 该对象代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息config javax.servlet.ServletConfig page 该对象允许将初始化数据传递给一个JSP页面exception ng.Throwable page 该对象含有只能由指定的JSP“错误处理页面”访问的异常数据out javax.servlet.jsp.JspWriter page 该对象提供对输出流的访问page javax.servlet.jsp.HttpJspPage page 该对象代表JSP页面对应的Servlet类实例pageContext javax.servlet.jsp.PageContext page 该对象是JSP页面本身的上下文,它提供了唯一一组方法来管理具有不同作用域的属性,这些API在实现JSP自定义标签处理程序时非常有用request javax.servlet.http.HttpServletRequest request 该对象提供对HTTP请求数据的访问,同时还提供用于加入特定请求数据的上下文response javax.servlet.http.HttpServletResponse page 该对象允许直接访问HttpServletReponse对象,可用来向客户端输入数据session javax.servlet.http.HttpSession session 该对象可用来保存在服务器与一个客户端之间需要保存的数据,当客户端关闭网站的所有网页时,session变量会自动消失application (javax.servlet.ServletContext的实例)application对象代表Web应用本身,因此使用application来操作Web应用相关的数据。
Servlet类详解关联:从我可以拿到你想要拿到servletConfig对象只要通过Servlet的getServletConfig()就可以拿到了在ServletConfig中提供了getServeltContext()方法,返回的是一个ServeltContext对象,也是通过方法拿到了ServeltContext对象,所以ServletConfig和ServeltContext也是关联的关系依赖:依赖的那个为被依赖的参数ServletConfig1、作用:就是拿取servlet的相关配置.也就是拿取web.xml里面的配置信息(这个配置信息都是一样的,所以无论哪个方法得到都是一样)创建的时机:当在创建Servlet对象的时候,服务器已经帮我们创建了这个对象,并作为参数传递进来了生命:作为init方法的形参,所以离开了该方法,就死亡了延长它的生命:把它作为一个全局变量2、获取ServeltConfig对象的方式(1). 采用带参的init方法(2). 采用servlet实例拿取(不要写带参的init方法)(推荐)[java] view plain copy 在CODE上查看代码片派生到我的代码片import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//演示如何获取servletConfig对象/*** 获取的方式有两种:* 1. 采用带参的init方法* 2. 采用servlet实例拿取(不要写带参的init方法)* @author Administrator**/public class ServletConfig1 extends HttpServlet {ServletConfig config ;@Overridepublic void init(ServletConfig config) throws ServletException {super.init(config) ;this.config = config ;}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletConfig sc = this.getServletConfig() ;//System.out.println(config == sc);System.out.println(sc);System.out.println(config == sc);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}在没有写带参的init方法的时候,默认调用父类的带参的init(),而在父类的init()中,已经帮我门把config给实例化了如果我们自己去写带参的init方法的话,就不会去调用父类的带参的init方法了,就不会实例化,就会是null3、拿取servlet的相关配置信息在xml中使用<init-param>配置信息,通过servletConfig对象获取这些配置信息xml:(注意:一个<init-param>只能配置一个键值对)[html] view plain copy 在CODE上查看代码片派生到我的代码片<servlet><servlet-name>ServletConfig2</servlet-name><servlet-class>com.example.servletconfig.ServletConfig2</servlet-class><init-param><param-name>name</param-name><param-value>张无忌</param-value></init-param><init-param><param-name>age</param-name><param-value>20</param-value></init-param></servlet>[java] view plain copy 在CODE上查看代码片派生到我的代码片import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//演示servletConfig对象的应用public class ServletConfig2 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//拿到servletConfi对象ServletConfig sc = this.getServletConfig() ;//拿取配置的单个信息// String name = sc.getInitParameter("name") ;// System.out.println(name);//拿取配置的多个信息Enumeration<String> enu = sc.getInitParameterNames() ;while(enu.hasMoreElements()){String name = enu.nextElement() ;System.out.println(name + ":" + sc.getInitParameter(name));}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}servletContextservlet上下文,一个全局对象,即工程对象,代表了一个应用(就是建的项目,一个工程就代表一个servletContext,每个工程的servletContext对象是不一样的)(1). 生命周期很长:产生:当服务器启动,加载这个应用的时候,就创建了servletContext这个对象;灭亡:当服务器关闭时或停止应用时(2).每个web应用都有一个唯一的servletContext对象.(3).在每个应用加载的时候,服务器就会创建servletContext对象。
ServletConfig详解1.ServletConfigServletConfig是一个接口,它代表的是Servlet的配置信息,对应着web.xml文件中的<servlet>标签。
想要获取Servlet的一些配置信息,例如,Servlet的名字就可以通过调用ServletConfig的一个方法来获得。
我们知道,当浏览器第一次访问Servlet的时候,服务器会创建该Servlet的实例,然后调用init(ServletConfig config)方法对Servlet进行初始化,其实在调用init方法之前,服务器已经根据当前Servlet在web.xml的配置信息创建了一个ServletConfig对象,最后在调用init()方法时将该对象作为参数传递给init()方法。
下面通过一张图来描述ServletConfig的一些特性,如图1-1所示:图1-1ServletConfig介绍通过图1-1对ServletConfig的描述,可以看出web.xml文件中每一个<servlet>元素都对应一个ServletConfig对象。
经过以上对ServletConfig对象的介绍,我们需要掌握以下几点:●ServletConfig实例是由Tomcat服务器创建,然后作为参数通过init()方法传递给Servlet;●ServletConfig中封装的是Servlet的配置信息,可以通过它来获取web.xml文件中<servlet-name>标签的内容等其他配置信息。
●一个Servlet类对应一个ServletConfig对象2.ServletConfig具体功能介绍接下来,我们查看ServletConfig的API,通过API来深入了解该对象。
如图1-2所示:图1-2ServletConfig API由图1-2可看出,ServletConfig接口有四个抽象方法,下面我们来分别介绍这四个方法,如表1-1所示:方法名方法说明String getInitParameter(String name)该方法是通过参数名获取Servlet在web.xml文件中配置的初始化参数。
江西财经大学软件与通信工程学院《JavaEE程序设计》B07、B08、B11班
ServletContext对象
安装在一个服务器中的一个特定URL名字空间(比如,/myDemo1)下的所有Servlet、JSP、JavaBean等Web部件的集合构成了一个Web的应用,每一个Web应用,容器都会有一个背景对象ServletContenxt。
服务器在启动时,会为每个WEB应用程序都创建一个对应的ServletContext对象,代表当前的应用。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。
ServletContext对象通常也被称之为context域对象。
1.获取servlet的ServletContext对象
通过调用从父类继承过来的getServletContext()方法可以获取ServletContext对象context
2.在web.xml中,添加ServletContext的初始化参数。
一、ServletConfig 对象作用:封装 Servlet 初始化参数2. web 容器在初始化Servlet时,会将初始化参数封装到一个 ServletConfig 对象中,传给init方法3. 我们在Servlet 中覆写 init方法,就可以获得ServletConfig4. 父类 GenericServlet 中定义了一个成员变量用于记住此对象,并提供了 getServletConfig 方法我们可以直接调用此方法获得 config 对象5. 再调用 getInitParameter(name) 方法获得想要配置项二、ServletContext 对象ServletContext 被称为 servlet的上下文1. ServletContext对象代表整个web应用2. ServletContext对象是一个域对象(可以存储数据的对象)ServletContext对象的内部维护了一个map集合, key是String类型 value是Object类型class ServletContext {private Map<String, Object> map ;}3. ServletContext 作为域对象,多个Servlet 可以共享数据Servlet6Servlet74.获取web应用的初始化参数5. 统计一个web应用的访问量在 context 域中维护一个count变量访问Servlet时,取出变量加16. 实现请求转发实现请求转发需要用到转发对象 RequestDispatcher有一个 forward 方法能转发请求7. 如何读取工程中的文件7.1. 读取web工程下的资源文件7.2 读取java工程下的文件// 不能相对虚拟机目录不能用绝对路径// 只能类加载的方式读类加载方式缺点1)不能读取类路径以外文件2) 由于需要加载到内存,不能读大文件web工程中如果用类加载的方式读类加载实际上读取的是内存中加载的文件,此时将读不到硬盘上资源文件的修改解决办法Demo.class.getClassLoader().getResource("a.txt").getPath() 通过绝对路径去读硬盘上的文件避开内存的文件三、Servlet缓存HttpServlet 的 Service方法中的代码。
ServletConfig对象详解
●javax.servlet.ServletConfig 是SUN制定的Servlet规范中的接口。
●Apache软件基金会开发的“Tomcat服务器”对javax.servlet.ServletConfig接口的实现类的完整类名是:
org.apache.catalina.core.StandardWrapperFacade(程序员不需要关心这个类名,编程时是面向ServletConfig接口编程的)
●ServletConfig对象的实例化过程
我们javaweb程序员在使用init方法中的ServletConfig对象的时候不需要关心具体是在哪个服务器中,我们是面向javax.servlet.ServletConfig 接口调用的。
●一个Servlet对象就会关联一个ServletConfig对象。
是一对一的关系,所以ServletConfig对象也是在单实例多线程的环境下运行。
ServletConfig
对象封装了Servlet对象的配置信息。
也就是说ServletConfig对象包含了Servlet类在web.xml文件的<servlet>标签中配置的信息。
●ServletConfig接口中常用的方法:
a)通过初始化参数的name获取初始化参数的value
i.String paramValue = config.getInitParameter(String name);
b)获取所有初始化参数的name
i.Enumeration<String> paramNames = config.getInitParameterNames();
c)通过ServletConfig对象获取ServletContext对象
i.ServletContext application = config.getServletContext();
●如果想通过ServletConfig对象获取初始化参数,必须在对应的web.xml文件中有相关的配置信息。