servlet中的config类与context的基本实现
config的实现类
package servlet_practice;
import jakarta.servlet.*;
import java.io.IOException;
public class sevlt_config implements Servlet {
//servlet的config类是servlet程序的配置信息类
//servlet程序和servletConfig对象都是有tomcat创建 我们负责使用
//servlet程序默认是第一次访问的时候创建 servletConfig是每个servlet创建时 就创建一个servletConfig对象
//config类的三大作用
//1.可以获取servlet程序的别名servlet-name的值
//2.获取初始化参数init-param
//3.获取servletcontext对象
@Override
public void init(ServletConfig servletConfig) throws ServletException {
//也可以在其他方法中通过调用getServletConfig()方法
//1.可以获取servlet程序的别名servlet-name的值
System.out.println("servlet程序的别名是"+servletConfig.getServletName());
//2.获取初始化参数init-param(在web.xml中的servler标签下配置)
System.out.println("初始化参数username的参数值是"+servletConfig.getInitParameter("username"));
//3.获取servletcontext对象
System.out.println("servletcontext对象是"+servletConfig.getServletContext());
}
@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() {
}
}
context的实现类
package servlet_practice;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class sevlt_context extends HttpServlet {
//servletContext是一个接口 他表示servlet上下文对象
//一个web工程 只有一个servletContext对象实例
//servlet实在web工程部署启动时创建 在web工程停止时候销毁
//servletContext对象是一个域对象(域对象可以项Map一样存取数据 域指的是存取数据的操作范围 也就是整个web工程)
// 存数据 取数据 删除数据
//Map put() get() remove()
//域对象 setAttribute() getAttribute() remove()
//servletContext类的四个作用
//1.获取web.xml中配置的上下文参数context-param
//2.获取当前的工程路径 格式:/工程路径
//3.获取工程部署后在服务器硬盘上的绝对路径
//4.像Map一样存取数据
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取web.xml中配置的上下文参数context-param
ServletContext context = getServletConfig().getServletContext();
String s = context.getInitParameter("username");
System.out.println("context-param参数username的参数值是"+s);
//2.获取当前的工程路径 格式:/工程路径
System.out.println("当前工程路径"+context.getContextPath());
//3.获取工程部署后在服务器硬盘上的绝对路径
// / 被服务器解析为:http://ip;port/工程名
System.out.println("工程部署的路径是"+context.getRealPath("/"));
//获取的路径为idea整合tomcat之后 tomcat被拷贝的一些副本内容 映射到idea代码的web目录
//4.像Map一样存取数据在保存之后可以在这个web工程的其他servlet程序获取数据
context.setAttribute("key1","value1");
System.out.println("contxet中获取域数据key1的值是"+context.getAttribute("key1"));
}
}
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>
<!--servlet-name标签给Servlet程序起别名一般是类名-->
<servlet-name>sevlt_interface</servlet-name>
<!--servlet-class是Servlet程序的全类名-->
<servlet-class>servlet_practice.sevlt_interface</servlet-class>
</servlet>
<!--servlet-mapping标签给给Servlet程序配置访问地址-->
<servlet-mapping>
<!--servlet-name标签作用是告诉服务器 当前配置的地址给哪个Servlet程序使用-->
<servlet-name>sevlt_interface</servlet-name>
<!--url-pattern配置访问地址-->
<!--通常以/打头后面跟访问路径-->
<!--/ 斜杠在服务器解析时表示地址为 http://ip:port/工程路径
/hello 表示地址为http://ip:port/工程路径/hello
-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>sevlt_extends</servlet-name>
<servlet-class>servlet_practice.sevlt_extends</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sevlt_extends</servlet-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>sevlt_config</servlet-name>
<servlet-class>servlet_practice.sevlt_config</servlet-class>
<init-param>
<!--是参数名-->
<param-name>username</param-name>
<!--是参数值-->
<param-value>root</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>sevlt_config</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<!--context-param是上下文参数(它属于整个web工程)-->
<context-param>
<param-name>username</param-name>
<param-value>context</param-value>
</context-param>
<servlet>
<servlet-name>sevlt_context</servlet-name>
<servlet-class>servlet_practice.sevlt_context</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sevlt_context</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
</web-app>