ServletConfig的使用
Web容器为每个Servlet创建一个ServletConfig对象。该对象可用于从web.xml文件获取配置信息。
如果从web.xml文件修改了配置信息,则无需更改Servlet。因此,如果您可以把经常改变的参数配置到web.xml,通过ServletConfig对象来读取。
1 ServletConfig的好处
ServletConfig的核心优点是,如果在web.xml文件中修改了信息,则无需重新修改Servlet源码文件。
2 ServletConfig的方法
- public String getInitParameter(String name):返回指定参数名称的参数值。
- public Enumeration getInitParameterNames():返回所有初始化参数名称的枚举。
- public String getServletName():返回Servlet的名称。
- public ServletContext getServletContext():返回ServletContext的对象。
3 获取ServletConfig对象
Servlet接口的getServletConfig()方法可以返回ServletConfig的对象。
ServletConfig config = getServletConfig();
4 使用ServletConfig读取参数
Servlet的init-param标签用于指定Servlet的初始化参数。
<web-app>
<servlet>
......
<init-param>
<param-name>parametername</param-name>
<param-value>parametervalue</param-value>
</init-param>
......
</servlet>
</web-app>
5 读取指定参数的案例
在下面示例中,我们从web.xml文件中获得一个初始化参数,并将此信息打印在Servlet中。
5.1 编写DemoServlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class DemoServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException
{
res.setContentType("text/html;charset=utf-8");
PrintWriter out = res.getWriter();
ServletConfig config=getServletConfig();
String driver=config.getInitParameter("driver");
out.print("驱动名称: "+driver);
out.close();
}
}
5.2 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>DemoServlet</servlet-class>
<init-param>
<param-name>driver</param-name>
<param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
5.3 运行测试
访问:http://localhost:8080/demo,效果如下:
6 读取所有参数的案例
在下面示例中,我们从web.xml文件中获取所有初始化参数,并将此信息打印在Servlet中。
6.1 编写DemoServlet
import java.io.*;
import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class DemoServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException
{
res.setContentType("text/html;charset=utf-8");
PrintWriter out = res.getWriter();
ServletConfig config=getServletConfig();
Enumeration<String> e=config.getInitParameterNames();
String str="";
while(e.hasMoreElements()){
str=e.nextElement();
out.print("<br>参数名称: "+str);
out.print("参数值: "+config.getInitParameter(str));
}
out.close();
}
}
6.2 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>DemoServlet</servlet-class>
<!--多个参数的情况-->
<init-param>
<param-name>username</param-name>
<param-value>system</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>oracle</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
6.3 运行测试
访问:http://localhost:8080/demo,效果如下:
热门文章
优秀文章