Servlet(一)

news2024/11/20 21:23:20

目录

1.什么是Servlet

2.servlet程序

2.1 创建项目

2.2 引入依赖

2.3 创建目录

2.4 编写代码

2.5 打包程序

2.6 部署程序

2.7 验证程序

3.更简单的部署方法

3.1 安装

3.2配置

4.访问出错怎么办

4.1 404

4.2 405

4.3 500

4.4 空白页面

4.5 无法访问此页面

 5.servlet工作模式

6.Servlet调用过程


1.什么是Servlet

Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app.
 

2.servlet程序

2.1 创建项目

 

2.2 引入依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

2.3 创建目录

 web.xml中代码

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

2.4 编写代码

@WebServlet("/hello")//Tomcat类调用HelloServlet类处理
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //要删掉,不能调用父类的doGet
        //super.doGet(req, resp);

        //服务器在控制台打印
        System.out.println("hello world!");
        //页面打印:把hello world字符串,放到http响应的body中
        resp.getWriter().write("hello");
        //resp是响应对象,getWriter()返回一个writer对象,write是真正干活的
    }
}

1.重写父类方法

do:处理 Get:http的get方法 回调函数

HttpServletRequest :代表一个http请求 Tomcat已经收到,已经解析成对象

HttpServletResponse:代表一个HTTP响应 resp是一个空的响应对象,要在代码中给对象设置一些属性

doGet方法要做的工作,就是根据请求,计算响应

2.步骤:

        1.接收请求并解析

        2.根据请求计算响应

        3.构造响应数据,并返回给客户端

        1.3tomcat完成,2要编写

@WebServlet("/hello")是第二路径

2.5 打包程序

没有main不能单独运行,要打包部署到Tomcat上,由Tomcat来调用

在pom.xml中编写

<!--   打的包是war包,不写默认是jar包-->
    <packaging>war</packaging>
<!--    指定打出的war名字-->
    <build>
        <finalName>hello1</finalName>
    </build>

双击

 

 打包成功

2.6 部署程序

war包拷贝到tomcat的webapps目录下

打开tomcat

 会把war包解压

2.7 验证程序

通过浏览器访问

127.0.0.1:8080/hello1/hello

hello1是Context Path 第一级路径是hello1,war包是hello1

hello是Servlet Path 和注解匹配

 一个Tomcat可以同时部署多个网站,一个网站有多个页面,一个请求中第一级路径,就是告诉Tomcat要访问的是哪个网站,第二级路径是告诉Tomcat,要访问的页面是哪个

如果要修改代码:

七个步骤中,前三个不用重复

不一定要重启tomcat(理论不用重启,windows可能会有问题)

3.更简单的部署方法

通过idea插件

3.1 安装

 

3.2配置

 

 

 点击会完成打包部署,重启tomcat

 成功

4.访问出错怎么办

4.1 404

访问资源不存在

1.原因:

  1. URL 的路径写的不正确
  2. 路径正确,服务器没有把正确把资源加载出来

2.典型例子:

1.少写第一级路径,context path

 2.少写第二级路径,servlet path

 3.Servlet Path 写的和 URL 不匹配==>修改 @WebServlet 注解的路径

 

4.web.xml没有写正确

tomcat发现目录中有web.xml且内容正确,才能加载webapp

4.2 405

HTTP请求方法没有实现

1.没有实现 doGet 方法, 就会出现上述现象

 

在浏览器地址栏直接输入 URL , 会发送一个 HTTP GET 请求.

此时就会根据 路径找到类. 并且尝试调用HelloServlet 的 doGet 方法.

2.如果没有屏蔽掉父类

 

4.3 500.4 4 空白页面

不给响应对象设置任何内容,就会出现空白页面

4.5 无法访问此页面

tomcat没有正常启动

 5.servlet工作模式

  • 客户端发送请求到服务器
  • 服务器启动并调用servlet,Servlet根据客户端的请求生成响应内容并传给服务器
  • 服务器把响应返回给客户端

