Java Web学习——Servlet 入门 一、Servlet 简介 Servlet 是 JavaEE 规范之一,同时它也是 JavaWeb三大组件(Servlet 程序、Filter 过滤器、Listener 监听器)之一。
Servlet 是在服务器上运行的小程序,它是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
二、创建 Servlet 程序 配置好 Servlet 项目依赖后,按照下图所示创建文件夹和文件如下:
HelloServlet.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.example.servelet ;
import javax.servlet.* ;
import java.io.IOException ;
public class HelloServlet implements Servlet {
@Override
public void init ( ServletConfig servletConfig ) throws ServletException {
}
@Override
public ServletConfig getServletConfig () {
return null ;
}
@Override
public void service ( ServletRequest servletRequest , ServletResponse servletResponse ) throws ServletException , IOException {
System . out . println ( "Servlet 被访问" );
}
@Override
public String getServletInfo () {
return null ;
}
@Override
public void destroy () {
}
}
Copy web.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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" >
<!--给 Tomcat 配置 Servlet 程序-->
<servlet>
<!--给 Servlet 程序起别名(一般是类名)-->
<servlet-name> HelloServlet</servlet-name>
<!--Servlet 程序的全类名-->
<servlet-class> com.example.servelet.HelloServlet</servlet-class>
</servlet>
<!--给 Servlet 程序配置访问地址-->
<servlet-mapping>
<!-- 告诉 Tomcat 当前配置地址给哪个 Servlet 程序使用-->
<servlet-name> HelloServlet</servlet-name>
<!-- 配置的访问地址 -->
<url-pattern> /hello</url-pattern>
</servlet-mapping>
</web-app>
Copy index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
$END$
</body>
</html>
运行程序,浏览器访问地址:http://127.0.0.1:8080,网页出现如下信息:
浏览器访问地址:http://127.0.0.1:8080/hello,控制台打印出:Servlet 被访问 。
至此第一个 Servlet 程序就已经运行成功了!
三、Servlet 生命周期 与 Servlet 生命周期有关的方法一般有以下三个:
1、init():
init() 方法是在创建 Servlet 对象时被调用,而且只能被调用一次,用于 Servlet 对象在整个生命周期内的唯一一次初始化。只有在 init() 方法调用成功后,Servlet 才会处于服务状态,才能够去处理客户端的请求; 2、service():
service() 方法是 Servlet 工作的核心方法。当客户端请求访问 Servlet 时,Servlet 容器就会调用 service() 方法去处理来自客户端的请求,并把处理后的响应返回给客户端; 3、destroy():
destory() 方法是 Servlet 容器回收 Servlet 对象之前调用的,且只会调用一次,而此时的服务器处于停止状态或者访问资源已经被移除。 四、Servlet 请求分发 当我们使用不同的方式去请求 Servlet 的同一个地址时,例如使用 POST 和 GET 方法去请求同一个路由地址,我们希望在使用 GET 方法时 Servlet 程序返回页面信息,使用 POST 方法向 Servlet 程序提交数据。
要实现这种效果,我们可以通过判断客户端请求的方法来进行不同的处理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
public void service ( ServletRequest servletRequest , ServletResponse servletResponse ) throws ServletException , IOException {
// 类型转换
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 方式访问" );
}
}
Copy 分别使用 GET 方法和 POST 方法访问地址,可以发现 Servlet 程序可以对不同方法分别进行处理。