- Servlet 运行在服务端的Java小程序,是sun公司提供一套规范,用来处理客户端请求、响应给浏览器的动态资源。
- Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener),且最重要。
servlet作用
- 获取请求数据
- 处理其你去
- 完成响应
使用规范
Servlet规范要求:Servlet程序需要编写实现类,并在web.xml进行配置。
- 实现类:通常继承javax.servlet.http.HttpServlet类,并复写doGet和doPost方法。
- doGet()方法用于处理get请求。
- doPost()方法用于处理post请求。
入门案例
- 创建类,编写java代码,继承HttpServlet类,重写doGet与doPost方法
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get请求将执行");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post请求将执行");
}
}
- 编写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_3_1.xsd"
version="3.1">
<!--
<servlet> 注册servlet
<servlet-name> servlet名称,当前xml中唯一
<servlet-class> servlet实现类的全限定类名
<servlet-mapping> 给注册的servlet添加映射路径
<servlet-name> 已经注册的servlet名称。注意:必须与注册的名称一致。
<url-pattern> 访问路径。要求:必须/开头
-->
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
3. 配置tomcat
4. 启动项目,访问项目
servlet的执行流程
servlet的生命周期
- servlet的声明周期
package demo;
import javax.servlet.*;
import java.io.IOException;
/*
直接实现 标准 Servlet
*/
public class HisServlet implements Servlet{
/*
初始化
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("呱呱坠地");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/*
服务方法
*/
@Override
public void service(ServletRequest servletRequest,
ServletResponse servletResponse)
throws ServletException, IOException {
System.out.println("您需要服务吗?。。。"");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("垂死病中惊坐起!!!!");
}
}
- servlet被访问的流程
servlet的全局变量
ServletContext
- 服务器启动的时候,为每个WEB应用创建一个单独的ServletContext对象,我们可以使用这个对象存取数据,用这个对象存取的数据可以在整个WEB应用中获得。可以使用如下方法存取数据
- ServletContext对象,tomcat为每一个web项目单独创建的一个上下文(知上知下贯穿全文)对象。就有功能:
- 可以在多个servlet之间共享数据
- 存放:setAttribute()
- 获得:getAttribute()
- 删除:removeAttribute()