6.Servlet调用过程

1.通过请求头得到是哪个主机

生命周期:

  • servlet被第一次访问时创建,会立即调用init方法进行初始化操作
  • 此后会一直留在服务器中,只要有请求访问就会调用service方法
  • 直到服务器关闭或web应用程序被移除,servlet实例会被销毁,销毁前服务器会调用destroy( )方法进行处理

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

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

相关文章

Gin web框架初步认识

Goland使用及gin框架下载引入 第一次使用Goland时需要配置GOROOT、GOPATH、Go Modules 配置完成后进入面板&#xff0c;右键选择Go Modules文件&#xff0c;或者在go工作区通过命令go mod init [name]创建go mod项目。 创建完的项目一般都有go.mod文件和go.sum&#xff0c;前者…

Mysql【安装教程】

Mysql安装教程 1.安装教程 可以去官网下载这个版本的&#xff1a;mysql-installer-community-8.0.31.0 双击点开&#xff0c;选择自定义&#xff1a; 选择主键&#xff1a;左边选择之后就点蓝色按钮添加到右边去&#xff0c;next&#xff1a; 如果出现这个页面&#xff0c…

机器视觉检测系统的基本流程你知道吗

工业制造业种&#xff0c;首先我们便需要了解其基本流程&#xff0c;作为工厂信息科人员&#xff0c;我们不能只依靠视觉服务商的巡检驻检来解决问题&#xff0c;为了产线的效率提升&#xff0c;我们更多的应该培养产线技术人员&#xff0c;出现问题便可以最快速度解决问题&…

领跑新能源车市“下半场”,这家企业凭什么?

中国新能源汽车市场行至下半场&#xff0c;将围绕技术升级、产品竞争力比拼、整合淘汰等趋势快速发展。 4月7日&#xff0c;在北京水立方发布的奇瑞新能源之夜上&#xff0c;奇瑞汽车全面展示新战略、新技术、新品牌和新产品&#xff0c;宣布将以全新的技术生态加速向全球科技…

光伏电池片技术N型迭代,机器视觉检测赋能完成产量“弯道超车”

电池片是光伏发电的核心部件&#xff0c;其技术路线和工艺水平直接影响光伏组件的发电效率和使用寿命。随着硅料、硅片技术逐渐接近其升级迭代空间的瓶颈&#xff0c;电池片环节正处于技术变革期&#xff0c;是光伏产业链中迭代最快的部分。P型中PERC电池片是现阶段市场的主流产…

已知原根多项式和寄存器初始值时求LFSR的简单例子

线性反馈移位寄存器&#xff08;LFSR&#xff09;是一种用于生成伪随机数序列的简单结构。在这里&#xff0c;我们有一个四项原根多项式 p(x)1x0x21102p(x) 1 x 0x^2 110_2p(x)1x0x21102​ 和初始值 S0100S_0 100S0​100。我们将使用 LFSR 动作过程来生成一个伪随机序列。…

2023美赛春季赛_赛题原文及翻译

目录 Problem Y: Understanding Used Sailboat Prices Y题翻译&#xff1a; Problem Z: The Future of the Olympics Z题翻译&#xff1a; Problem Y: Understanding Used Sailboat Prices ​Like many luxury goods, sailboats vary in value as they age and as market c…

看这一篇就够了!!!Java最全面试手册(性能优化+微服务架构+并发编程+开源框架)

Java面试手册 一、性能优化面试专栏 1.1、 tomcat性能优化整理 ​ 1.2、JVM性能优化整理 1.3、Mysql性能优化整理 二、微服务架构面试专栏 2.1、SpringCloud面试整理 2.2、SpringBoot面试整理 2.3、Dubbo面试整理 三、并发编程高级面试专栏 四、开源框架面试题专栏 4.1、Sp…

[Data structure]稀疏数组

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现&#xff0c;有时候有C/C代码。 ⭐如果觉得文章写的…

清肠化湿颗粒通过激活NLRP6信号和调节Th17/Treg平衡来改善DSS诱导的结肠炎

