【Servlet学习一】认识Servlet 创建第一个Servlet项目

news2024/11/14 16:57:25

目录

🌟需要知道:

🌈1、Tomcat是什么?

🌈 2、Maven

🌟一、认识Servlet

🌈1、Servlet是什么?

🌈2、实现第一个Servlet项目。

🌈3、简单了解Postman工具的使用 


🌟需要知道:

🌈1、Tomcat是什么?

Tomcat 是一个 HTTP 服务器。

🌈 2、Maven

        maven是帮助开发者构建统一项目(maven项目)的工具,使用它可以是实现jar包的管理,编译和打包项目等操作,解决版本不同的问题。

关键:配置国内的镜像源。

        maven是国外开发的,叫做“中央仓库”,每次使用的时候都要去下载很麻烦,reload才是真正去下载,成本高,并且面向所有开发者。做两件事:

(1)做一个本地仓库:当第一次去访问的时候,本地还没有,此时去中央仓库访问,获取jar包并放在本地仓库里面,因此以后访问的时候就去本地访问就行。因此下次访问的时候先去本地找看有没有,有的话直接获取,没有的话就去中央仓库下载放在本地仓库。

(2)将中央仓库配置到国内。镜像网站,将maven的中央仓库从国外拉取到国内,复制一份过来。

1、创建一个maven项目:以我自己的IDEA为例(社区版本2022)

(1)新建项目

(2)创建maven模板

(3)创建的maven模板如下:后续的Servlet项目是在这个基础上进行完善即可。


🌟一、认识Servlet

🌈1、Servlet是什么?

Servlet是基于HTTP协议的JavaWeb框架,运行在Tomcat中

Servlet的主要工作:

(1)建立连接:客户端和程序的连接(当用户输入请求URL之后,程序能够感知到用户的请求);

(2)获取用户请求参数:处理Request对象;

(3)将服务器处理结果返回给客户端:返回Respond对象


问题:为什么要使用servlet?

因为现在的代码都是前后端分离的。

🌈2、实现第一个Servlet项目。

前置条件:配置maven国内源。

1、创建Servlet项目的步骤:

(1)创建一个maven项目;

(2)完善maven项目:添加java源代码根文件夹;

 重点:

(1) main下的java是蓝色的
(2) resources是带三条线的图标
(3)webapp和java 平级
(4)webapp下有一个WEB-INF目录
(5)WEB-INF下有一个web.xml
(6)test下的java是绿色的
以上几点就是一个标准的maven+web项目

(3)添加servlet框架,将项目升级为servlet项目。(在pom.xml文件中添加依赖)

注意:使用provided:在编译和测试时有效,在运行时无效。因为在Tomcat中内置了servlet,运行时会使用tomcat内置的servlet。


2、实现Servlet代码

(1)新建一个普通类;

(2)继承HttpServlet;

(3)注册请求路由(URL):通过注解实现。

(4)重写doGet与doPost方法。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//2、注册请求的路由:通过注解实现。就能感知到/hello了。
@WebServlet("/hello")
//1、继承HttpServlet
public class Demo1_HelloServlet extends HttpServlet {
    //3、重写doGet或者doPost方法
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前端给的name参数
        String name = req.getParameter("name");
        //将结果返回给前端
        resp.getWriter().println("name="+name);
    }
}

打包代码放在Tomcat中运行,是个war包。——>放在Tomcat的webapps中,只能放在这个文件夹中。——>启动Tomcat中的start.bat——>在浏览器输入执行代码:

http://localhost:8081/Demo2_Servlet/hello?name=zhangsan

成功!一个简单的Servlet代码就实现了。

  如果要设置中文的编码格式,要加以下代码

 

🌈3、简单了解Postman工具的使用 

PostMan的简单使用

(1)安装好之后,打开页面如下:主要包含三部分:请求地址、请求参数、和响应信息。

 (2)Params:在第一部分:请求地址中输入URL地址,Params下方自动添加key值和value值。

 (3)Body

 (4)Get与Post方法

由于在代码中重写了Get方法,因此可以发现Get方法可以成功显示,但是Post方法不行,显示405错误。

 原因是代码里面没有重写doPost方法,因此要支持doPost方法,在代码中重写doPost方法。

然后相同的流程:

