1.Servlet接口
Servlet接口中的5个方法:
现在是面向接口编程,写一个具体的类实现这个接口中的5个抽象方法:
package Servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/SomeServlet")
public class SomeServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化SomeServlet实例");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("执行SomeServlet的service()方法");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("初始化SomeServlet实例");
}
}
2.ServletConfig接口
servletConfig对象是servlet对象的配置信息对象,即里面封装的是web.xml里的内容。
主要提供以下几个方法:
ServletConfig中封装的就是web.xml中的配置信息,里面提供了几个方法都是针对配置信息操作的。注意ServletConfig只能操作Servlet标签里面的配置信息,而对于Servlet标签外面的无法操作,一个Servlet对象仅对应一个ServletConfig对象。
package ServletConfig;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ServletConfigDemo")
public class ServletConfigDemo implements Servlet {
//注意,现在这儿是一个类,类里面定义变量,并提供set方法和get方法
//可将init方法当做一个set方法来看
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
//相当于set方法中的赋值
this.servletConfig=servletConfig;
System.out.println("config="+servletConfig);
}
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//获取Servlet名称
String servletName = servletConfig.getServletName();
System.out.println("ServletName="+servletName);
//获取ServletContext对象
ServletContext servletContext = servletConfig.getServletContext();
System.out.println("servletContext="+servletContext);
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
3.ServletContext接口
ServletContext代表的是上下文信息,一个Servlet对象对应一个ServletConfig对象,所有的Servlet对象共享一个ServletContext对象。
servletContext.setAttribute(“username”,“zhangsan”);
servletContext.setAttribute(“password”,“123”);
servletContext.getAttribute(“username”);
servletContext.removeAttribute(“password”);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/34/ServletContextDemo">设置域属性</a>
<a href="/34/ServletContextDemo1">获取域属性的值</a>
<a href="/34/ServletContextDemo2">重置域属性的值</a>
</body>
</html>
ServletContextDemo文件:
package ServletContext;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ServletContextDemo")
public class ServletContextDemo implements Servlet {
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig=servletConfig;
}
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletConfig=getServletConfig();
//获取ServletContext对象
ServletContext servletContext = servletConfig.getServletContext();
//设置域属性
//这个域属性是全局性的,一旦设置了域属性,所有的servlet都能访问
servletContext.setAttribute("username","zhangsan");
servletContext.setAttribute("password","123");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
ServletContextDemo1文件:
package ServletContext;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ServletContextDemo1")
public class ServletContextDemo1 implements Servlet {
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig=servletConfig;
}
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletConfig=getServletConfig();
//获取ServletContext对象
ServletContext servletContext = servletConfig.getServletContext();
//获取域属性的值
Object username = servletContext.getAttribute("username");
System.out.println(username);
Object password = servletContext.getAttribute("password");
System.out.println(password);
//重置域属性的值
servletContext.setAttribute("username","ghh");
//删除域属性
servletContext.removeAttribute("password");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
ServletContextDemo2文件:
package ServletContext;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ServletContextDemo2")
public class ServletContextDemo2 implements Servlet {
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig=servletConfig;
}
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//获取ServletContext 对象
ServletContext servletContext = servletConfig.getServletContext();
//获取域属性的值
Object username = servletContext.getAttribute("username");
System.out.println(username);
Object password = servletContext.getAttribute("password");
System.out.println(password);
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);
String realPath = servletContext.getRealPath("/index.html");
System.out.println(realPath);
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
servletContext.getContextPath();
servletContext.getRealPath("/index.html");
package ServletContext;
import javax.servlet.*;
import java.io.IOException;
public class ServletContextDemo3 implements Servlet {
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig=servletConfig;
}
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
ServletContext servletContext = servletConfig.getServletContext();
//获取虚拟路径
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);
//获取真实路径
String realPath = servletContext.getRealPath("/index.html");
System.out.println(realPath);
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}