web服务器在调用servlet时,会向servlet传递多个参数,我们重点了解以下几个:
request
response
servletConfig
servletContext
session
cookie
ServletConfig对象:封装servlet的配置信息
在servlet的配置文件(web.xml)中,可以使用一个或多个<init-param>
标签为servlet配置一些初始化参数。当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将servletConfig对象传递给servlet。进而,通过servletConfig对象就可以得到当前servlet的初始化参数信息。
在实际开发中,有些东西不适合在servlet中写死,这类数据就可以通过配置方式配给servlet,例如:servlet采用哪个码表编码,servlet连接哪个数据库,servlet读取哪个配置文件等。
例:web.xml中配置servletDemo5的初始化参数:
<servlet>
<servlet-name>ServletDemo5</servlet-name>
<servlet-class>cn.sun.ServletDemo5</servlet-class>
<init-param>
<param-name>data1</param-name>
<param-value>xxxxxx</param-value>
</init-param>
<init-param>
<param-name>data2</param-name>
<param-value>yyyyy</param-value>
</init-param>
<init-param>
<param-name>data3</param-name>
<param-value>zzzzzz</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo5</servlet-name>
<url-pattern>/ServletDemo5</url-pattern>
</servlet-mapping>
1、servletDemo5读取指定的参数信息:
package cn.sun;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/servlet/ServletDemo5")
public class ServletDemo5 extends HttpServlet {
private ServletConfig config;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ServletConfig config=this.getServletConfig(); //这样可以直接得到封装数据在config对象,不需再重写init方法来得到
String value=config.getInitParameter("data1"); //得到指定的参数
System.out.println(value);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
@Override
public void init(ServletConfig config) throws ServletException {
this.config=config; //得到服务器传递的config对象
}
}
运行http://localhost:8080/day05/ServletDemo5,会在控制台输出参数data1的信息:
2、servletDemo5读取所有的参数信息:
package cn.sun;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/servlet/ServletDemo5")
public class ServletDemo5 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//得到所有的参数
Enumeration e = this.getServletConfig().getInitParameterNames(); //得到所有初始化配置参数的名称
while (e.hasMoreElements()) {
String name = (String) e.nextElement(); //得到每一个初始化参数名称
String value1 = this.getServletConfig().getInitParameter(name); //得到这个名称对应的值
System.out.println(name+"="+value1);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}