(1)打包新程序;

(2)必须先停止tomcat服务:不能直接覆盖原有的war包文件,防止文件没有被覆盖成功。

(3)将新程序的war包放在tomcat/webapps下;

(4)启动tomcat下的start.bat文件;

(5)输入URL地址在浏览器。

 

 上述操作存在一个问题:我每次运行程序都要打包去Tomcat中关掉再打开,非常麻烦,有没有一种比较简单的方式呢?实现IDEA与Tomcat的合并。

社区版本IDEA:安装插件:smart Tomcat

专业版IDEA:忽略此步骤。

(1)在Settings设置中,找到Plugins插件,找到Smart Tomcat插件,点击安装。

0

 (2)找到Run下面的Edit Configurations编辑(不同的IDEA可能页面设置不同,在自己的编辑器里面找到就行)

 (3)来到如下页面:主要操作有以下三步 

 (4)代码写好之后,点击右上角的运行按钮,等待下方出现URL的地址,复制到浏览器即可。


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

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

相关文章

Python3 模块与输入与输出 | 菜鸟教程(十二)

目录 一、Python3 模块 (一)import 语句 1、想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: 2、当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。 3、搜索路径是…

PID控制算法 – 1、Sample Time(采样时间)

前面介绍的PID代码虽然能跑起来,但是还存在一些问题。 PID控制算法 – 0、PID原理_资深流水灯工程师的博客-CSDN博客 对应的代码也重新贴一下,方便比较 /*工作变量*/ unsigned long lastTime; double Input, Output, Setpoint; double errSum, lastEr…

【初识C语言(2)】字符串+转义字符+注释

文章目录 1. 字符串2. 转义字符转义字符表常见转义字符 3. 注释 1. 字符串 “hello world.\n” 上面这种由双引号引起的一串字符就被称为字符串; 字符串的存储 C 语言当中没有字符串类型,如果想要将字符串存储起来的话就需要用到字符串数组。 #include…

LLaMA及其子孙模型概述

