java_JavaWeb(3)
ServletConfig对象
可以通过web.xml文件中的<init-param>标签来初始化参数,这些参数会在创建servlet实例时将其封装到ServletConfig对象中,并在调用service中的init方法时将其传递给servlet;
设置参数:
<init-param> <param-name>name</param-name> <param-value>lzj</param-value> <init-param>
定义ServletConfig对象,通过init方法将其传给Servlet以便开发人员对其进行调用;
private ServletConfig config ;//定义ServletConfig对象,web容器在创建servlet对象时会自动将参数传入; public void init(ServletConfig config) throws ServletException{ this.config = config }//将其传给Servlet; ...... String paramVal = this.config.getInitParameter("name");//获取指定的初始化参数; Enumeration<String>e = config.getInitParameterNames();//获取所有的初始化参数; while (e.hasMoreElements()){ String name = e.nextElement(); String value = config.getInitParameter(name); response.getWriter().print(name + " = " + value+ "<br/>");//打印输出初始化参数;
ServletContext对象
web容器在启动时会为每个web应用程序都创建一个ServletContext对象,所有的Servlet都共享这个对象,因此可以通过这个对象来实现Servlet对象之间的通讯,可以通过ServletConfig中的getServletContext的方法来获取SercletContext对象;
//在第一个Servlet中获取ServletContext对象并储存数据; ServletContext context = this.getServletConfig.getServletContext(); context.setAttribute("date",date); //在第二Servlet中提取获得data数据; ServletContext context = this.get.ServletContext(); String data = context.getAttribute("data");
除了上面所说的<init-param>可以设置初始化参数,还可用<context-param>标签来设置参数,再用ServletContext方法中的getInitParameter()方法来获取;
<context-param> <param-name>name</param-name> <param-value>lzj</param-value> <context-param>//在web.xml设置后初始化参数; ........ ServletContext context = this.getServletContext(); String Paramval = context.getInitParameter("name");//通过getInitParameter方法获取初始化参数;
除了实现数据通讯、初始化参数,ServletContext还可以用来实现转发;
通过ServletContext对象中的getRequestDispatcher得到RequestDispatcher对象,再调用forward方法实现转发;
ServletContext context = this.getServletContext(); RequestDispatcher rd = context.getRequestDispatcher("/servlet/ServletContextDemo5"); rd.forward(request, response);