1.ServletConfig
作用:
当servlet执行初始化函数init()之后,可以利用ServletConfig获取存储在web.xml里的参数,这样就可以不用在servlet中硬编码一些参数,例如作者姓名,当在servlet中使用作者姓名这个参数的时候直接调用web.xml,如果需要修改参数值,只需修改web.xml,不用重新编译servlet。
用法:
- 在web.xml中
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.ycty.login_control.Login</servlet-class>
<init-param>
<param-name>author</param-name>
<param-value>feipeng8848</param-value>
</init-param>
</servlet>
ServletConfig是配置servlet,所以要放置到servlet的标签中。
2. 在servlet中
out.println( getServletConfig().getIntParameter("author") );
2.ServletContext
ServletConfig的确很方便,但是,如果想在jsp中也使用servlet的配置参数的话,是很麻烦的,首先在servlet中String a_author = getServletConfig().getIntParameter(“author”)获得参数,然后利用requst.setAttribute(“author”,a_author),把参数传递给jsp。
能不能直接在jsp中调用配置参数呢?
能,用ServletContext。
(1).在web.xml中
<web-app>
<context-param>
<param-name>author</param-name>
<param-value>This is context-param,author is feipeng8848</param-value>
</context-param>
</web-app>
这里需要注意一点,ServletConfig是针对servlet的配置,需要写进servlet标签内部,而ServletContext是针对整个web应用,所以他的上层标签是web-app。
(2)在jsp中
out.println(getServletContext().getParameter(author));
ServletContext常用于配置数据库的URL、password、username等
说明:
getServletContext()和getServletConfig()是在 GenericServlet类中实现了的方法,由于httpServlet继承了该类,所以可以直接使用getServletContext()和getServletConfig()。
getServletConfig()的另外一种写法:
ServletConfig config = this.getServletConfig();
out.println( config.getParameter("author"));
getServletContext()的另外一种写法:
ServletContext context = this.getServletContext();
out.println( context.getParameter("author"));