Servlet技术
什么是Servlet
- Servlet是JavaEE规范之一。(规范就是接口)
- Servlet就JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。
- Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
手动实现Servlet程序
- 编写一个类实现Servlet接口。
- 实现servlet的方法,处理请求,并响应数据。
- 到web.xml中去配置servlet程序的访问地址。
Servlet的生命周期
- 执行Servlet构造器方法
- 执行init初始化方法
前两步,是在第一次访问的时候创建Servlet程序会调用
-
执行service方法 (每次访问都会调用)
-
执行destroy销毁方法**(在web工程停止的时候调用)**
public class HelloServlet implements Servlet {
public HelloServlet(){
System.out.println("1.执行Servlet构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2.执行init初始化方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3.执行service方法");
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();
if("GET".equals(method)){
System.out.println("get方法");
}else if("POST".equals(method)){
System.out.println("post方法");
}
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("执行destroy销毁方法");
}
}
<?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>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
通过继承HttpServlet实现Servlet程序
一般在实际项目开发中,都是使用继承HttpServlet类的方式去实现Servlet程序。
- 编写一个类去继承HttpServlet类
- 根据业务需要重写doGet或doPost方法
- 到web.xml中的配置Servlet程序的访问地址
public class HelloServlet implements Servlet {
public HelloServlet(){
System.out.println("1.执行Servlet构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2.执行init初始化方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3.执行service方法");
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();
if("GET".equals(method)){
System.out.println("get方法");
}else if("POST".equals(method)){
System.out.println("post方法");
}
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("执行destroy销毁方法");
}
}
<?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>
<servlet-name>HelloServlet2</servlet-name>
<servlet-class>HelloServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet2</servlet-name>
<url-pattern>/HelloServlet2</url-pattern>
</servlet-mapping>
</web-app>