文章目录
什么是Servlet
- Servlet 是 JavaEE 规范之一。规范就是接口。
- Servlet 是 JavaWeb的三大组件之一。三大组件分别是:Servelt程序、Filter 过滤器、Listener 监听器。
- Servlet 是运行在服务器上的一个java小程序,它可以就收客户端发送过来的请求,并响应数据给服务器。
Servlet 的生命周期
- 执行
Servlet
构造器方法 - 执行
init
初始化方法 - 执行
service
方法 - 执行
destory
销毁方法
一二步,是第一次访问的时候创建servlet程序会调用
第三步,每次访问都会调用
第四步,在web工程停止的时候调用
Servlet类的继承体系
自定义的servlet程序
—继承—>Class HttpServlet
—继承—>Class GenericServlet
—实现—>Interface Servlet
- Servlet 接口,只负责定义Servlet程序的使用规范
- GenericServlet 类实现了Servlet 接口。做了很多空实现。并持有一个ServletConfig类的作用。并对ServletConfig的使用做了一些方法
- HttpService抽象类实现了service()方法,并实现了请求分发处理
我们只需要根据业务的需要重写doGet和doPost方法即可。
通过继承HttpServlet实现Servlet程序
一般在实际项目开发中,都是使用继承HttpServlet类的方式去实现Servlet程序
- 编写一个类去继承HttpServlet类
- 根据业务需要重写deGet或者doPost方法
- 到web.xml中配置Servlet程序的访问地址。
继承HttpServlet来实现Servlet
代码:
package com.dyit.servlet_test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletTest extends HttpServlet{
//响应输出一个hello servlet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter pw = resp.getWriter();
pw.print("hello servlet");
pw.flush();
pw.close();
}
}
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>helloweb</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- servlet 标签给 Tomcat 配置 Servlet 程序 -->
<servlet>
<!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) -->
<servlet-name>ServletTest</servlet-name>
<!--servlet-class 是 Servlet 程序的全类名-->
<servlet-class>com.dyit.servlet_test.ServletTest</servlet-class>
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
<!--servlet-mapping 标签给 servlet 程序配置访问地址-->
<servlet-mapping>
<!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个 Servlet 程序使用-->
<servlet-name>ServletTest</servlet-name>
<!--url-pattern 标签配置访问地址 <br/>
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 <br/>
/hello 表示地址为:http://ip:port/工程路径/hello <br/>
-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
会看到以下效果
helloweb 位项目名