序号 | 对象 | 作用 |
---|---|---|
1 | HttpServletRequest请求对象 | 获取请求信息 |
2 | HttpServletResponse响应对象 | 设置响应对象 |
3 | ServletConfig对象 | servlet配置对象 |
4 | ServletContext对象 | servlet的上下文对象 |
ServletConfig对象: 主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)
创建时机: 在创建完servlet对象之后,在调用init方法之前创建。
得到对象: getServletConfig()!!!
javax.servlet.GenericServlet类的部分源码:
package javax.servlet; import java.io.IOException; import java.util.Enumeration; public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable { private transient ServletConfig config; /** * Does nothing. All of the servlet initialization is done by one of the <code>init</code> methods. */ public GenericServlet() { } /** * Called by the servlet container to indicate that the servlet is being placed into service. */ public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } /** * A convenience method which can be overridden so that there‘s no need * to call <code>super.init(config)</code>. * * Instead of overriding init(ServletConfig), simply override * this method and it will be called by <code>GenericServlet.init(ServletConfig config)</code>. * The <code>ServletConfig</code> object can still be retrieved via getServletConfig. */ public void init() throws ServletException { } /** * Returns this servlet‘s ServletConfig object. */ public ServletConfig getServletConfig() { return config; } public String getServletName() { return config.getServletName(); } public String getInitParameter(String name) { return getServletConfig().getInitParameter(name); } public Enumeration getInitParameterNames() { return getServletConfig().getInitParameterNames(); } /** * Returns a reference to the ServletContext in which this servlet is running. */ public ServletContext getServletContext() { return getServletConfig().getServletContext(); } }
1)tomcat服务器把这些参数会在加载web应用的时候,封装到ServletConfig对象中
2)tomcat服务器调用init方法传入ServletConfig对象
在servlet的配置信息中,加上<init-param>,可以配置多个!!
servlet的初始化参数配置示例:
<servlet> <servlet-name>ConfigDemo</servlet-name> <servlet-class>com.rk.http.d_config.ConfigDemo</servlet-class> <!-- 初始参数: 这些参数会在加载web应用的时候,封装到ServletConfig对象中 --> <init-param> <param-name>path</param-name> <param-value>D:/rk/MyTest.txt</param-value> </init-param> <init-param> <param-name>website</param-name> <param-value>www.rk.com</param-value> </init-param> <init-param> <param-name>rk</param-name> <param-value>lsieun</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>ConfigDemo</servlet-name> <url-pattern>/config</url-pattern> </servlet-mapping>
注意: servlet的参数只能由当前的这个sevlet获取!!!!
序号 | 函数 | 作用 |
---|---|---|
1 | String getServletName() | 得到servlet的名称 |
2 | String getInitParameter(String name) | 根据参数名获取参数值 |
3 | Enumeration getInitParameterNames() | 获取所有参数名 |
4 | ServletContext getServletContext() | 得到servlet上下文对象 |
示例代码:
package com.rk.http.d_config; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ConfigDemo extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); ServletConfig config = this.getServletConfig();//得到Servlet对象 String servletName = config.getServletName();//得到servlet的名称 out.write("Servlet的名称:" + servletName + "<br/>"); out.write("<strong>Servet的配置信息path路径下的文件内容</strong>:<br/>"); String path = config.getInitParameter("path");//读取servlet的初始参数 File file = new File(path); FileReader reader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(reader); String line = null; while((line=bufferedReader.readLine()) != null) { out.write(line + "<br/>"); } out.write("<strong>Servlet配置信息:</strong><br/>"); Enumeration<String> initParameterNames = config.getInitParameterNames();//查询当前servlet的所有初始化参数 while(initParameterNames.hasMoreElements()) { String paramName = initParameterNames.nextElement(); String paramValue = config.getInitParameter(paramName); out.write(paramName + ":" + paramValue + "<br/>"); } } }
原文地址:http://lsieun.blog.51cto.com/9210464/1782155