关于java:专攻知识小点回顾JavaWeb中的servlet二

7次阅读

共计 3830 个字符,预计需要花费 10 分钟才能阅读完成。

公众号 | “IT 咸鱼 ”

微信号|mu99908888

微博|mu99908888

续前篇 …

ServletConfig 对象

1. Servlet 的配置对象,ServletConfig 对象作用域只能在一个 Servlet 类中应用。每个 Servlet 类都保护一个 ServletConfig 对象。它的罕用办法如下:

a) public String getInitParameter (String name): 返回蕴含指定初始化参数的值的 String,如果参数不存在,则返回 null。

b) public java.util.Enumeration<E> getInitParameterNames (): 以 String 对象的 Enumeration 的模式返回 servlet 的初始化参数的名称,如果 servlet 没有初始化参数,则返回一个空的 Enumeration。

c) public String getServletName():返回调用该办法的 Servlet 的实例的名称。该 Servlet 实例的名称可能是服务器通过 web 利用 web.xml 来进行调配,或者没有调配的话,那么该名称就是 Servlet 的类名称。

d) public ServletContext getServletContext():返回一个 ServletContext 对象。

2. 参数的初始化的作用在于 Servlet 启动时须要的参数配置信息。ServletConfig 的在 web 利用中的 web.xml 配置是,哪个 Servlet 须要进行参数初始化,就在哪个 <Servlet> 标签里配置。配置如下:

<servlet>    <servlet-name>ConfigServletDemo</servlet-name>    <servlet-class>com.lsh.servletconfig.demo.ConfigServletDemo</servlet-class>    <!-- 以下初始化参数能够多配置 -->    <init-param>      <param-name>who</param-name>      <param-value>Tom</param-value>    </init-param>    <init-param>      <param-name>xixi</param-name>      <param-value>abc</param-value>    </init-param>  </servlet>

在 Servlet 中调用该初始化参数的代码如下:

@Overridepublic void init(ServletConfig config) throws ServletException {// 对象是 Sevlet 容器给的。this.config=config;}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 通过指定初始化参数的 name 取得 value 值 String value=config.getInitParameter("who");System.out.println(value);// 打印 Tom// 取得所有的初始化参数的 value 值 Enumeration<String> enums=config.getInitParameterNames();while(enums.hasMoreElements()){String name=enums.nextElement();System.out.println(name+"::"+config.getInitParameter(name));}// 取得 Servlet 的名称 String serName=config.getServletName();System.out.println(serName);//}}

ServletContext 对象

1. ServletContext 对象:

  • 在利用在被服务器加载时就创立了一个 ServletContext 对象,每一个 Web 利用都有惟一的一个 ServletContext 对象。
  • 即随着服务器的加载而呈现,随着服务器的敞开而隐没。
  • 每次过程都是一个新的 ServletContext 对象。

    2. ServletContext 对象的取得:

  • ServletContext 对象是通过 ServletConfig 的 getServletContext 办法来取得或者是通过父类的静态方法 getServletContext() 办法间接取得,倡议应用这一种。
  • 其实在 ServletContext 中是保护了一个 Map<String,Object> 对象(域对象)。

    3. ServletConytext 罕用的办法如下

  • a) public Object getAttribute (String name) : 返回具备给定名称的 servlet 容器属性,如果不具备该名称的属性,则返回 null。

    b) public void removeAttribute(String name) : 从 servlet 上下文中移除具备给定名称的属性。

    c) public void setAttribute(String name, Object object):

  • 将对象绑定到此 servlet 上下文中的给定属性名称。
  • 如果已将指定名称用于某个属性,则此办法将应用新属性替换具备该名称的属性。
  • 如果值设置的是 null,等同于 removeAttribute() 办法。

    d) public String getRealPath(String path):

  • 为给定虚构门路返回蕴含理论门路的 String。
  • 比方例如,能够通过对 “http://host/contextPath/index.html” 的申请使门路 “/index.html” 返回服务器文件系统上(即 JavaWeb 利用的目录档次)的相对文件门路,其中 contextPath 是此 ServletContext 的上下文门路。
  • 找不到则此办法返回 null。

4. 在 Web 利用中在 web.xml 的根元素下配置利用的全局参数。配置内容如下:

<context-param>     <param-name>encoding</param-name> <param-value>GBK</param-value> </context-param>
在 Servlet 中取得全局参数的值的代码如下:public class ServletContextDemo1 extends HttpServlet {@Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {// 取得 ServletContext 对象        ServletContext context=getServletContext();        // 取得 web.xml 中配置的全局参数的值        String value1=context.getInitParameter("encoding");        System.out.println(value1);    }}

5. 多个 Servlet 之间的数据共享的实现,是通过 ServletConext 的两个办法来实现的。数据共享即就是一个 Servlet 设置完数据后,另一个 Servlet 通过键来取得值。

首先在一个 Servlet 设置整个 web 利用的共享数据,代码如下:

public class ServletContextSetData extends HttpServlet {@Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {// 取得 ServletContext 对象        ServletContext context=getServletContext();        // 设置利用的共享数据        context.setAttribute("name", "lisi");        resp.getOutputStream().write("put success".getBytes());    }}

设置完之后,咱们就能够通过另一个 Servlet 类来获取咱们须要的共享数据的值,代码如下:

public class ServletContextSetData extends HttpServlet {@Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {// 取得 ServletContext 对象        ServletContext context=getServletContext();        // 设置利用的共享数据        context.setAttribute("name", "lisi");        resp.getOutputStream().write("put success".getBytes());    }}

关注公众号“IT 咸鱼”学习更多无关常识。
获取办法:
1、扫描下方二维码并关注:IT 咸鱼
2、在 IT 咸鱼对话框回复关键词:” 材料 ” 一并奉上。
3、也可间接增加小编微信:mu99908888 支付

正文完
 0