Servlet是整个JavaWeb开发的核心,同时也是一套规范,即公共接口。用于处理客户端发来的请求并作出响应。通常情况下我们会发送不同的请求并交由不同的处理程序来处理,例如处理用户信息和处理订单信息的程序是不同的。而这些处理程序则必须实现这套规范才能接收请求并作出响应。这套规范本身并不由Java提供,需要引入额外的Jar包,这些包存在于Tomcat中,编写的Servlet程序也需要承载在Tomcat上才可以运行。

一个Servlet程序

  • 通过IDEA创建一个Web Application

  • 填写项目名称和项目的存储位置

  • 创建后的结构如图所示

  • 这便是一个标准的Java Web开发结构,下面我们来编写代码实现一个Servlet程序,我们在src下创建一个 QuickStartServlet.java,并编写如下的代码

  • 配置 WEB-INF 下的 web.xml 文件,如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"> <display-name>my first servlet application</display-name> <servlet>
<servlet-name>QuickStart</servlet-name>
<servlet-class>QuickStartServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>QuickStart</servlet-name>
<url-pattern>/quick-start</url-pattern>
</servlet-mapping> </web-app>

配置 Servlet 程序的运行环境

  • 配置 Modules, 打开 Setting / Project Structure / Modules



    点击 Apply 之后,会发现我们的程序不在找不到Jar 包 " javax.servlet "
  • 配置 Artifacts,并配置项目的输出目录为Tomcat的webapps下

  • 配置运行配置相关信息 - Server 选项卡

  • 配置运行配置相关信息 - Deployment 选项卡

  • 配置运行配置相关信息 - Startup/Connection选项卡

  • 配置成功后如下图所示

  • 点击运行按钮,并且访问 http://localhost:8080/FirstServlet/quick-start 在控制台即可看到该输出

  • 我们在 C:\WorkSpace\apache-tomcat-9.0.26\webapps\FirstServlet 下即可查看到发布到Tomcat上的内容

Http请求是如何找到对应的Servlet处理程序的

首次请求 http://localhost:8080/FirstServlet/quick-start 的过程大致如下:

  • 请求到达我们的服务器(暂且忽略如何根据域名找到服务器的过程)发现8080端口正在被Tomcat监听
  • 请求交由Tomcat处理,Tomcat解析 /FirstServlet/quick-start 片段
  • Tomcat 发现 /FirstServlet 访问的是 webapps下的 FirstServlet 工程
  • 在 FirstServlet 中,继续解析剩余片段 /quick-start,Tomcat找到Web.xml,根据我们配置的路由规则,匹配到了 QuickStartServlet 处理程序
  • 创建 QuickStartServlet 实例,并调用 public void init(ServletConfig servletConfig) throws ServletException 方法(在后续请求中不会再调用,可以通过在Web.xml中配置改变调用时机。默认情况下是在创建实例的时候被调用,在后续章节中会有说明)
  • 创建 servletRequest 对象和 servletResponse 对象并调用 public void service(ServletRequest servletRequest, ServletResponse servletResponse) 方法,并在控制打印内容 hello world!

总结

本小节通过一个简单的示例来快速体验了Servlet程序的搭建流程,这只是写本篇的目的之一。还有一个目的就是明确Servlet是什么,由于Java Web的开发框架和技术繁多,在刚开始接触的时候难免会有些头晕,搞不清楚概念或名词之间的关联性,对于Java Web该从何学起更是一头雾水,本篇借由这个简单的示例也让你对Servlet有个初步的印象,为以后学习Java Web 打下基础。当然本篇只是个入门,能够获取的知识有限,后续还会有更多的进阶内容,敬请期待。

