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中的映射名称”就可以进行访问了。

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

Servlet开发(一)的更多相关文章

  1. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  2. javaweb学习总结(五)——Servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  3. Servlet开发详解

    一.Servlet简介 Servlet是sun公司提供的一门用于动态web资源的技术 sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源,需要完成两个步骤: 编写一个J ...

  4. JavaWeb---总结(六)Servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  5. javaWeb中servlet开发(5)——WEB开发模式:Mode I与Mode II

    1.servlet开发 2.model I模式 客户端通过访问JSP,调用里面的javabean,而通过javabean调用处理数据库的操作,javabean中有专门处理数据库的操作,数据库主要以DA ...

  6. javaweb学习之Servlet开发(二)

    javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...

  7. Servlet开发配置

    本文主要简单实践一下servlet开发相关开发 1.Servlet的创建 两种方法: 创建普通的java类,继承自HttpServlet类,在通过手动配置web.xml文件注册Servlet对象,比较 ...

  8. javaWeb中servlet开发——过滤器

    servlet开发--过滤器(filter) servlet有三种,分为简单servlet.过滤器servlet.监听servlet 简单servlet是作为一种程序所必须的开发结构保存的,继承htt ...

  9. java web 学习五(servlet开发1)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  10. javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)

    一:servlet开发入门 servlet是sun公司一门开发动态web资源的技术,下面编写一个servlet入门程序: 1:在tomcat服务器webapps目录下新建firstServlet目录, ...

随机推荐

  1. 吴裕雄 python 机器学习——高斯贝叶斯分类器GaussianNB

    import matplotlib.pyplot as plt from sklearn import datasets,naive_bayes from sklearn.model_selectio ...

  2. 洛谷P5273 【模板】多项式幂函数 (加强版)

    题面 传送门 题解 这里最麻烦的问题就是它不保证\(A_0=1\) 如果\(A_0>1\),那么直接整个多项式乘上个\(A_0\)的逆元,最后输出答案的时候再把答案乘上\({A_0}^m\) 如 ...

  3. CentOS 下安装 SNMP 服务

    CentOS 中搭建 SNMP 服务 0.前言 首先这个服务我不知道有什么用,学习CCNA的也许有了解.所以这里仅仅只是教做题,下面还有一些搜到的配置文件希望会大家有所帮助. 简单网络管理协议(SNM ...

  4. java多线程那点事

    屌丝程序员们对自己的技术能力总是毫不掩饰的高调,更有甚者每当完成一个简单的功能或算法实现,恨不得从工位上跳起来,生怕谁不知道一样,心情能理解,但个人完全鄙视这种行为.说到底,大家日常的coding,大 ...

  5. js判断浏览器类型以及语言

    1.检查是否是移动端(Mobile).ipad.iphone.微信.QQ等 <script type="text/javascript"> //判断访问终端 var b ...

  6. 移动web之一像素问题

    一.为什么会有一像素问题 弄明白这个问题,首先要知道DPR了. DPR(device pixel ratio)pixel等于picture element.设备像素比,是默认缩放100%的情况下,即D ...

  7. django 后台格式化数据库查询出的日期

    在项目中,我遇到这样的情况,使用ajax获取查询出来的数据,而这些数据中某个字段是日期datetime格式,在模板中显示的样式很怪异.由于前端使用了js控件,也不能使用django的模板过滤器. 所以 ...

  8. 《Fixed Income Portfolio Analytics》阅读笔记——第零部分

    <Fixed Income Portfolio Analytics>第零部分的思维导图. <Fixed Income Portfolio Analytics>阅读笔记--第零部 ...

  9. 解决You are using pip version 10.0.1, however version 18.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.

    pip install ...出现问题 直接输入python - pip install --upgrade pip就可以了

  10. 搭建gogs

    https://blog.csdn.net/hwm_life/article/details/82969005 服务器环境 CentOS 7 64位 安装Gogs所需的其它环境 需要安装的依赖有Ngi ...