zl程序教程

您现在的位置是:首页 >  其他

当前栏目

[Servlet&JSP] 初识ServletConfig

ampJSPServlet 初识
2023-09-14 09:01:04 时间
每个Servlet都必须在web.xml中设置,由web容器读取Servlet设置、初始化等,才可以真正成为一个Servlet。在web.xml中对于每个Servlet的设置,web容器会为其生成一个ServletConfig作为代表对象,你可以从该对象取得设置在web.xml中的Servlet初始参数,以及代表整个web应用程序的ServletContext对象。

每个Servlet都必须在web.xml中设置,由web容器读取Servlet设置、初始化等,才可以真正成为一个Servlet。在web.xml中对于每个Servlet的设置,web容器会为其生成一个ServletConfig作为代表对象,你可以从该对象取得设置在web.xml中的Servlet初始参数,以及代表整个web应用程序的ServletContext对象。


在Servlet接口上,定义了与Servlet生命周期及请求服务相关的init()、service()与destroy()是三个方法。在web容器启动后,会读取web.xml的设置,根据其中每个Servlet的设置,将Servlet类加载并实例化,并为每个Servlet的设置生成一个ServletConfig对象,而后调用Servlet接口的init()方法,将产生的ServletConfig对象当做参数传入。

GenericServlet同时实现了Servlet及ServletConfig,GenericServlet的主要目的就是将初始Servlet调用init()方法所传入的ServletConfig封装起来。GenericServlet在实现Servlet的init()方法时,也调用了灵感而无参数的init()方法,基本上在编写Servlet时,如果有一些初始时所要执行的操作,则可以重写这个无参数的init()方法,而不是直接重写有ServletConfig参数的init()方法。

GenericServlet也包括了Servlet与ServletConfig所定义方法的简单实现,实现内容主要是通过ServletConfig来取得一些相关信息,例如:


* Returns a code String /code containing the value of the named * initialization parameter, or code null /code if the parameter does not * exist. See {@link ServletConfig#getInitParameter}. * p * This method is supplied for convenience. It gets the value of the named * parameter from the servlets code ServletConfig /code object. * @param name * a code String /code specifying the name of the * initialization parameter * @return String a code String /code containing the value of the * initialization parameter @Override public String getInitParameter(String name) { return getServletConfig().getInitParameter(name); * Returns the names of the servlets initialization parameters as an * code Enumeration /code of code String /code objects, or an empty * code Enumeration /code if the servlet has no initialization parameters. * See {@link ServletConfig#getInitParameterNames}. * p * This method is supplied for convenience. It gets the parameter names from * the servlets code ServletConfig /code object. * @return Enumeration an enumeration of code String /code objects * containing the names of the servlets initialization parameters @Override public Enumeration String getInitParameterNames() { return getServletConfig().getInitParameterNames(); * Returns this servlets {@link ServletConfig} object. * @return ServletConfig the code ServletConfig /code object that * initialized this servlet @Override public ServletConfig getServletConfig() { return config; * Returns a reference to the {@link ServletContext} in which this servlet * is running. See {@link ServletConfig#getServletContext}. * p * This method is supplied for convenience. It gets the context from the * servlets code ServletConfig /code object. * @return ServletContext the code ServletContext /code object passed to * this servlet by the code init /code method @Override public ServletContext getServletContext() { return getServletConfig().getServletContext(); * Returns information about the servlet, such as author, version, and * copyright. By default, this method returns an empty string. Override this * method to have it return a meaningful value. See * {@link Servlet#getServletInfo}. * @return String information about this servlet, by default an empty string @Override public String getServletInfo() { return ""; }

所以当在继承HttpServlet实现Servlet时,就可以通过这些方法来取得所要的相关信息,而不用直接意识到ServletConfig的存在。


ServletConfig相当于web.xml中个别Servlet的设置代表对象,这意味着可以从ServletConfig中取得Servlet设置信息。ServletConfig定义了getInitParameter()、getInitParameterNames()方法,可以让你取得设置Servlet时的初始参数。
若要在web.xml中设置个别Servlet的初始参数,可以在 servlet 标签之中,使用 init-param 进行设置。例如:


servlet-name SomeServlet /servlet-name servlet-class club.chuxing.SomeServlet /servlet-class init-param param-name PARAM1 /param-name param-value VALUE1 /param-value /init-param init-param param-name PARAM2 /param-name param-value VALUE2 /param-value /init-param /servlet

对于上述的例子,只要取得对应SomeServlet设置的ServletConfig实例,就可以通过geInitParameter()并指定 param-name 的名称来取得 param-value 的值。例如:


PARAM1 = getServletConfig().getInitParameter("PARAM1"); PARAM2 = getServletConfig().getInitParameter("PARAM2"); }

由于ServletConfig必须在Web容器将Servlet实例化后,调用有参数的init()方法再将之传入,是与Web应用程序资源相关的对象,所以在继承HttpServlet后,通常会重写无参数的init()方法以取得Servlet的初始参数。由于GenericServlet定义了一些方法将ServletConfig封装起来,便于取得设置信息,以上代码可改写为:


Servlet初始参数通常作为常数来设置,可以将一些Servlet程序中不想写死的信息放到初始参数中,之后若想更改这些信息,则只修改web.xml中的设置,而不用修改源代码、重新编译或部署。


Servlet学习(五):ServletConfig类的作用 ServletConfig的作用: 1、可以获取Servlet程序的别名servlet-name的值 2、获取初始化参数init-param 3、获取ServletContext对象
Servlet_输出流jsp注意事项 订阅专栏 Servlet输出流两种方法以及注意事项 HTTP 响应码 以及 各自对应解释 关于 Web API 技术标准的开发文档网站(https://developer.mozilla.org)