百趣代谢组学分享-文章标题&#xff1a;Qing-Chang-Hua-Shi granule ameliorates DSS-induced colitis by activating NLRP6 signaling and regulating Th17/Treg balance 代谢组学分享-发表期刊&#xff1a;Phytomedicine 代谢组学分享-影响因子&#xff1a;6.656 代谢组学…

python 对数函数

在 Python中&#xff0c;除了对数函数&#xff0c;还有其他的一些函数&#xff0c;例如&#xff1a; 这是一个在 python中用来计算两个整数之间的关系的函数。如果两个整数的值不同&#xff0c;则它们之间的关系是&#xff1a; 其中aa^2bb^2cc^2。下面是计算两个整数之间的关系…

微信小程序开发(学习记录1.0)

首先&#xff0c;把遇到的问题贴出来&#xff0c;主要是这个解决问题的思路&#xff0c;供大家参考。 现在的问题是将下面的导航栏做出来&#xff0c;但是在自己做的时候 遇到的问题 在app.json文件中输入tarBar&#xff0c;就会生成模板代码&#xff0c;默认会生成一个list的模…

【面试题】calc()计算函数的作用和理解

前言 最近项目中遇到calc()方法不生效问题&#xff0c;本着究其所以然的想法&#xff0c;彻底查了一下calc的方法及使用&#xff0c;还有为什么项目中使用不生效的问题&#xff0c;最后总结出此文&#xff0c;解决方法放在结尾了 cale()是什么 calc是英文单词calculate的缩写…

低功耗技术——流水线设计(加法器和乘法器)

文章目录前言一、流水线1、16bit加法器2、无符号4bit乘法器3、编写一个4bit乘法器模块&#xff0c;并例化该乘法器求解c12*a5*b二、降低FPGA功耗1、静态功耗2、动态功耗前言 2023.3.31 今天学习降低功耗的一些方法 一、流水线 电路最高工作频率&#xff1a;取决于最长的组合逻…

高扇出的危害及优化

高扇出有哪些危害&#xff1f; 危害1&#xff1a;驱动能力下降&#xff0c;时序紧张 扇出过高也就是也就意味了负载电容过大&#xff0c;电路原理基础告诉咱们&#xff0c;负载电容越大&#xff0c;充放电速度越慢&#xff0c;电平跳变所需要的时间增加&#xff0c;即驱动能力…

「SAP ABAP」OPEN SQL(八)【WHERE语句大全】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

MySQL主从复制、读写分离(MayCat2)实现数据同步

文章目录1.MySQL主从复制原理。2.实现MySQL主从复制&#xff08;一主两从&#xff09;。3.基于MySQL一主两从配置&#xff0c;完成MySQL读写分离配置。&#xff08;MyCat2&#xff09;1.MySQL主从复制原理。 MySQL主从复制是一个异步的复制过程&#xff0c;底层是基于Mysql数据…

AI编程助手 Kodezi : 记录、分享一个 VS code 插件

目录0. 概述1. 安装 / 功能介绍1.1 安装1.2 功能介绍1.2.1 Debug1.2.2 代码优化1.2.3 代码转换1.2.4 逐行注释1.2.5 多行注释1.2.6 生成文档1.2.7 生成代码2. KodeziChat 聊天机器人2.1 聊天机器人功能介绍2.2 如何使用 KodeziChat &#xff1f;3. Kodezi 版本介绍3.1 免费版3.…

【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题三

相关链接 【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一 【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题二 【2023年第十一届泰迪杯数据挖…

【软件应用】TamperMonkey同步操作

不废话&#xff0c;记录一些关键点 要设置同步&#xff0c;先得打开高级设置模式 众所周知&#xff0c;这里可以设置同步&#xff0c;建议设置为WebDAV同步&#xff0c;这样通用性更强 至于选择啥网盘就看自己的需求了&#xff0c;支持WebDAV的网盘还是很多的&#xff0c;甚…