Servlet快速入门:第一个Servlet程序的更多相关文章

  1. Servlet快速入门及运行流程

    一.Servlet快速入门 1.创建一个web工程 2.在JavaResource中src下创建一个包名称为com.myxq.servlet 3.在创建的servlet包当中创建一个class文件起名 ...

  2. Servlet快速入门

    servlet是运行在服务端的java小程序,用来处理客户端请求,响应给浏览器的动态资源 servlet规范:包含3个技术点 1.servlet技术 2.filter技术 3.listener技术 s ...

  3. 【servlet】Servlet快速入门&使用Eclipse发布web项目

    创建时间:6.15 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是ja ...

  4. HTTP和Servlet快速入门

    目录 1.HTTP 1.1 请求数据格式 1.2 相应数据格式 2.Servlet 3.Servlert的xml配置 1.HTTP 1.1 请求数据格式 请求行:请求数据的第一行 包含三个内容,按顺序 ...

  5. Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中

    以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...

  6. 基于PHP的cURL快速入门教程 (小偷采集程序)

    cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.很多小偷程序都是使用这个函数.     最爽的是,PHP也支持 cURL 库.本文将介绍 c ...

  7. Java语言入门-第一个HelloWorld程序

    1.官网下载Jdk 这里给出官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads . 1.1 打开之后出现如下界面: 1.2选 ...

  8. Mybatis入门及第一个Mybatis程序

    Mybatis笔记整理 所需要的基础知识 JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 ...

  9. Android发送请求到不同的Servlet,但都是一个Servlet处理

    错误原因,在Servlet文件中 @WebServlet("/ServletForGETMethod") 与实际的ServletForQUERYMethod 文件名不符. @Web ...

随机推荐

  1. 构造方法(和python初始化变量类似)

    public class Demo1 { int  name2=1; public Demo1(int name) { name=name2; } public Demo1() { } public ...

  2. SAP RFC和BAPI

    RFC和BAPI都是SAP提供的接口技术.RFC全称Remote Function Call,就是允许远程调用的函数模块. BAPI则是基于RFC的新技术,全称Business Application ...

  3. spring AOP的基本概念

    AOP的概念和使用原因 现实中有一些内容并不是面向对象(OOP)可以解决的,比如数据库事务,它对于企业级的Java EE应用而言是十分重要的,又如在电商网站购物需要经过交易系统.财务系统,对于交易系统 ...

  4. 原生Js页面滚动延迟加载图片

    原理和过程1.页面滚动加载事件2.获取元素在页面里的top值 根据滚动条的位置 判断何时显示图片3.获取元素集合 加载过的图片从集合里删除 效果预览:http://jsfiddle.net/dtdxr ...

  5. 使用Matlab绘制三维图的几种方法

    以下六个函数都可以实现绘制三维图像: surf(xx,yy,zz); surfc(xx,yy,zz); mesh(xx,yy,zz); meshc(xx,yy,zz); meshz(xx,yy,zz) ...

  6. npm安装10

    https://www.cnblogs.com/zouke1220/p/9723191.html

  7. solr搜索结果转实体类对象的两种方法

    问题:就是把从solr搜索出来的结果转成我们想要的实体类对象,很常用的情景. 1.使用@Field注解 @Field这个注解放到实体类的属性[字段]中,例如下面 public class User{ ...

  8. Mac上Docker的安装

    安装 安装包安装 由于历史原因, 本人使用的是安装安装的方式, 这也是很多Windows用户的习惯. 下载地址: https://download.docker.com/mac/stable/Dock ...

  9. [转帖]UCloud上市:利润暴跌84%、成本居高不下,结构化调整迫在眉睫

    UCloud上市:利润暴跌84%.成本居高不下,结构化调整迫在眉睫 https://www.iyiou.com/p/116317.html     [ 亿欧导读 ] 日前,上交所科创板上市委召开第27 ...

  10. CF731E Funny Game

    题目描述 一个长度为 N 的序列 ai ,双方轮流操作 每次的操作是选择一个长度大于 1 的前缀,计算它的和 s ,然后 用 s 替换它的前缀,同时当前玩家获得 s 的分数. 当只剩下一个元素,游戏结 ...