ServletConfig和ServletContext的简单使用

来源:互联网 发布:劲舞团淘宝网 编辑:程序博客网 时间:2024/06/05 15:13

ServletConfig对象


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

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

  1. package javax.servlet;
  2. import java.util.Enumeration;
  3. import javax.servlet.ServletContext;
  4. public interface ServletConfig {
  5. String getServletName(); // 获取当前Servlet在web.xml中配置的名字
  6. ServletContext getServletContext();// 获取代表当前web应用的ServletContext对象
  7. String getInitParameter(String var1);// 获取当前Servlet指定名称的初始化参数的值
  8. Enumeration<String> getInitParameterNames();// 获取当前Servlet所有初始化参数的名字组成的枚举
  9. }
使用
  1. 实体类 extends HttpServlet
  2. ServletConfig config = 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. public interface ServletContext {
  20. String TEMPDIR = "javax.servlet.context.tempdir";
  21. String ORDERED_LIBS = "javax.servlet.context.orderedLibs";
  22. String getContextPath();
  23. ServletContext getContext(String var1);
  24. int getMajorVersion();
  25. int getMinorVersion();
  26. int getEffectiveMajorVersion();
  27. int getEffectiveMinorVersion();
  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. void log(String var1);
  41. /** @deprecated */
  42. void log(Exception var1, String var2);
  43. void log(String var1, Throwable var2);
  44. String getRealPath(String var1);
  45. String getServerInfo();
  46. String getInitParameter(String var1);
  47. Enumeration<String> getInitParameterNames();
  48. boolean setInitParameter(String var1, String var2);
  49. Object getAttribute(String var1);
  50. Enumeration<String> getAttributeNames();
  51. void setAttribute(String var1, Object var2);
  52. void removeAttribute(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 extends Servlet> T createServlet(Class<T> var1) throws ServletException;
  58. ServletRegistration getServletRegistration(String var1);
  59. Map<String, ? extends ServletRegistration> 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 extends Filter> T createFilter(Class<T> var1) throws ServletException;
  64. FilterRegistration getFilterRegistration(String var1);
  65. Map<String, ? extends FilterRegistration> getFilterRegistrations();
  66. SessionCookieConfig getSessionCookieConfig();
  67. void setSessionTrackingModes(Set<SessionTrackingMode> var1);
  68. Set<SessionTrackingMode> getDefaultSessionTrackingModes();
  69. Set<SessionTrackingMode> getEffectiveSessionTrackingModes();
  70. void addListener(String var1);
  71. <T extends EventListener> void addListener(T var1);
  72. void addListener(Class<? extends EventListener> var1);
  73. <T extends EventListener> T createListener(Class<T> var1) throws ServletException;
  74. JspConfigDescriptor getJspConfigDescriptor();
  75. ClassLoader getClassLoader();
  76. void declareRoles(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. <Context path="/testcontext" docBase="/context"
  2. privileged="true" antiResourceLocking="false" antiJARLocking="false"
  3. debug="0" reloadable="true">
  4. <Parameter name="name" value="yangqisheng" />
  5. </Context>
  1. 方式: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>
  1. 方式: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
原创粉丝点击