struts1学习
servletContext:
ServletContext是servlet与servlet容器之间的直接通信的接口。Servlet容器在启动一个Web应用时,会为它创建一个servletContext对象。每个web应用有唯一的servletContext对象。同一个web应用的所有servlet对象共享一个serveltContext,servlet对象可以通过它来访问容器中的各种资源。
servletConfig:
Servlet容器初始化一个servlet对象时,会为这个servlet对象创建一个servletConfig对象。在servletConfig对象中包含了servlet的初始化参数信息。此外,servletConfig对象还与servletContext对象关联。Servlet容器在调用servlet对象的init(ServletConfig config)方法时,会把servletConfig对象当做参数传递给servlet对象。Init(ServletConfig config)方法会使得当前servlet对象与servletConfig对象建立关联关系。
servletConfig接口中定义了一下方法:
getInitParameter(String name):根据给定的初始化参数,返回匹配的初始化参数值。
getInitParameterNmes():返回一个Enumeration对象,里面包含了所有的初始化参数。
getServletContext():返回一个servletContext()对象,
getServltName():返回servlet的名字,即web.xml中的<servlet-name>的子元素的值。如果没有配置这个子元素,则返回servlet类的名字。
例子:
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>0</load-on-startup>
<init-param>
<param-name>color</param-name>
<param-value>red</param-value>
</init-param>
<init-param>
<param-name>size</param-name>
<param-value>16</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
如上,红色标记处为初始化参数,相当于公有参数。
在servlet中:
public class UserDateBaseServlet extends HttpServlet{
String color = this.getInitParameter("color");
String size = this.getInitParameter("size");
System.out.println("颜色是:"+color+"字号是:"+size);
}
注:HttpServlt类继承了GenericServlet类,而GenericServlet类实现了ServletConfig接口,因此在HttpServlet类和GenericServlet类及子类中都可以直接调用ServletConfig接口中的方法。
二者区别
在看web.xml配置文件关于环境初始化参数的配置时,发现了ServletConfig与ServletContext这两个对象的应用,于是就写了一个Servlet来体验了一下。
首先从作用范围来说,ServletConfig作用于某个特定的Servlet,即从该Servlet实例化,那么就开始有效,但是该Servlet之外的其他Servlet不能访问;ServletContext作用于某个web应用,即在一个web应用中相当于一个全局对象,在Servlet容器启动时就已经加载,对于不同的web应用,有不同的ServletContext。
其次,来看一下二者参数的使用。如果一个参数为整个web应用所用,那么就配置为ServletContext参数,如下所示:
<context-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</context-param>
如果一个参数仅为一个Servlet所用,那么就应该配置为ServletConfig参数,如下所示:
<servlet>
<servlet-name>affice_add</servlet-name>
<servlet-class>servlet.Affice_add</servlet-class>
<init-param>
<param-name>filepath</param-name>
<param-value>/webContent/affice</param-value>
</init-param>
</servlet>
最后,说明一下参数的获取。访问ServletConfig参数,取得ServletConfig对象后,调用getInitParameter()方法;访问ServletContext对象,只要调用现有的ServletConfig对象的getServletContext()即可,然后同样调用getInitParamter()方法就能获取参数。例如对于上面的参数,可以通过如下方法获取各自参数。
public class TestServletConfig extends HttpServlet {
ServletConfig config;
public void init(ServletConfig config) {
this.config=config;
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
String filepath=(String)config.getInitParameter("filepath");
System.out.println(filepath);
String encode=(String)config.getServletContext().getInitParameter("encoding");
System.out.println(encode);
}
public void destroy() {
}
}
相关推荐
ServletConfig 与 ServletContext 的关系 在 Servlet 编程中,ServletConfig 和 ServletContext 两个对象经常被混淆,然而它们有着截然不同的作用域和用途。 首先, lets 看看 ServletConfig 对象。ServletConfig ...
java web servletContext和ServletConfig详解
`ServletContext`提供了四个方法来存储和获取共享数据:`setAttribute(String name, Object value)`、`getAttribute(String name)`、`removeAttribute(String name)`以及`getAttributeNames()`。这些方法允许在不同...
ServletConfig和ServletContext是Java Servlet API中的两个重要接口,它们在Web应用程序中扮演着关键角色,主要负责管理和传递初始化参数以及实现应用级别的通信。 ServletConfig对象主要用于装载Servlet的初始化...
- ServletConfig主要存储Servlet的个性化配置信息,而ServletContext则提供了全局的资源访问和通信。 5. **实际应用场景** - 配置数据库连接信息,如URL、用户名和密码。 - 设置日志级别或日志文件路径。 - ...
这个上下文对象提供了整个Web应用的全局信息,例如Web应用的初始化参数、资源路径、以及与所有Servlet和JSP页面共享数据的能力。通过`servletContext`,不同的Servlet之间可以进行通信,实现数据的共享。 二、`...
ServletConfig和ServletContext是Java Servlet API中的两个重要概念,它们在Web应用程序中扮演着配置和通信的角色。理解并熟练使用这两个接口对于开发高效、可维护的Web应用至关重要。 ServletConfig对象代表了一个...
ServletConfig主要用于传递特定Servlet的初始化参数,而ServletContext则代表了整个Web应用程序的上下文,它可以共享数据给所有Servlet或Filter,并且提供了获取Web应用级的初始化参数和资源的功能。 ### 源码分析 ...
ServletConfig是Java Servlet API中的一个重要...在深入理解ServletConfig的同时,我们还需要了解Servlet的其他核心概念,如Servlet生命周期、Servlet上下文以及请求处理流程等,以全面掌握Java Web开发的核心知识。
- `ServletConfig`是从`ServletContext`中获取的,它包含了Servlet的个性化配置信息,而`ServletContext`包含的是整个应用的通用信息。 3. **废弃的Servlet获取方法** - 在早期的Servlet API中,`ServletContext`...
"Servlet获取初始化参数" Servlet 获取初始化参数是 Servlet 编程中一个非常重要的主题。...通过使用 `ServletContext` 和 `ServletConfig` 对象,我们可以轻松地获取这些参数,从而实现更好的 Web 应用程序开发。
ServletConfig对象提供了获取Servlet名称、获取初始化参数以及获取ServletContext引用的方法。 在配置Web应用程序时,通常会根据配置信息的作用范围选择使用ServletContext还是ServletConfig。全局的、跨Servlet...
public void init(ServletConfig config) { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); config.getServletContext().setAttribute("scheduler", scheduler); // 启动调度器 scheduler....
在 JavaWeb 中,使用 `ServletContext` 和 `ServletConfig` 对象来获取 servlet 的配置信息。在本例中,我们使用 `ServletContext` 对象来获取 servlet 的上下文信息。 知识点六:使用 JSP 和 Servlet 分离页面逻辑...
- **通过`ServletConfig`对象**:每个Servlet都会有一个`ServletConfig`对象,该对象可以用来获取`ServletContext`对象。例如:`getServletConfig().getServletContext();` - **通过`GenericServlet`类**:继承自`...
在Servlet技术中,ServletContext和ServletConfig是两个重要的对象。ServletContext对象代表了整个web应用的环境,而ServletConfig对象提供了对当前Servlet配置信息的访问。通过这些对象可以获取web应用级别的初始化...
这一节将介绍 ServletContext 和 ServletConfig 这两个接口。 通过这两个接口,我们可以在web.xml中设置一些参数,如数据库地址、用户名密码等,供 Servlet 使用, 这样每次参数值变动时,不用重新编译Servlet了。 ...