Servlet快速入门:第一个Servlet程序
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程序的更多相关文章
- Servlet快速入门及运行流程
一.Servlet快速入门 1.创建一个web工程 2.在JavaResource中src下创建一个包名称为com.myxq.servlet 3.在创建的servlet包当中创建一个class文件起名 ...
- Servlet快速入门
servlet是运行在服务端的java小程序,用来处理客户端请求,响应给浏览器的动态资源 servlet规范:包含3个技术点 1.servlet技术 2.filter技术 3.listener技术 s ...
- 【servlet】Servlet快速入门&使用Eclipse发布web项目
创建时间:6.15 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是ja ...
- HTTP和Servlet快速入门
目录 1.HTTP 1.1 请求数据格式 1.2 相应数据格式 2.Servlet 3.Servlert的xml配置 1.HTTP 1.1 请求数据格式 请求行:请求数据的第一行 包含三个内容,按顺序 ...
- Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中
以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...
- 基于PHP的cURL快速入门教程 (小偷采集程序)
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.很多小偷程序都是使用这个函数. 最爽的是,PHP也支持 cURL 库.本文将介绍 c ...
- Java语言入门-第一个HelloWorld程序
1.官网下载Jdk 这里给出官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads . 1.1 打开之后出现如下界面: 1.2选 ...
- Mybatis入门及第一个Mybatis程序
Mybatis笔记整理 所需要的基础知识 JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 ...
- Android发送请求到不同的Servlet,但都是一个Servlet处理
错误原因,在Servlet文件中 @WebServlet("/ServletForGETMethod") 与实际的ServletForQUERYMethod 文件名不符. @Web ...
随机推荐
- Qt编写气体安全管理系统25-位置调整
一.前言 位置调整功能,以前是直接写在设备按钮这个自定义控件类中,核心就是安装事件过滤器,识别鼠标按下.鼠标移动.鼠标松开,这三个event,做出相应的处理即可,后面发现这个功能其实很多自定义控件或者 ...
- 转 ORA-16191 "Primary log shipping client not logged on standby
###sample 0 原因未知: 解决办法,重建密码文件 primary db :alter system set log_archive_dest_state_2=defer sid='*' sc ...
- Python - Django - 添加首页尾页上一页下一页
添加首页和尾页: views.py: from django.shortcuts import render from app01 import models def book_list(reques ...
- 一份 Tomcat 和 JVM 的性能调优经验总结!拿走不谢
Tomcat性能调优 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建 ...
- 玩转CONSUL(1)–WATCH机制探究
1. 前言 consul 经常被用于服务的注册和发现,本文将带你对watch做更深入的探究 2. consul对外暴露了4种通讯接口 2.1 RPC 主要用于内部通讯Gossip/日志分发/选主等 2 ...
- Django 之上下文处理器和中间件
一.上下文处理器 上下文处理器是可以返回一些数据,在全局模板中都可以使用.比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象. 在s ...
- Android StickyListHeadersListView头部悬停 分组列表实现
最近在做分组列表,头部悬停的效果,在github上就搜到了StickyListHeaders(https://github.com/emilsjolander/StickyListHeaders)这个 ...
- [Visual Studio] - 使用 Fiddler 时,禁止监控 VSHub 请求的方法
背景 VS + Fiddler 调试 WebAPI,监控请求包含大量 VSHub Request.http://localhost:49161/vshub/bb195f2e0d5c4765b9411f ...
- ant 节点和属性
任务和javac命令是相似,它编译两种类型的java文件1)没有被编译的java文件2)曾经编译过,但是class文件版本和当前对应的java文件版本不匹配的java文件. 1)javac命令支持的参 ...
- a+b的问题
题目描述: 给定两个整数 a, b (a, b 均不超过 int 类型的表示范围),求出 a + b 的和. 输入描述: 每行输入两个整数 a 和 b,用空格隔开. 输出描述: a + b 的值. 样 ...