博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet开发(一)
阅读量:4673 次
发布时间:2019-06-09

本文共 3945 字,大约阅读时间需要 13 分钟。

1. Servlet简介

Servlet是服务器端程序,主要用来交互式地浏览和修改数据,生成动态web内容。Servlet是SUN公司提供的一个接口,广义的Servlet可以指任何实现了Servlet这个接口的类。Servlet生成动态web内容的过程包含以下这些内容:

   1. 客户端发送请求至服务器端;

   2. 服务器将请求发送至Servlet;

   3. Servlet生成响应内容并将其传给服务器;

   4. 服务器将响应返回给客户端;

用户若想要开发一个动态web资源,也就是开发一个java程序向浏览器输出数据,需要完成以下两个步骤:

   1. 编写一个java类实现Servlet接口;

   2. 将开发好的java类部署到web服务器中;

 

2. Servlet的运行过程

Servlet程序是由web服务器调用,web服务器接收到客户端的Servlet请求后:

   1. Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步;

 2. 装载并创建该Servlet的一个实例对象;
 3. 调用Servlet实例对象的init()方法;
 4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去;
 5. WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法;

Servelt调用图如下:

 

3. 在eclipse中开发Servlet

在eclipse中新建一个web project,鼠标右击eclipse中左侧的空白部分,点击new-->Danamic Web Project,输入工程名称,点击next,记得勾选generate web.xml。

eclipse会自动创建下图所示目录结构:

上图中,工程名为MyWebProject,该工程部署时,在webapps目录下就会有一个MyWebProject的web应用;

src:java程序的开发目录,该目录下所有编写的java程序在部署时,会自动部署到MyWebProject/web-inf/classes目录下;

WebContent:对应于web应用的根目录,该目录下的所有子文件和子文件目录在部署时,会原封不动地发布到web应用目录下。

 

3.1 Servlet接口实现类

Servlet框架主要包含两个包,Javax.servlet和javax.servlet.http。在javax.servlet中定义了所有的Servlet类都必须实现和扩展的通用接口和类,在javax.servlet.http包中定义了采用http协议的HttpServlet类。

Servlet接口SUN公司定义了两个默认的实现类:GenericServlet和HttpServlet,他们之间的继承关系如下图:

 

GenericServlet

先来看看Java EE API帮助文档中GenericServlet这个类继承的类和实现的接口。

可以看出,GenericServlet是Servlet和ServletConfig接口的实现类,其中的service()方法是一个抽象方法。也就是说,GenericServlet类实现了Servlet和ServletConfig接口,实现了除了service()之外的其他方法。在创建Servlet对象时,可以继承GenericServlet类来简化程序的代码,但需要实现service()方法。如果新建的servlet程序直接继承GenericServlet接口会使开发更简洁。

 

HttpServlet

HeepServlet指能够处理http请求的Servlet,它在原有的servlet接口上添加了一些处理http协议的方法。它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

HttpServlet在实现Servlet接口时,覆写了service()方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet()方法;如为Post请求,则调用doPost()方法。因此,开发人员在编写Servlet时,通常只需要覆写doGe()t或doPost()方法,而不要去覆写service()方法。

 

3.2 通过eclipse创建和编写Servlet

在之前新建的web应用中,找到src开发目录,右击新建包比如:MyServlet,之后右击MyServlet,新建Servlet,填写ClassName比如MyServletDemo,出现如下的界面:

点击next,URL mappings是在web.xml中配置Servlet的名字和Servlet的URL访问地址,如果不修改,全部使用默认的即可。

点击next,接下来是勾选需要重写的方法:

点击finish完成创建。创建好的MyServletDemo中会有如下的代码内容。

package MyServlet;import java.io.IOException;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 implementation class MyServletDemo */@WebServlet("/MyServletDemo")public class MyServletDemo extends HttpServlet {	private static final long serialVersionUID = 1L;           /**     * @see HttpServlet#HttpServlet()     */    public MyServletDemo() {        super();        // TODO Auto-generated constructor stub    }	/**	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)	 */	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		// TODO Auto-generated method stub		response.getWriter().append("Served at: ").append(request.getContextPath());	}	/**	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)	 */	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		// TODO Auto-generated method stub		doGet(request, response);	}}

 

3.3 启动服务器并部署项目

右键单击该项目,选择Run As--->Run on Server,选择Tomcat服务器,点击finish完成。

在地址栏输入:http://localhost:8081/MyWebProject/MyServletDemo 访问这个servlet。

注意:为了让Servlet能响应用户请求,还必须将Servlet配置在web应用中Servlet3.0开始,配置Servlet有两种方式:

  • Servlet类中使用@WebServlet Annotation进行配置。
  • web.xml文件中进行配置,我们用web.xml文件来配置Servlet,需要配置<servlet><servlet-mapping>

在本项目的配置中,使用的是@WebServlet Annotation进行配置,体现在代码中:

这样配置的效果和在web.xml中配置的效果一样,如果在web.xml中配置,需要如下做法:

 

只要在浏览器地址栏输入“http://Tomcat中配置的主机名:端口号/web项目名/@WebServlet Annotation中的映射名称”就可以进行访问了。

更多精彩内容,欢迎搜索微信公众号“程序员考拉”!

转载于:https://www.cnblogs.com/naihuangbao/p/9652373.html

你可能感兴趣的文章
集成Glide4.3.1出错!AbstractMethodError: abstract method "void com.bumptech.glide.module
查看>>
滴滴故障表
查看>>
Android 显示原理简介
查看>>
Windows7系统运行hadoop报Failed to locate the winutils binary in the hadoop binary path错误
查看>>
Arcgis 10.1安装
查看>>
关机时长时间停留在”正在保存设置“的解决办法
查看>>
vue使用video.js解决m3u8视频播放格式
查看>>
Ubuntu下配置使用maven
查看>>
常用sql语句
查看>>
13.无名管道通讯编程
查看>>
使用jmeter做接口测试----柠檬不萌!
查看>>
JAVA基础知识(13)-----Lock接口
查看>>
PHP获取POST数据的几种方法汇总
查看>>
用Supermemo背单词达到8000词条
查看>>
js中的关键子in的使用方法
查看>>
正则表达+验证 [记录]
查看>>
Learning English with EnglishClass101.com---10 Habits of highly Effective Learners
查看>>
LeetCode:Generate Parentheses
查看>>
第七届蓝桥杯大赛个人赛省赛(软件类)真题4
查看>>
深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子
查看>>