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

news2024/10/5 8:41:39

目录

一、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项目创建成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/661000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python创建文件

Python创建文件 Python是一种高级编程语言,广泛应用于各种领域,尤其在数据分析、机器学习和人工智能方面被广泛使用。在Python中,创建文件是一项基本任务,本文将介绍如何使用Python创建文件。 创建一个空文件 在Python中&#…

3.CSS 的背景

通过CSS背景属性,可以给页面元素添加背景样式。 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 3.1背景颜色 background-color属性定义了元素的背景颜色 background-color:颜色值;一般情况下元素背景颜色默认值是transparent(透…

【实战】 React 与 Hook 应用:实现项目列表 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表1.新建文件2.状态提升3.新建utils4.Custom Hook 学习内容来源:React React Hook TS 最佳实践-慕课网 相对原教程,我在学习开始时(2023.0…

记录好项目D8

记录好项目 你好呀,这里是我专门记录一下从某些地方收集起来的项目,对项目修改,进行添砖加瓦,变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是超市管理系统 技术栈:springbootjavamysqlthyemleafshiro …

数据安全--24--数据安全管理之API管理

本博客地址:https://security.blog.csdn.net/article/details/131274853 一、API管理概述 API是指应用程序编程接口,它的存在主要是为了提高系统各组成单元的内聚性,降低组成单元之间的耦合程度(相互依赖程度)&#…

[元带你学: eMMC协议详解 18] eMMC的后台操作(Background Operations)

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 1800 字, 主要内容 1、后台操作/前台操作区别? 2、如何进行手动后台操作? 3、自动后台启动和停止方法&a…

【Redis基础】

Redis基础 Redis基础Note Redis基础1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启1.3.7.wi…

web安全自学笔记

Web 安全方面的基本知识是有很必要的,未必就要深入理解。本文主要介绍常见的网络攻击类型,不作深入探讨。 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描、弱口令暴力破解,到 SQL 注入,再到复杂的网络劫持等…

基于Web的影院信息管理系统设计与实现(论文+源码)_kaic

摘要 随着文化产业的发展,电影行业迎来了发展的黄金期,而且人民生活水平的 不断提高,观众对影院的服务要求也越来越高。传统的服务模式,已经不能满足 观众的需求,随着信息技术的发展,越来越多的影院将信息技…

Qt 中动态加载窗口

在编程中,我经常会遇见要根据用户触发按钮,动态生成窗口的情况。在此有两种方法可以动态生成窗口:一:直接在槽函数中调用窗口类。二:将 **.ui 添加到资源文件,通过 QUiLoader 加载。 现将两种方法介绍如下…

LAMPDISCUZ论坛

目录 1.1 LAMP 1.2 LAMP架构搭建 2. 关闭防火墙,将安装Apache所需软件包传到/opt目录下 APache的源码编译安装涉及到的软件包: 2.2 安装环境依赖包 2.3 配置软件模块 2.4 添加httpd系统服务 2.5 修改httpd 服务配置文件 3.编译安装mysqld 服务 3.1 …

1. CSS的三大特性

CSS有三个非常重要的三个特性:层叠性、继承性、优先级 1.1层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突 的问题 层叠性原则: ●样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个…

记一次Windows 下Microsoft Store应用权限问题

关键字:windows、 microsoft store 画图 mspaint 终端 terminal Windows11 锁屏界面黑屏 起因 情不知所起,额走错片场了。。。 具体原因无法确定,猜测是由于之前磁盘故障后进行修复导致的权限丢失异常 表象 几乎是所有的Microsoft store的…

Java-反射机制(超详解)

Java反射机制概述 前言一、Java反射机制概述1. Java Reflection2. 动态语言 vs 静态语言二、 Class类的理解1. 类的加载过程1.1 初步了解1.2 类的加载过程图解1.3 了解:什么时候会发生类初始化?1.4 类加载器的作用1.5 JVM中不同类型的类的加载器1.6 代码…

SpringMVC系列-1 使用方式和启动流程

背景 SpringMVC作为SSM组件之一,Java开发有必要了解SpringMVC是如何被集成到Spring框架以及整个项目的启动流程。本文以Tomcat作为Servlet容器进行介绍,默认认为读者使用过Tomcat且对Tomcat内部组件有足够的理解。 1.启动流程 当Tomcat被部署到服务器…

node的安装配置

这个是官网下载地址 推荐选择下载LTS版本的下载,不推荐下载最新版的,下载完成之后,在安装过程中更改安装路径默认是c盘的,如果c盘空间大当我没说,接着一路傻瓜式安装默认点击下一步,直到安装完成。 创建文…

chatgpt赋能python:Python怎样设置字体大小

Python 怎样设置字体大小 作为一名Python工程师,我们经常需要在论文或文档中使用Python进行数据分析,数据可视化和数据科学等方面的工作。在这些文档中,字体大小的设置是非常重要的,因为它直接影响阅读体验和文档的可读性。因此&…

幸运九宫格抽奖码九宫格抽奖系统独立版源码php修复版

🎉 有需要的朋友记得关赞评,文章底部来交流!!! 🎉 ✨ 源码介绍 1.本程序在PHP5.3 ~ PHP5.6环境 2.后台访问地址:域名/admin/index.php U:admin P:admin 手动安装 1.导入1776.sql到数据库 …

【文件操作与IO】认识文件

目录 认识文件 狭义上的文件 广义上的文件 树形结构组织和目录 文件路径(Path) 其他知识 认识文件 狭义上的文件 硬盘上保存的数据,都是“文件”来组织的,本质上都是二进制或是字符组织的数组,被打包成一个文件…

Git学习笔记(上篇)

导航小助手 一、Git初识 1.1 场景 1.2 版本控制器 1.3 注意事项 二、Git安装 2.1 Linux-centos 2.2 Linux-ubuntu 三、Git基本操作 3.1 创建Git本地仓库 3.2 配置Git本地仓库 3.3 认识工作区、暂存区、版本库 3.3.1 添加文件—场景一 3.3.2 添加文件—场景二 3.4…