Javaweb第二天
Java Web —— ——Servlet基础篇
一、ServletConfig
ServletConfig接口:比如,文件使用的编码,使用Servlet程序的公司等,这些信息可以在web.xml文件中,使用一个或者多个元素,进行配置
当Tomcat初始化一个Servlet时,会将该Servlet的配置信息,封装到一个ServletConfig对象中,通过调用init(ServletConfig config)方法 将ServletConfig对称传递给Servlet
ServletConfig接口常用方法
方法说明 功能描述
String getlnitParameter(String name) 根据初始化化参数返回对应的初始化参数数值
Enumeration getInitParameterNames() 返回一个Enumeration 对象,其中包含了所有的初始化参数名
ServletContext getServletContext() 返回一个代表当前Web应用的ServletContext对象
String getServletName() 返回Servlet的名字,即web.xml中元素的值
二、ServletContext接口
当Servlet容器启动时,会为每个Web应用创建一个唯一的SevlelContext对象代表当前
Web应用,该对象不仅封装了当前Web应用的所有信息,而且实现了多个Servlet之间数据的
共享。接下来,针对ServletContext接口的不同作用分别进行讲解,具体如下。
1.获取Web应用程序的初始化参数
2.在项目的cn.itcast.servlet 包中,创建一个名称为TestServlet03 的类,该类中使用
三、实现多个Servlet对象共享数据
由于一个Web应用中的所有Serlet共享同一个SerletContext)>对象,因此,ServetConer
对象的域属性可以被该Web应用中的所有Servlet访问。在ServletContext接口中定义了分别用于增加、删除、设置ServletContext域属性的4个方法,
ServletContext接口的方法
方法说明 功能描述
Enumeration getAttributeNames() 返回一个Enumeration 对象,该对象包含了所有存放在
Object gettibute(String name) 根据參数指定的属性名返回一个与之匹配的域属性值
void removeAttribute(String name) 根据参数指定的域属性名ServletContext中删除匹配的域属性
void setAttribute(String name,Object obj) 设置ServletContext的域属性,其中name是域属性名,obj是域属性值
代码如下:
lifeServlet
com.monkey1024.servlet.LifeServlet
1
lifeServlet
/life
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*/
public class ConfigTest01 implements Servlet {
private ServletConfig config; @Override public void destroy() { } @Override public ServletConfig getServletConfig() { return this.config; } @Override public String getServletInfo() { return null; } @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init方法中ServletConfig:" + servletConfig); this.config = servletConfig; } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { String userName = config.getInitParameter("userName"); System.out.println("userName=" + userName); Enumeration<String> param = config.getInitParameterNames(); while(param.hasMoreElements()){ String name = param.nextElement(); String value = config.getInitParameter(name); System.out.println(name + "=" + value); } System.out.println("ServletName=" + config.getServletName()); }
}
MySQLDriver com.mysql.jdbc.Driver dbURL jdbc:mysql:package com.monkey1024.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*/
public class ContextTest01 implements Servlet {
private ServletConfig config;
@Override public void destroy() { } @Override public ServletConfig getServletConfig() { return this.config; } @Override public String getServletInfo() { return null; } @Override public void init(ServletConfig servletConfig) throws ServletException { this.config = servletConfig; } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { ServletContext application = this.config.getServletContext(); System.out.println("ContextTest01:" + application); String driver = application.getInitParameter("MySQLDriver"); System.out.println(driver); String contextPath = application.getContextPath(); System.out.println("contextPath:" + contextPath); //文件在硬盘中的绝对路径 String realPath = application.getRealPath("FirstServlet"); System.out.println("realPath:" + realPath); //向ServletContext中添加属性 application.setAttribute("admin", "tiger"); application.setAttribute("password", 123456); //删除password application.removeAttribute("password"); }
}
package com.monkey1024.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class ContextTest02 implements Servlet {
private ServletConfig config; @Override public void init(ServletConfig config) throws ServletException { this.config = config; } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { ServletContext application = this.config.getServletContext(); System.out.println("Context02中的application:" + application); String admin = (String)application.getAttribute("admin"); System.out.println(admin); String password = (String)application.getAttribute("password"); System.out.println(password); } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void destroy() { // TODO Auto-generated method stub }
}
大数据2005 张林 学号:2020080605015