ServletConfig和ServletContext的简单使用

简介: ServletConfig和ServletContext的简单使用

ServletConfig对象


ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多

  1. 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。
  2. 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,
  3. 会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。
  4. 进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。


  1. package javax.servlet;
  2. import java.util.Enumeration;
  3. import javax.servlet.ServletContext;
  4. publicinterfaceServletConfig {
  5.    String getServletName(); // 获取当前Servlet在web.xml中配置的名字
  6.    ServletContext getServletContext();// 获取代表当前web应用的ServletContext对象
  7.    String getInitParameter(String var1);// 获取当前Servlet指定名称的初始化参数的值
  8.    Enumeration<String> getInitParameterNames();// 获取当前Servlet所有初始化参数的名字组成的枚举
  9. }


使用


  1. 实体类 extendsHttpServlet
  2. ServletConfigconfig=this.getServletConfig();  //拿到init方法中的ServletConfig对象


ServletContext对象


  1. ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。
  2. request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。
  3. 所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。
  1. 上下文对象类似一个全局变量,在整个应用中有效
  2. 利用上下文对象,可以实现多个用户之间的数据共享



  1. package javax.servlet;
  2. import java.io.InputStream;
  3. import java.net.MalformedURLException;
  4. import java.net.URL;
  5. import java.util.Enumeration;
  6. import java.util.EventListener;
  7. import java.util.Map;
  8. import java.util.Set;
  9. import javax.servlet.Filter;
  10. import javax.servlet.FilterRegistration;
  11. import javax.servlet.RequestDispatcher;
  12. import javax.servlet.Servlet;
  13. import javax.servlet.ServletException;
  14. import javax.servlet.ServletRegistration;
  15. import javax.servlet.SessionCookieConfig;
  16. import javax.servlet.SessionTrackingMode;
  17. import javax.servlet.ServletRegistration.Dynamic;
  18. import javax.servlet.descriptor.JspConfigDescriptor;
  19. publicinterfaceServletContext {
  20.    StringTEMPDIR="javax.servlet.context.tempdir";
  21.    StringORDERED_LIBS="javax.servlet.context.orderedLibs";
  22.    String getContextPath();
  23.    ServletContext getContext(String var1);
  24.    intgetMajorVersion();
  25.    intgetMinorVersion();
  26.    intgetEffectiveMajorVersion();
  27.    intgetEffectiveMinorVersion();
  28.    String getMimeType(String var1);
  29.    Set<String> getResourcePaths(String var1);
  30.    URL getResource(String var1)throws MalformedURLException;
  31. InputStream getResourceAsStream(String var1);
  32.    RequestDispatcher getRequestDispatcher(String var1);
  33.    RequestDispatcher getNamedDispatcher(String var1);
  34.    /** @deprecated */
  35.    Servlet getServlet(String var1)throws ServletException;
  36.    /** @deprecated */
  37.    Enumeration<Servlet> getServlets();
  38.    /** @deprecated */
  39.    Enumeration<String> getServletNames();
  40.    voidlog(String var1);
  41.    /** @deprecated */
  42.    voidlog(Exception var1, String var2);
  43.    voidlog(String var1, Throwable var2);
  44.    String getRealPath(String var1);
  45.    String getServerInfo();
  46.    String getInitParameter(String var1);
  47.    Enumeration<String> getInitParameterNames();
  48.    booleansetInitParameter(String var1, String var2);
  49.    Object getAttribute(String var1);
  50. Enumeration<String> getAttributeNames();
  51. voidsetAttribute(String var1, Object var2);
  52. voidremoveAttribute(String var1);
  53.    String getServletContextName();
  54.    Dynamic addServlet(String var1, String var2);
  55.    Dynamic addServlet(String var1, Servlet var2);
  56.    Dynamic addServlet(String var1, Class<? extends Servlet> var2);
  57.    <T extendsServlet> T createServlet(Class<T> var1)throws ServletException;
  58.    ServletRegistration getServletRegistration(String var1);
  59.    Map<String, ? extendsServletRegistration> getServletRegistrations();
  60.    javax.servlet.FilterRegistration.Dynamic addFilter(String var1, String var2);
  61.    javax.servlet.FilterRegistration.Dynamic addFilter(String var1, Filter var2);
  62.    javax.servlet.FilterRegistration.Dynamic addFilter(String var1, Class<? extends Filter> var2);
  63.    <T extendsFilter> T createFilter(Class<T> var1)throws ServletException;
  64.    FilterRegistration getFilterRegistration(String var1);
  65.    Map<String, ? extendsFilterRegistration> getFilterRegistrations();
  66.    SessionCookieConfig getSessionCookieConfig();
  67.    voidsetSessionTrackingModes(Set<SessionTrackingMode> var1);
  68.    Set<SessionTrackingMode> getDefaultSessionTrackingModes();
  69.    Set<SessionTrackingMode> getEffectiveSessionTrackingModes();
  70.    voidaddListener(String var1);
  71.    <T extendsEventListener> voidaddListener(T var1);
  72.    voidaddListener(Class<? extends EventListener> var1);
  73.    <T extendsEventListener> T createListener(Class<T> var1)throws ServletException;
  74.    JspConfigDescriptor getJspConfigDescriptor();
  75.    ClassLoader getClassLoader();
  76.    voiddeclareRoles(String... var1);
  77.    String getVirtualServerName();
  78. }


