Servlet执行原理和API详解---【创建Servlet项目】

2023-11-16

目录

一、Servlet 是什么?

主要工作:

第一个Servlet项目:

编写代码

打包程序


一、Servlet 是什么?

Servlet 是一款基于HTTP协议,用来开发Java Web,运行在Tomcat里面的里的框架技术。
一种实现动态页面的技术 . 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app.

主要工作:

1.建立连接:客户端和程序的连接(当用户输入了请求URL后,程序能感应到用户的请求)。
2.获取用户请求参数:处理request对象。
3.将服务器处理结果返回给客户端:返回response对象。

第一个Servlet项目:

前置条件:配置国内源,创建一个Maven项目

注意此处名字和存储地址不要有中文

 

 

 点击finish,Maven项目创建成功,点击main,创建一个java文件

 右键java,创建java源代码根目录

 添加Servlet框架,在pom.xml中导入依赖,打开中央仓库mvnrepository.com

 

 点击第一个,然后选择与tomcat版本相关的版本,本人下载的是8.5版本

 

 点击进去自动复制

 导入依赖

 

 

 点击刷新,成功导入

1)  main 目录下, java 目录并列, 创建一个 webapp 目录 (注意, 不是 webapps)

2) 创建 web.xml
然后在 webapp 目录内部创建一个 WEB-INF 目录, 并创建一个 web.xml 文件
webapp 目录就是未来部署到 Tomcat 中的一个重要的目录 . 当前我们可以往 webapp 中放一些静态资源, 比如 html , css .
在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源.

编写代码

java 目录中创建一个类 HelloServlet, 代码如下 :
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
        System.out.println("hello");
        resp.getWriter().write("hello");
   }
}
  • 创建一个类 HelloServlet , 继承自 HttpServlet
  • 在这个类上方加上 @WebServlet("/hello") 注解, 表示 Tomcat 收到的请求中, 路径为 /hello 的请求才会调用 HelloServlet 这个类的代码. (这个路径未包含 Context Path)
  • 重写 doGet 方法. doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在 Tomcat 收到 GET 请求时触发
  • HttpServletRequest 表示 HTTP 请求. Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转 成了一个 HttpServletRequest 对象. 后续想获取请求中的信息(方法, url, header, body ) 都是 通过这个对象来获取.
  • HttpServletResponse 表示 HTTP 响应. 代码中把响应对象构造好(构造响应的状态码, header,body )
  • resp.getWriter() 会获取到一个流对象, 通过这个流对象就可以写入一些数据, 写入的数据会被
  • 构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览.

打包程序

使用 maven 进行打包 . 打开 maven 窗口 ( 一般在 IDEA 右侧就可以看到 Maven 窗口 , 如果看不到的话 ,
可以通过 菜单 -> View -> Tool Window -> Maven 打开 )
然后展开 Lifecycle , 双击 package 即可进行打包 .

 

如果比较顺利的话, 能够看到 SUCCESS 这样的字样 .

 

打包成功后 , 可以看到在 target 目录下 , 生成了一个  war .
war 包和 jar 包的区别
jar 包是普通的 java 程序打包的结果 . 里面会包含一些 .class 文件 .
war 包是 java web 的程序 , 里面除了会包含 .class 文件之外 , 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的 jar . 打成 war 包格式才能被 Tomcat 识别 .

 

 将这个war包放在tomcat的webapps根目录下

 打开Tomcat的startup.bat,出现startup启动成功

 在浏览器中输入网址

 

页面显示hello,Servlet项目创建成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servlet执行原理和API详解---【创建Servlet项目】 的相关文章

