Servlet简介
1、Servlet是服务器端的重要组件,直译为服务端的小程序,它属于动态资源,用来处理请求,服务器接收到请求后会调用Servlet来处理请求。
2、Servlet的主要作用:接收请求;处理请求; 完成响应。
当我们要完成一个登录功能时,用户会将输入的用户名和密码以POST请求的形式发送到服务器,但是服务器本身并不具有能力来读取用户发送的用户名和密码,也就不可能对用户名和密码进行验证,所以当服务器收到这类请求后需要将请求转个一个Servlet处理。
Servlet实现类由我们编写,而由Web服务器(Servlet容器)调用,每个Servlet都必须实现javax.servlet.Servlet。
Servlet生命周期
Servlet的生命周期指的是Servlet由实例化到被销毁的过程。同样也被分为了三个阶段:实例化、处理请求、被销毁。而每个阶段我们都有对应的方法来实现响应的功能,在实例化阶段需要调用init()方法来做初始化操作,处理请求阶段调用service()方法处理请求,销毁对象之前调用destroy()做释放资源等操作。
Servlet生命周期相关方法
public void init(ServletConfig config)
public void service(ServletRequest req, ServletResponse res)
public void destroy()
创建一个Servlet实现类
a) 创建动态WEB项目WEB_Servlet
b) 在项目下创建包com.atguigu.web.servlet
c) 包下创建一个类HelloServlet并实现javax.servlet.Servlet接口
d) 在HelloServlet的service()方法中加入一行打印语句System.out.println(“hello”);
e) 在WEB-INF目录下的web.xml文件中注册映射Servlet
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.atguigu.web.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url- pattern >
</servlet-mapping>
启动服务器,在浏览器中访问:http://localhost:8080/WEB_Servlet/HelloServlet
实现类具体代码:public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig config) throws ServletException {}
@Override
public ServletConfig getServletConfig() {return null;}
@Override
public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {System.out.println("hello");}
@Override
public String getServletInfo() {return null;}
@Override
public void destroy() {}
}
web.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_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.atdongruan.web.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
lweb.xml文件详解:
因为创建好的Servlet需要由Servlet容器调用,而Servlet容器并不能知道我们所创建的Servlet的存在,所以需要在web.xml文件中进行注册。
<servlet></servlet>用于注册servlet
<servlet-name>用于设置servlet的名字,在服务器中关于servlet的一切配置都需要servlet-name来进行配置
<servlet-class>用于设置servlet的全类名,用于创建servlet的实例(反射)
而仅仅注册是远远不够的,因为Servlet是用来处理客户端发送的请求的,所以还需要为Servlet映射一个请求地址。
<servlet-mapping>用于映射需要servlet处理的请求地址
<servlet-name>为servlet的名字,和<servlet>中的<name>有对应关系
<url-pattern>需要servlet处理的请求地址