首页 > 代码库 > WEB - Servlet基础,编写第一个Servlet
WEB - Servlet基础,编写第一个Servlet
什么是Servlet?
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:
- 性能明显更好。
- Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
- Servlet 是独立于平台的,因为它们是用 Java 编写的。
- 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
- Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
编写Servlet
Servlet本质上是一个Java类,创建一个Servlet很简单,就是定义一个Java类,这个类继承自javax.servlet.http.HttpServlet
类,覆盖其中的doGet和doPost方法,在doGet和doPost中编写处理请求的代码。
由于 Servlet 不是 Java 平台标准版的组成部分,所以必须添加jar包:servlet-api.jar
可以在Tomcat下lib目录下找到,也可自行下载添加。
示例:FirstServlet.java(注意看代码注释)
package net.codingme.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 第一个servlet测试
*
*/
// @WebServlet("/firstServlet")
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FirstServlet() {
super();
}
// get请求处理
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置响应的文本类型和字符编码
response.setContentType("text/html;charset=UTF-8");
//通过输出流向客户端做出响应
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h3>firest servlet</h3>");
out.println("</body></html>");
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Web请求方式除了GET和POST其实还有很多中,例如PUT、DELETE等,GET和POST则最为常用,所以通常只覆盖doGet和doPost方法。response.setContentType(“text/html;charset=UTF-8”);用于设置响应的文本类型和编码方式,通过响应对象获得输出流对象out,用于向客户端浏览器输出响应内容,代码中输出的HTML标记,这实际上是一个动态的Web的页面。
配置Servlet
Servlet编写完成之后,需要在工程WEBROOT/WEB-INF/web.xml
中进行配置才可以生效,web.xml是Web应用的主配置文件,包含Web应用配置的主要信息。
在web.xml中根元素<web-app>
中配置Servlet,代码如下:
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>net.codingme.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/firstServlet</url-pattern>
</servlet-mapping>
配置解释:
<servlet>
<servlet-name>servlet名</servlet-name>
<servlet-class>servlet的class的全名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet名</servlet-name>
<url-pattern>servlet的访问路径</url-pattern>
</servlet-mapping>
如果Servlet版本是3.0及以上的,可以使用注解进行配置,省去web.xml中的配置。配置方式如:
package net.codingme.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 第一个servlet测试
* 使用注解
*/
@WebServlet("/firstServlet")
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FirstServlet() {
super();
}
.
.
.
运行Servlet
Servlet配置完成之后,把Servlet所在工程项目部署到Web服务器上并启动Web服务器,此时Servlet将可以被访问到,访问地址格式为协议://服务器地址:端口号/WEB应用名/Servlet的访问路径
Web Server可以定位到访问具体哪一个Servlet:
- 查找web.xml中Servlet配置信息中的
<url-pattern>
值与请求路径相匹配的项 - 通过查找结果,访问到对应的(
<servlet-mapping>
中<servlet-name>
与<servlet>
中<servlet-name>
值相等,)<servlet-class>
,可以访问到指定的Servlet类,Web服务器将在第一次访问Servlet时实例化Servlet一个对象,为客户端提供响应服务。
访问Servlet
访问Servlet有三种方式
- 直接在浏览器地址中输入访问路径来访问
- 通过超链接来访问
- 通过提交表单来访问
访问测试
总结:Servlet开发步骤,执行流程
Servlet开发步骤:
- 编写Servlet,编写一个Java类,继承HttpServlet类并覆盖doGet和doPost方法
- 在配置文件web.xml中配置Servlet(Servlet3.0以上版本可以使用注解)
- 将Servlet所在Java Web项目部署到Web服务器上,例如Tomcat
- 启动Web服务器
- 请求访问Servlet
Servlet执行流程:
- 客户端浏览器向Web服务器发送请求访问某一个Servlet
- Web服务器根据配置信息定位到具体的Servlet
- 如果这个Servlet是第一次被访问,此时Servlet对象在内存中不存在,则创建这个Servlet对象,如果这个Servlet已经被访问过,则Servlet的对象已经存在内存中,然后创建一个线程操作这个Servlet对象,完成具体功能。
- 获得运行结果,通过响应对象(response)设置响应参数并将结果返回到客户端。
- 客户端将相应结果显示在浏览器中。
WEB - Servlet基础,编写第一个Servlet