ServletConfig和ServletContext
一、ServletConfig。
在servlet配置文件中,可以使用多个<init-param>标签为servlet配置一些初始参数。而web容器在创建servlet实例对象时,会自动把初始化信息封装到ServletConfig对象中,并调用servlet的init()方法,并将ServletConfig对象传递给servlet。进而,我们可以通过ServletConfig对象得到servlet的初始化信息。
有些信息不适合在程序中写死,就可以放在配置文件中。比如数据库,编码表等。
<servlet> <servlet-name>ServletDemo1</servlet-name> <servlet-class>cn.netjava.config.ServletDemo1</servlet-class> <init-param> <param-name>charset</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>url</param-name> <param-value>jdbc:mysql://localhost:2353/data</param-value> </init-param> <init-param> <param-name>username</param-name> <param-value>xxx</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>xxx</param-value> </init-param> </servlet>
//1.写法一ServletConfig config=this.getServletConfig();System.out.println(config.getInitParameter("charset"));//指定名称信息Enumeration e1=config.getInitParameterNames();while(e1.hasMoreElements()){//所有信息String name=(String) e1.nextElement();System.out.println(config.getInitParameter(name));}System.out.println("--------------------");//2.写法二System.out.println(this.getInitParameter("charset"));Enumeration e2=this.getInitParameterNames();while(e2.hasMoreElements()){String name=(String) e2.nextElement();System.out.println(this.getInitParameter(name));}
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletDemo2 extends HttpServlet {/** * */private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.String data="xxx";this.getServletContext().setAttribute("data", data);//2.String username="yyy";this.getServletConfig().getServletContext().setAttribute("username", username);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletDemo3 extends HttpServlet {/** * */private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println((String)this.getServletContext().getAttribute("data"));}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
<context-param> <param-name>data</param-name> <param-value>xxx</param-value> </context-param>
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//将数据交给1.jsp显示String data="xxxx";this.getServletContext().setAttribute("data", data);this.getServletContext().getRequestDispatcher("/WEB-INF/1.jsp").forward(request, response);}
url=jdbc:mysql://localhost:2343//datausername=rootpassword=root
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {InputStream ins=this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");Properties props=new Properties();props.load(ins);System.out.println(props.get("url"));}