随机推荐

  • 基于51单片机用DS1302和LCD1602设计可调式电子日历与时钟(Proteus仿真)

    嵌入式工程师成长日记 https mp weixin qq com s biz Mzg4Mzc3NDUxOQ mid 2247484111 idx 1 sn ce820ea78cf5ff4f00ebb282abc72143 chksm cf
  • Minio整合到springboot

    Minio整合到springboot 1 Minio 1 1 Minio介绍 MinIO 是一个基于Apache License v2 0开源协议的对象存储服务 它兼容亚马逊S3云存储服务接口 非 常适合于存储大容量非结构化的数据 例如图片
  • linux重启mysql

    linux重启mysql的方法 1 直接使用 service mysqld restart 或 service mysql restart 命令重启 2 使用 etc init d mysqld restart 命令重启 1 查看mysql
  • 超神战记不显示服务器,超神战记进不去 闪退及登陆不上解决方法

    超神战记手游进不去 超神战记无法连接服务器 超神战记手游登陆失败 超神战记手游进去就死机 更新失败 或更新之后进不去了 超神战记手游闪退是怎么回事 黑屏怎么回事 闪退怎么办 连接不上 超神战记手游与服务器连接失败 服务器连接异常 登陆不上
  • Machine Learning Yearning(开篇、1、2)

    Machine Learning Yearning 开篇 1 2 Machine Learning Yearning开篇12 开篇 目的 下载 章节名称 Chapter 1Why Machine Learning Strategy Chap
  • CV牛人牛事简介

    CV人物1 Jianbo Shi史建波毕业于UC Berkeley 导师是Jitendra Malik 其最有影响力的研究成果 图像分割 其于2000年在PAMI上多人合作发表 Noramlized cuts and image segme
  • C++学习博客

    网页 https blog csdn net kuweicai article details 82779648 https www cnblogs com inception6 lxc p 8686156 html https www c
  • 浮点数

    为什么要有浮点数 从十进制科学计数法理解浮点数 计算机中二进制的浮点数 二进制中阶码的底也可以不为2 例如 二进制中阶码的底可以为4 为8等等 当阶码的底为2 假设阶码为 1 则小数点需要后移一位 即算数左移一位 当阶码的底为4时 假设阶码
  • CentOS7 上配置Openstack[单机配置]

    本文目录 写在前面 配置前须知 step1 主机设置 step2 配置网口和DHCP确定IP step3 配置网络访问Internet step4 停止网络管理器关闭防火墙 step5 关闭SELinux step6 更新yum step7
  • 深度学习基础知识(发展历史)

    1 深度学习的历史及发展趋势 1 1 深度学习的历史 一般来说 目前为止已经有三次深度学习的发展浪潮 在20 世纪 40 年代到 60 年代深度学习被称为控制论 cybernetics 20 世纪 80 年代到 90 年代深度学习被誉为连接
  • mysql between and 和 大于小于的区别

    1 表达式 between 下界值 and 上界值 限定 表达式 的值介于 下界值 到 上界值 之间的所有值 并且包含 下界值 和 上界值 2 表达式 gt 下界值 and 表达式 lt 上界值 限定 表达式 的值介于 下界值 到 上界值
  • Linux内核调试技术——进程D状态死锁检测

    Linux的进程存在多种状态 如TASK RUNNING的运行态 EXIT DEAD的停止态和TASK INTERRUPTIBLE的接收信号的等待状态等等 可在include linux sched h中查看 其中有一种状态等待为TASK
  • element-ui el-dialog如何设置响应式宽高且永远水平垂直居中

    写在前面 el dialog是使平常使用element ui比较常用的一个组件 想要灵活控制它达到想要的开发效果 就必须要熟悉它默认一些属性 默认width 50 高度为标题和el dialog body el dialog footer内
  • 区块链-一些基本概念

    Hash collision resistance collision free 是说在密码学中 对于一个hash函数 很难找到两个不同的输入使得其hash之后的输出是一样的 Collision resistance is a proper
  • 两性养生网站源码 生活类减肥网站源码 健康网模板源码 支持QQ登录和百度主动推送

    本套模板非常适合生活类 两性类 减肥类等等类型的网站 这类型网站比较好做流量 因为客户群体众多 可以自行改内容为其他类型网站模板总体非常简洁漂亮 配色合理 视觉舒服 并且配合强大的帝国cms7 5核心 未来做大站真心很适合 也可以用来做站群
  • Redis Day02 - springBoot更改Redis默认序列化方式

    默认jdkSerializeable序列化后cli显示 xac xed x00 x05t x00 bcustomer 此刻在cli中get customer 为nil 为避免这种情况的出现 可自行修改序列化方式 只需在启动类自定义序列化类r
  • .yml文件_【玩转SpringBoot】配置文件yml的正确打开姿势

    作者 编程新说李新杰 出自 微信公众号 编程新说 原文 玩转SpringBoot 配置文件yml的正确打开姿势 序言 在很久以前 Spring的配置文件是基于XML的 它的名字就是applicationContext xml 没错 就只有这
  • 渗透测试常用浏览器插件汇总

    1 shodan 这个插件可以自动探测当前网站所属的国家 城市 解析IP地址以及开放的服务和端口 包括但不限于FTP DNS SSH或者其他服务等 属被动信息搜集中的一种 2 hackbar 收费之后用Max Hackerbar代替 这个插
  • 从零开始探索C语言(八)----指针

    文章目录 1 什么是指针 2 如何使用指针 3 NULL 指针 4 指针的算术运算 5 指针数组 6 指向指针的指针 7 传递指针给函数 8 从函数返回指针 有人说 指针是C语言的灵魂 所以学习C语言 学习指针是很有必要的 通过指针 可以简
  • Servlet执行原理和API详解---【创建Servlet项目】

    目录 一 Servlet 是什么 主要工作 第一个Servlet项目 编写代码 打包程序 一 Servlet 是什么 Servlet 是一款基于HTTP协议 用来开发Java Web 运行在Tomcat里面的里的框架技术 一种实现动态页面的