修炼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. 动态路由——OSPF

    目录: 一. OSPF路由协议概述     1,OSPF协议    2,内部网关协议和外部网关协议   3,OSPF的工作过程 二.OSPF基本概念   1,OSPF区域   2,区域ID   3,R ...

  2. 大数据最后一公里——2021年五大开源数据可视化BI方案对比

    个人非常喜欢这种说法,最后一公里不是说目标全部达成,而是把整个路程从头到尾走了一遍. 大数据在经过前几年的野蛮生长以后,开始与数据中台的概念一同向着更实际的方向落地.有人问,数据可视化是不是等同于数据 ...

  3. sync 修饰符在Vue中如何使用

    在有些情况下,我们可能需要对一个 prop 进行"双向绑定".不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源.   这 ...

  4. zip命令常用选项

    大家都知道,在linux上一切皆文件,在实际生产环境中,如果我们需要部署一些系统的服务,我们会将一些软件包提前下载下来统一放到一个文件夹中, 然后将部署的过程用shell或者python写成一个脚本, ...

  5. GIS应用|快速搭建REST地图服务

    SuperMap Online云存储作为您的"在线GIS云盘",除了可以在云端存储GIS数据,还可以将数据直接发布多种REST服务,为您节省购买和部署SuperMap iServe ...

  6. Springboot --- Bug集

    一. 启动springboot报错:找不到或无法加载主类 解决:直接选中项目,在ecplise选中"project",点击clean 清理项目再运行 问题解决. 二.报错:Fail ...

  7. windows下如何查看所有端口及占用

    1.在windows下查看所有端口: 先点击电脑左下角的开始,然后选择运行选项,接着我们在弹出的窗口中,输入[cmd]命令,进行命令提示符. 然后我们在窗口中输入[netstat -ano]按下回车, ...

  8. 你需要知道的MySQL&InnoDB锁都在这里

    目录 一.前言 二.锁的类型 2.1 全局锁 2.2 表级锁 2.2.1 表锁 2.2.2 元数据锁(Meta Data Locks) 2.2.3 自增列锁(AUTO-INC Locks) 2.2.4 ...

  9. Serverless 对研发效能的变革和创新

    作者 | 杨皓然(不瞋) 对企业而言,Serverless 架构有着巨大的应用潜力.随着云产品的完善,产品的集成和被集成能力的加强,软件交付流程自动化能力的提高,我们相信在 Serverless 架构 ...

  10. js 判断两个对象是否相等

    最近碰到的一个面试题,不算高频,记录一下 判断两个对象是否相等,大致分为三步 首先判断两个比较对象是不是 Object 如果都是对象 再比较 对象的长度是否相等 如果两个对象的长度相等 再比较对象属性 ...