修炼Servlet

一、Servlet简单认识

1、Servlet是什么

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,我们可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2、Servelet构架

借鉴与W3C,显示servlet在web应用程序中的位置

3、Servlet主要任务

  • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
  • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  • 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
  • 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
  • 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

4、Servlet涉及的包

Servlet 可以使用 javax.servletjavax.servlet.http 包创建

二、Servlet生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。

以下是 Servlet 遵循的过程:

(1)、Servlet通过调用init ()方法进行初始化。
(2)、Servlet调用service()方法来处理客户端的请求。
(3)、Servlet通过调用destroy()方法终止(结束)。
(4)、最后Servlet由JVM的垃圾回收器进行垃圾回收的。

1、init()方法

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。知道这一点即可。

看一下定义:

public void init() throws ServletException {
//初始化代码
}

2、service()方法

service 是执行实际任务的主要方法 ,用来处理来自客户端的请求,并把格式化的响应写回给客户端。会在适当的时候调用 doGet、doPost、doPut,doDelete 等方法 。

看一下定义:

public void service(ServletRequest request, ServletResponse response) throws ServletException,IOException{
}

上面说到会去调用一些方法,所以,我们不用对 service() 方法做任何动作,只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

①doGet()方法:

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// Servlet 代码
}

doGet 请求来自于一个 URL 的正常请求,或者未指定 METHOD 的 HTML 表单 .

②doPost()方法:

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// Servlet 代码
}

doPost请求来自于一个特别指定了METHOD 为 Post的 HTML 表单

3、destroy()方法

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用 。 一般会使Servlet关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

看一下定义:

public void destroy() {
// 终止化代码...
}

三、Servlet简单实例

来个最原始的 Servlet 输出 Hello World

写在前面,我用的IDEA创建了一个web项目,在写Servlet时可能没有javax.servlet和javax.servlet.http包,该怎么办呢?很好解决,File->Project Structure->Library->上面会有一个java,点击后出现New Project Library,我们选择java,然后去我们的tomcat目录下找到lib\servlet-api.jar导入即可。

开始代码模式了!

package wzm;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class HelloWorld extends HttpServlet {
private String message; @Override
public void init() throws ServletException {
message="Hello World";
} @Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
//设置响应内容
response.setContentType("text.html");
//实际逻辑
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
} @Override
public void destroy() {
//nothing
}
}

这里只是熟悉一遍Servlet周期

四、IDEA部署Servlet

1、方法一:web.xml

在WEB-INF目录下web.xml文件的 web-app标签中添加如下内容:

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>wzm.HelloWorld</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

2、方法二:注解法

在HelloWorld文件的类前面加上:@WebServlet("/HelloWorld")


Servelet应该仍是web的核心,在这里大体知道它是如何工作的,并知道service的一些方法使用就好。

修炼Servlet的更多相关文章

  1. Servlet JSP 二重修炼:Filter过滤器

    摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 真正的朋友就是,当你蒙蔽了所有人的眼睛,也能看穿你真实的样子和心底的痛楚 ...

  2. J2EE修炼之四书五经[转自2004年程序员]

    J2EE修炼之四书五经 作者:彭晨阳 J2EE其实没有四书五经,因为J2EE一直如汹涌澎湃的大江,推陈出新,不断高速发展,这是一种带领我们走向未来的技术.当然,如何在这种气势如虹的潮流之中不至于迷失方 ...

  3. JSP、servlet、SQL三者之间的数据传递

    JSP.servlet.SQL三者之间的数据传递 博客分类: web开发 JSPservletSQL数据库连接池web开发  前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记, ...

  4. servlet文件下载

    创建web工程servlet,新建DownloadServlet.java package com.xmyself.servlet; import java.io.File; import java. ...

  5. java中servlet的各种路径

    1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...

  6. Servlet监听器笔记总结

    监听器Listener的概念 监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应. Servlet中的也有实现监听器的机制,就是Listene ...

  7. JavaWeb——Servlet

    一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...

  8. servlet 简介,待完善

    什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...

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

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

随机推荐

  1. Javascript 判断 iframe 中的变量是否为对象

    Javascript 判断 iframe 中的变量是否为对象 前言 公司之前的项目中,为了实现模块化,在 web 后端使用了 iframe 来组织框架和页面.由于当时没有很好地规划,iframe 子页 ...

  2. docker run配置参数

    Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d, --detach=false 指定容器运行于前台还是后台,默认为false -i, - ...

  3. Java多线程-1(3)

    本份随记主要为狂神老师的Java多线程教学的学习笔记,记载了视频中一些有关基础概念以及部分代码示例.随机分为1-3共三份,知识点记录的不是很深入,以后的学习过程中随时补充. 1 有关基础概念 1.1 ...

  4. html 随笔-水平控件不对齐的解决办法

    分别在左右两个控件的css代码中加上 vertical-align:top. 便可对齐:(推荐使用,因为这样可以避免脱标流). 来源: https://www.jianshu.com/p/f00d51 ...

  5. Shell系列(30)- 单分支if语句判断分区使用率

    需求 监控分区已用空间,超过80%,抛出警告 脚本 #!/bin/bash #给tets赋值用于接收参数,传递给if进行判断 #申明变量test并赋值,由于赋的值是系统变量的结果,所以得用$()引用 ...

  6. Shell系列(26)- 条件判断之两个文件比较

    两个文件之间进行比较 测试选项 作用 文件1 -net 文件2 判断文件1的修改时间是否比文件2的新(如果新则为真) 文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧(如果旧则为真) 文件 ...

  7. sonar-scanner的使用

    在服务器搭建sonarqube后,本地的windows个人电脑如何使用sonar-scanner? 在服务器搭建sonarqube后,每个人都可以在本地使用sonar-scanner扫描代码. son ...

  8. 安装VM-TOOLS,解压tar包时提示目录磁盘空间不足

    在虚拟机里安装了ubuntu-18.04.4-desktop-amd64,安装VM-TOOLS,解压tar包时提示目录磁盘空间不足. 解决方法一: 打开terminal,输入:sudo apt ins ...

  9. django把变量变成字段进行搜索

    from ceshi.models import Student     #引入model中的模型 获取前端请求的参数 searchKey=request.GET.get("key" ...

  10. 『GoLang』协程与通道

    作为一门 21 世纪的语言,Go 原生支持应用之间的通信(网络,客户端和服务端,分布式计算)和程序的并发.程序可以在不同的处理器和计算机上同时执行不同的代码段.Go 语言为构建并发程序的基本代码块是 ...