ServletContext的应用:


1、获取WEB应用的初始化参数


  1. 我们在第一段中,通过<init-param>标签为某一个单独的servlet加配置信息,这种配置信息在其他的Servlet中是无法访问到的。
  2. 可如果我们使用<context-param>标签(与Servlet标签并列)为整个Web应用配置属性的话,那所有的Servlet就都能访问里面的参数了。


这里涉及到一些概念不要混淆:

  • 请求参数 parameter --- 浏览器发送过来的请求中的参数信息
  • 初始化参数 initparameter --- 在web.xml中为Servlet或ServletContext配置的初始化时带有的基本参数
  • 域属性 attribute --- 四大作用域中存取的键值对

1.1.获取Tomcat的server.xml中设置Context的初始化参数。

  1. <Contextpath="/testcontext"docBase="/context"  
  2.         privileged="true" antiResourceLocking="false" antiJARLocking="false"  
  3.         debug="0" reloadable="true">  
  4.    <Parametername="name"value="yangqisheng" />  
  5. </Context>  
  6. 方式:getServletContext().getInitParameter(String name)


1.2.获取在项目下的web.xml中设置Context的初始化参数。

  1. <context-param>  
  2.    <param-name>age</param-name>  
  3.    <param-value>24</param-value>  
  4. </context-param>  
  5. 方式:getServletContext().getInitParameter(String name)


2.加载资源文件:

  1. getResource(String parh)方法:其中path必须是/开头,代表当前web应用程序的根目录。返回返回的一个代表某个资源的URL对象。
  2. getResoutceAsStream(String parh),返回文件流。这个好处是可以使用相对于根目录的路径访问到web目录下的所有文件,而不必知道绝对路径。


参考来源: http://blog.csdn.net/yakson/article/details/9203267

参考来源:  http://blog.csdn.net/lvzhiyuan/article/details/4664624

来源: https://www.cnblogs.com/smyhvae/p/4140877.html


相关文章
|
XML Java 数据库连接
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
702 0
|
存储 SQL 分布式计算
Fusion Insight大数据平台介绍
1. 概述 华为Fusion Insight是一个分布式数据处理系统,对外提供大容量的数据存储、查询和分析能力。Fusion Insight在Hadoop集群上又封装了一层,类似于开源的CDH,HDP等大数据平台。
5541 0
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
347 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
存储 SQL Oracle
Seata 1.7.0 正式发布,大幅度提升稳定性
Seata 1.7.0 正式发布,大幅度提升稳定性
1204 102
|
开发框架 前端开发 开发者
【Flutter前端技术开发专栏】Flutter的Material Design与Cupertino Design风格
【4月更文挑战第30天】Flutter框架支持Material Design和Cupertino Design两种设计风格,助力开发者创建吸引人的移动应用。Material Design基于现实世界物理规律,提供`Scaffold`、`Card`等组件,实现纸片效果和直观体验。Cupertino Design注重简洁图标和流畅动画,借助`CupertinoTabScaffold`、`CupertinoActivityIndicator`等组件呈现苹果风格界面。Flutter的`Theme`类允许统一管理应用样式,开发者可根据需求混搭两种风格,实现跨平台的优质用户体验。
517 0
【Flutter前端技术开发专栏】Flutter的Material Design与Cupertino Design风格
|
中间件 程序员 Go
你用Go写过中间件吗?带你用Gin实现【用户角色权限管理中间件】
管理后台有超管权限,超管拥有所有权限;普通管理员可以设置角色,角色单选;角色可以赋予多个权限,权限多选;这样我们就实现了对普通管理员的角色和权限的灵活管理
602 91
你用Go写过中间件吗?带你用Gin实现【用户角色权限管理中间件】
|
监控 Linux 数据库
IDA调试
IDA调试
381 0
|
SQL 存储 监控
Navicat 面试题及答案整理,最新面试题
Navicat 面试题及答案整理,最新面试题
470 0
|
JavaScript 前端开发 uml
推荐 5 个开源的 yyds 效率神器
本期推荐开源项目目录: 1. Wox:效率神器 2. 图表编辑工具客户端 3. 在线白板工具 4. 分屏神器 5. 番茄钟
|
存储 弹性计算 固态存储
阿里云服务器8核32G配置可选实例规格和收费标准参考
阿里云8核32G服务器有通用型 g6、通用型 g7、内存型 r7p等2多种中实例规格可选,实例规格不同,收费标准与活动价格也不同,目前阿里云通用型g7和通用算力型u1实例8核32G云服务器有优惠,最低价仅需3265.20元1年,本文为大家介绍一下阿里云服务器8核32G配置可选实例规格和收费标准及最新活动报价,以供大家参考。