文章目录 LLaMAAlpacaVicunaKoalaBaize (白泽)骆驼(Luotuo)BELLEGuanaco LLaMA 与原始transformer的区别: 预归一化[GPT3]。为了提高训练稳定性,对每个Transformer子层的输入进行归一化,而不是对输出进行归一化。使用了Zhang和Sennrich(201…

Redis进阶篇(附面试快速答法)

文章目录 Redis使用场景1、缓存穿透布隆过滤器小总结面试快速答法 2、缓存击穿小总结面试快速答法 3、缓存雪崩面试快速答法 4、双写一致性小总结面试快速答法 5、持久化机制面试快速答法 6、数据过期策略小总结面试快速答法 7、数据淘汰策略小总结面试快速答法 8、分布式锁小总…

Pytest集成Allure Report

目录 安装 用法 基本报告 支持 Pytest features Xfail 条件标记 Fixtures and Finalizers 参数化 Allure Features Steps 附件 描述 标题 链接 重试 Tags BDD 标签 严重性标记 Behave 安装 使用 Features 严重性 步骤和场景状态 步骤数据 安装 Pytest可从…

SpringBoot 如何使用 @RequestBody 进行数据校验

SpringBoot 如何使用 RequestBody 进行数据校验 在 Web 开发中,前台向后台发送数据是非常常见的场景。而在 SpringBoot 框架中,我们通常使用 RequestBody 注解来接收前台发送的 JSON 数据,并将其转化为 Java 对象。但是,接收到的…

你一定想知道的 如何进行动态内存管理?

文章目录 引言malloc函数calloc函数realloc函数free函数-避免内存泄漏常见的动态内存错误 引言 如果我们被问道&#xff1a;如何创建一个可以根据用户需求来开辟大小的数组&#xff1f; 可能有些博友会写出如下代码&#xff1a; #include <stdio.h> int main() {int n…

c++11 标准模板(STL)(std::basic_streambuf)(二)

定义于头文件 <streambuf> template< class CharT, class Traits std::char_traits<CharT> > class basic_streambuf; 类 basic_streambuf 控制字符序列的输入与输出。它包含下列内容并提供到它们的访问&#xff1a; 1) 受控制字符序列&#xff…

专项练习9

目录 一、选择题 1、在 JavaScript 中&#xff0c;用于阻止默认事件的默认操作的方法是 2、以下代码执行后&#xff0c;result 的值为&#xff08;&#xff09; 3、不能从字符串 const str qwbewrbbeqqbbbweebbbbqee;中能得到结果 ["b", "bb", "bbb…

实时在线云消费机、考勤门禁控制器、网络读卡器服务端C# Socket源码

消费机UDP通讯协议介绍&#xff1a; 设备向服务器发送的指令格式&#xff0c;每个字段用半角逗号(,)分隔。序号指令名称指令格式指令说明示例1响应服务器的搜索100,包序列号,终端IP,子网掩码,网关IP,远程电脑主机IP,端口号,终端硬件号响应电脑发出的搜寻局域网内所有终端设备指…

【Python 基础篇】Python 异常处理

文章目录 引言一、Python异常概述二、常见的内置异常三、异常处理语句四、异常捕获和处理五、实例演示六、总结 引言 在软件开发中&#xff0c;错误和异常是难以避免的。当我们编写Python代码时&#xff0c;有时候会遇到各种各样的问题&#xff0c;例如无效的输入、文件不存在…

hello算法笔记之树

一、二叉树 与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;每个节点包含一个「值」和两个「指针」。 在二叉树中&#xff0c;除叶节点外&#xff0c;其他所有节点都包含子节点和非空子树。 一些术语&#xff1a; 「根节点 Root Node」&#xff1a;位于二叉树顶…

VNC虚拟网络控制台(概述、windows系统连接linux系统演示)

第三阶段基础 时 间&#xff1a;2023年6月22日 参加人&#xff1a;全班人员 内 容&#xff1a; VNC虚拟网络控制台 目录 一、VNC概述 二、VNC基本上是由两部分组成 三、VNC特点 四、工作流程 五、安装 六、操作演示Windiws10系统远程控制linux 服务端&#xff1a;…

window版安装kafka并提供启动快捷脚本

kafka下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1DpcGXvpTYAcG_fvS-p9-3g?pwd1234 提取码&#xff1a;1234 官网&#xff1a;https://kafka.apache.org/downloads 注意不需要单独安装zk&#xff0c;里面包括zk Kafka解压包目录不要太深了&#xff0c…

养老院人员跌倒检测识别算法

养老院人员跌倒检测识别预警系统通过yolov5python网络模型技术&#xff0c;养老院人员跌倒检测识别预警算法对跌倒事件进行识别和分析&#xff0c;当检测到有人员跌倒时&#xff0c;将自动发出警报提示相关人员及时采取措施。YOLOv5是一种单阶段目标检测算法&#xff0c;该算法…

CTF-Show密码学【Base64、栅栏密码、16进制】

题目内容 密文&#xff1a;53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D 提交格式&#xff1a;KEY{XXXXXXXXXXXXXX}工具下载&#xff1a;https://www.lanzoui.com/i9fn2aj萌新_密码13 分析和解决过程 初步分析…

【Python 基础篇】Python 面向对象编程:理解与实践

文章目录 一、引言二、类与对象三、封装与访问控制四、继承与多态&#xff08;第一部分&#xff09;五、方法重写与多态&#xff08;第二部分&#xff09;六、抽象类与接口1、抽象类2、接口 七、类的关联与组合1、关联关系2、组合关系 八、面向对象设计原则1、SOLID原则2、设计…

实验 4:排序与查找

东莞理工的学生可以借鉴&#xff0c;请勿抄袭 1.实验目的 通过实验达到&#xff1a; 理解典型排序的基本思想&#xff0c;掌握典型排序方法的思想和相应实现算法&#xff1b; 理解和掌握用二叉排序树(BST)实现动态查找的基本思想和相应的实现 算法。 理解和掌握哈希(HASH)存…

【备战秋招】每日一题:2023.04.26-实习-第三题-MC方块

在线评测链接:P1231 题目内容 MC最新版本更新了一种特殊的方块&#xff0c;幽匿催发体。这种方块能够吸收生物死亡掉落的经验并感染周围方块&#xff0c;使其变成幽匿块。Steve想要以此为基础尝试搭建一个经验仓库&#xff0c;他来到了创造超平坦模式&#xff0c;在只有草方块…