servletConfig代表当前servlet在web.xml中的配置信息 ,其中的几个方法
1.String getServletName();
2.String getInitParameter(String key);
3.Enumeration getInitParameterNames();返回一个枚举对象
4.ServletContext getServletContext();返回ServletContext对象
一个servlet在web.xml中的配置如下:
<servlet>
<servlet-name>Demo5Servlet</servlet-name>
<servlet-class>cn.itheima.Demo5Servlet</servlet-class>
<init-param>
<param-name>data1</param-name>
<param-value>value1</param-value>
</init-param>
<init-param>
<param-name>data</param-name>
<param-value>value0</param-value>
</init-param>
</servlet>
然后在servlet中利用this.getServletConfig()获取ServletConfig对象,该对象提供了getInitParameter()和getInitParameterNames()方
法,可以遍历出配置中的配置项。不想在servlet中写死的内容可以配置到此处,像字符编码等。
方法应用:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletConfig config = this.getServletConfig();//从当前servlet的父类HttpServlet的父类(抽象类GenericServlet)获得
//--获取当前Servlet 在web.xml中配置的名称
String sName = config.getServletName();
System.out.println(sName);//Demo5Servlet
//--获取当前Servlet中配置的初始化参数
String value = config.getInitParameter("data1");
System.out.println(value);//value1
Enumeration enumration = config.getInitParameterNames();
while(enumration.hasMoreElements()){
String name = (String) enumration.nextElement();
String value = config.getInitParameter(name);
System.out.println(name+":"+value);//data1:value data:value0
}
//--获取代表当前应用的ServletContext对象
ServletContext context = config.getServletContext();
this.getServletContext();
}
ServletContext:
1.代表当前web应用的对象。
2.作为域对象使用,在不同servlet之间传递数据,作用范围是整个web应用
生命周期:当web应用被加载进容器时创建代表整个web应用的ServletContext对象。当服务器关闭或web应用被移除出容器时,
ServletContext对象跟着销毁。
~域:一个域就理解为一个框,这里面可以放置数据,一个域既然称作域,他就有一个可以被看见的范围,这个范围内都可以对这个
域中的数据进行操作,那这样的对象就叫做域对象。
3.在web.xml可以配置整个web应用的初始化参数,利用ServletContext去获得
<context-param>
<param-name>param1</param-name>
<param-value>pvalue1</param-value>
<param-name>param0</param-name>
<param-value>pvalue0</param-value>
</context-param>
this.getServletContext().getInitParameter("param1")//param1
Enumeration enumration = this.getServletContext().getInitParameterNames();
while(enumration.hasMoreElements()){
String name = (String) enumration.nextElement();
String value =this.getServletContext() getInitParameter(name);
System.out.println(name+":"+value);//param1:pvalue1 param1:pvalue1
}
servletContext的几个方法:
void setAttribute(String,Object);
Object getAttribute(String);
void removeAttribute(String);
请求参数 parameter --- 浏览器发送过来的请求中的参数信息
初始化参数 initparameter --- 在web.xml中为Servlet或ServletContext配置的初始化时带有的基本参数
域属性 attribute --- 四大作用域中存取的键值对
4.在不同servlet之间进行转发
this.getServletContext().getRequestDispatcher("/servlet/DemoServlet").forward(request, response);
方法执行结束,service就会返回到服务器,再有服务器去调用目标servlet,其中request会重新创建,并将之前的request的数据拷
贝进去。
请求转发是一次请求一次响应实现资源流转.请求重定向两次请求两次响应.