1、ServletConfig
1)获取servlet初始化的参数信息
2)获取servlet的名字
3)获取ServletContext对象
实例代码如下:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--配置servlet让tomcat加载-->
<servlet>
<servlet-name>ServletDemo01</servlet-name>
<servlet-class>com.gxa.servlet.ServletDemo01</servlet-class>
<!-- 定义初始化参数-->
<init-param>
<param-name>name</param-name>
<param-value>csdn</param-value>
</init-param>
<init-param>
<param-name>age</param-name>
<param-value>2</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo01</servlet-name>
<url-pattern>/servletDemo01</url-pattern>
</servlet-mapping>
</web-app>
ServletDemo01.java
package com.gxa.servlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletDemo01 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("我被初始化了");
//1、获取servlet初始化得参数信息
String name = servletConfig.getInitParameter("name");
System.out.println("name="+name);//name=csdn
String age = servletConfig.getInitParameter("age");
System.out.println("age="+age);//age=2
//2、获取servlet得名字
String servletName = servletConfig.getServletName();
System.out.println("servlet得名字:"+servletName);//servlet得名字:ServletDemo01
//3、获取servletContext对象
ServletContext servletContext = servletConfig.getServletContext();
System.out.println("servletContext得对象:"+servletContext);//servletContext得对象:org.apache.catalina.core.ApplicationContextFacade@6f1db1f8
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
2、ServletContext
1)获取全局的初始化参数
2)获取任何web资源的绝对路径
3)域对象
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 定义全局得初始化参数-->
<context-param>
<param-name>name</param-name>
<param-value>CSDN</param-value>
</context-param>
<context-param>
<param-name>age</param-name>
<param-value>3</param-value>
</context-param>
<!--配置servlet让tomcat加载-->
<servlet>
<servlet-name>ServletDemo02</servlet-name>
<servlet-class>com.gxa.servlet.ServletDemo02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo02</servlet-name>
<url-pattern>/servletDemo02</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ServletDemo03</servlet-name>
<servlet-class>com.gxa.servlet.ServletDemo03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo03</servlet-name>
<url-pattern>/servletDemo03</url-pattern>
</servlet-mapping>
</web-app>
ServletDemo02
package com.gxa.servlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletDemo02 implements Servlet {
//用成员变量记住ServletConfig、ServletContext
private ServletConfig servletConfig;
private ServletContext servletContext;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
//先通过ServletConfig对象得到ServletContext得对象
ServletContext servletContext = servletConfig.getServletContext();
//1、获取全局的初始化参数
String name = servletContext.getInitParameter("name");
System.out.println("全局初始化参数name="+name);//全局初始化参数name=CSDN
String age = servletContext.getInitParameter("age");
System.out.println("全局初始化参数age="+age);//全局初始化参数age=3
//2、获得任何指定的web资源的绝对路径
System.out.println(servletContext.getRealPath("index.jsp"));
//结果:E:\Idea\workspace\javawebExceprise\out\artifacts\javaweb_war_exploded\index.jsp
System.out.println(servletContext.getRealPath("WEB-INF/web.xml"));
//结果:E:\Idea\workspace\javawebExceprise\out\artifacts\javaweb_war_exploded\WEB-INF\web.xml
this.servletConfig = servletConfig;
this.servletContext = servletConfig.getServletContext();
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//3、往域中存储一个 name=张三 的值,然后在另一个servlet中可以取出该域中的数据
servletContext.setAttribute("name","张三");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
ServletDemo03
package com.gxa.servlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletDemo03 implements Servlet {
//用成员变量记住ServletConfig、ServletContext
private ServletConfig servletConfig;
private ServletContext servletContext;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig = servletConfig;
this.servletContext = servletConfig.getServletContext();
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println(servletContext.getAttribute("name"));//张三
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}