【Java EE初阶二十三】servlet的简单理解

1. 初识servlet

        Servlet 是一个比较古老的编写网站的方式,早起Java 编写网站,主要使用 Servlet 的方式,后来 Java 中产生了一个Spring(一套框架),Spring 又是针对 Servlet 进行了进一步封装,从而让我们编写网站变的更简单了;Spring 是基于 Servlet 来实现的,学了 Servlet 可以更好的理解 Spring,
(Spring 里面的某些功能,仍然要通过原生的 Servlet 的方式来触发)

        Servlet的主要工作:

        就是让程序员写一些类,然后把这些类给加载到 Tomcat 中,后续 Tomcat 收到 HTTP 请求 (来自于浏览器),就会执行到咱们上面写的代码,从而通过这些代码,完成一定的业务逻辑.

2. 简单的Servlet程序

2.1 初识servlet小程序

        动手操作,先写一个最简单的 Servlet 的 hello world 程序;
        学习目标: 编写 Servlet 代码,最终在浏览器上,能够展示出 hello world

1、创建项目

        此处创建的是一种新的项目的形式,称为 Maven 项目,Maven 是 Java 中的一个构建工具(帮助你编译/打包代码的工具),因为以后涉及到的项目,可能会非常复杂,尤其是可能会有一系列的依赖关系。Maven 就可以解决上述问题,帮我们把依赖管理好,同时Maven 的打包功能也非常强大,且方便集成到自动化环境中;创建maven的图解如下所示:

        maven 项目在首次创建的时候,会自动的从 maven 的网站上下载一些依赖的组件,下图是maven的目录结构:

        不仅仅是 Servlet 可以使用 maven, 任何一个java 程序, 都可以使用 maven 来管理.

2、引入依赖
        接下来要写的程序,会使用 Servlet,,Servlet 这个 api 是 tomcat 提供的.,而不是 jdk 提供的.(第三方库,不是 jdk 自带的,需要手动安装引入.之前搞 mysql 的时候,类似于mysql jdbc driver),使用 maven 就可以非常方便的解决上述问题.

        1)、打开 maven 中央仓库,找到需要的 servlet 的 jar 包

        2)、借助 maven, 自动下载上述依赖!

        

        刚才 jar 包是被下载到哪里了呢?
        maven 本地仓库,maven 就会在你的机器上搞一个目录,这个目录就会保存你这边下载好的这些 jar包;如下图所示;

3、创建目录
        maven 项目是普适的,不仅仅局限于 Tomcat.而 Tomcat ,对于项目的目录结构,还有一些额外的要求;

        webapp代码如下:

<!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>

4、编写代码

        在java 目录中,创建类:

        继承是为了重写父类的方法:

        关于服务器的主要逻辑:

        代码识别分析:

5、打包程序 

        打包程序,把咱们的写好的代码打成 war 包.(Tomcat 需要有一个 war 包在上面),maven 就可以完成打包操作.

        1)、修改 pom.xml, 设置打包的类型和包名字.

        

        java 中更通用的发布方式.任何程序都可以打成 jar.其中jar 里最要就是 .class 文件;Tomcat 专属的压缩包是.war ,这里面不光有 .class,还有一些 tomcat 要求的配置文件 (web.xml 等),以及还有前端的一些代码(html, css,js);

        2)、在右侧 maven 面板中,双击 package这个按钮.

        

        等待一段时间,如下图所示:

        

        如果看到这个字样,说明打包成功了!如果打包失败,在控制台中也会显示一些出错原因;

        1)、打包操作,依赖了一些第三方的jar 包.maven 就会自动下载.但是如果下载过程中,网络不太顺畅,就容易出错,
        2)、代码里有问题 (配置文件,pom.xml)

        最后打包成功后就会出现如下target目标:

6、部署程序 

        把 war 拷贝到 webapps 目录中即可,启动 tomcat

7、验证程序.
        通过浏览器,访问 tomcat,获取到咱们代码返回的 hello world

 2.2 对于servlet的优化

        如果我想改代码, hello world =>hello java,但是由于重复上述的七个过程太麻烦,所以要进行优化;

        我们可以借助 IDEA 的插作,把 tomcat 集成到 IDEA中,此时,就可以通过IDEA一键式的重新打包部署了;所谓插件(plugin),IDEA 这样的程序,功能已经非常强了,但是即使如此,也无法保证 IDEA 就能面面俱到。所以插件的引入主要的目的如下:

        1)希望 IDEA 功能能够多多益,2)又不希望 IDEA 过于臃肿,插件这样的机制,就能完美的解决上述问题.

        为了让 Tomcat 集成进来, 就需要安装插件-->Smart Tomcat

1、下载插件

2、使用插件

        运行结果如下所示:

        当出现如下图所示的结果是我们的tomcat启动成功了:

        综上所述,有了 smart tomcat 之后,修改代码的时候只需要修改后重新点击运行 tomcat,即可;

2.3 关于servlet的异常

 2.3.1 出现 404

        1)、ur 路径写错了

        

        2)、 webapp 没有正确加载
        比如,web.xml的内容不对;

        3)、路径的正确写法

2.3.2 出现 405

       1)、 方法没有被实现.(GET 请求,但是 Servlet 却没有重写 doGet);

        2)、还有一个原因,也会引起 405,就是写的代码中,没有删掉 super.doGet();

代码如下:

        3)、因为相应的格式已经不是合法的http了,就会导致解析出错;

2.3.3 出现 500

        服务器内部错误,你写的代码抛出异常了,在日志或者响应中会带有异常信息;

2.3.4 出现空白页

        

        这个时候,就需要检査, 服务器是否真的返回了带有正文的响应报文,浏览器显示的内容,就是 http 响应的正文;

2.3.5 出现无法访问此网站

        

        这个情况就需要检查 tomcat 是否是正常工作;如果 tomcat 确实正常工作了,就需要检査,ip 和 端口号是否正确

ps:本次的内容就到这里了,如果大家感兴趣的话就请一键三连哦!!!

 

        

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

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

相关文章

【卷积神经网络中用1*1 卷积有什么作用或者好处呢?】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 1*1 卷积有什么作用或者好处呢 作用降维和增加非线性特征组合和交互网络的宽度和深度调整全连接替代增强…

高频面试题整理(一)

文章目录 平台无关性如何实现&#xff1f;JVM如何加载 .class文件&#xff1f;什么是反射?谈谈ClassLoader谈谈类的双亲委派机制类的加载方式Java的内存模型?JVM内存模型-jdk8程序计数器&#xff1a;Java虚拟机栈局部变量表和操作数栈&#xff1a; Java内存模型中堆和栈的区别…

Android Gradle开发与应用 (二) : Groovy基础语法

1. Groovy是什么 Groovy是基于JVM虚拟机的一种动态语言&#xff0c;语法和Java非常相似&#xff0c;并能够无缝地与Java代码集成和互操作&#xff0c;增加了很多动态类型和灵活的特性。(闭包、DSL) 语法和Java非常相似这个特点&#xff0c;意味着&#xff0c;如果我们完全不懂…

Python爬虫进阶:爬取在线电视剧信息与高级检索

简介&#xff1a; 本文将向你展示如何使用Python创建一个能够爬取在线电视剧信息的爬虫&#xff0c;并介绍如何实现更高级的检索功能。我们将使用requests和BeautifulSoup库来爬取数据&#xff0c;并使用pandas库来处理和存储检索结果。 目录 一、爬取在线电视剧信息 …

174基于matlab的雷达数字信号处理

基于matlab的雷达数字信号处理。该程序具备对雷达目标回波的处理能力&#xff0c;能够从噪声中将目标检测出来&#xff0c;并提取目标的距离、速度、角度信息。有相应的试验文档。程序已调通&#xff0c;可直接运行。 174 雷达数字信号处理 目标检测出来 (xiaohongshu.com)

赵本山指着李琳(桂琴):这个琴你买不起,小沈阳:那得多少钱哪?

赵本山指着李琳&#xff08;桂琴&#xff09;&#xff1a;这个琴你买不起&#xff0c;小沈阳&#xff1a;那得多少钱哪&#xff1f; --小品《同桌的你》&#xff08;中2&#xff09;的台词 赵本山&#xff1a;照全家福的家长没回来你跟谁照呢 小沈阳&#xff1a;哎哪算你一个呗…

国产替代MATLAB的征途

国产替代MATLAB的征途 The Journey of Domestic Alternatives to MATLAB 在科技的浪潮中&#xff0c;软件成为了推动进步的重要工具。MATLAB&#xff0c;这一工程和科学计算的巨擘&#xff0c;因其强大的数值分析、矩阵运算能力和丰富的应用工具箱&#xff0c;在全球学术界和工…

5 buuctf解题

命令执行 [BJDCTF2020]EasySearch1 打开题目 尝试弱口令&#xff0c;发现没有用 扫描一下后台&#xff0c;最后用御剑扫描到了index.php.swp 访问一下得到源码 源码如下 <?phpob_start();function get_hash(){$chars ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu…

抖音视频批量下载工具|视频内容提取软件

这 款基于C#开发的抖音视频下载工具提供了多项实用功能&#xff0c;让用户可以方便快捷地获取抖音平台上的视频内容。 轻松下载抖音视频&#xff0c;尽在这款专业工具&#xff01; 无论您是想要批量提取抖音视频&#xff0c;还是只需下载单个视频&#xff0c;这款基于C#开发的…

【管理咨询宝藏资料26】某城投集团对标案例分析报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料26】某城投集团对标案例分析报告 【关键词】战略规划、对标研究、管理咨询 【文件核心观点】 - 市场化城开企业&#xff0c;打造城市综合运…

如何在 VM 虚拟机中安装 Windows XP 操作系统保姆级教程(附链接)

一、VMware Workstation 虚拟机 没有安装 VM 虚拟机的参考以下文章进行安装&#xff1a; VM 虚拟机安装教程https://eclecticism.blog.csdn.net/article/details/135713915 二、Windows XP 镜像 点击链接下载镜像 下载链接https://pan.baidu.com/s/1sk5pU8PoTJ1dOxMpGCUfc…

IO进程线程复习:进程线程

1.进程的创建 #include<myhead.h>int main(int argc, const char *argv[]) {printf("hello world\n");//父进程执行的内容int num520;//在父进程中定义的变量pid_t pidfork();//创建子进程if(pid>0){while(1){printf("我是父进程&#xff0c;num%d\n&…

曲线生成 | 图解B样条曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 控制点计算之插值2 控制点计算之近似3 仿真实现3.1 ROS C实现3.2 Python实现3.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)&a…

ZYNQ Vivado更新硬件后SDK不更新问题解决办法

一、情况说明 软件版本 Vivado 2018.3 Vivado更新硬件导出后&#xff0c;按正常SDK会自动检测到hdf文件的变化跳出更新提示&#xff08;如下图所示&#xff09;。但是我的项目如果是复制的或者是长时间没打开的项目更新硬件配置导出后SDK无法自动更新。 二、解决办法 2.1 …

win10安装使用AxurePR9

背景&#xff1a;win10 安装、汉化 Axure Pr9 下载 安装包 链接&#xff1a;https://pan.baidu.com/s/1taMgh2zLbaFK7VTfUXTHdQ 提取码&#xff1a;kygo 安装 修改安装目录 打开是英文的 汉化 复制lang包到Axure安装包 再打开就是中文 问题 发布html后火狐无法打开 一、…

数据安全策略

当您在第一线担负着确保公司的信息和系统尽可能免受风险的关键职责时&#xff0c;您的数据安全策略需要复杂且多层次。威胁可能有多种形式&#xff1a;恶意软件、黑客攻击、财务或信息盗窃、破坏、间谍活动&#xff0c;甚至是您信任的员工故意或无意的活动造成的。因此&#xf…

电商风控系统(flink+groovy+flume+kafka+redis+clickhouse+mysql)

一.项目概览 电商的防止薅羊毛的风控系统 需要使用 groovy 进行风控规则引擎的编写 然后其它技术进行各种数据的 存储及处理 薅羊毛大致流程 如果单纯使用 if else在业务代码中进行风控规则的编写 那么 维护起来会比较麻烦 并且跟业务系统强绑定不合适 所以一般独立成一个单…

高效备考2025年AMC8数学竞赛:做熟2000-2024年AMC8真题

这段时间&#xff0c;有小学生的家长朋友问&#xff0c;想给孩子学点数学拓展的知识&#xff0c;不局限于课堂所学。有什么可以推荐的活动或比赛。我个人的建议是可以了解下AMC8美国数学竞赛。主要有以下几个原因&#xff1a; 一是这个竞赛是美国数学协会&#xff08;MAA&…

Linux7.9环境源码编译安装ffmpeg6.x

1.官网ffmpeg下载源码 https://ffmpeg.org/download.html#build-windows 2.未安装x264库则先安装配置 可以先查询x264库: whereis libx264 安装编译工具和依赖库&#xff1a; sudo yum install gcc make cmake mercurial git yasm pkgconfig autoconf automake libtool sudo…

GEE数据集——全球无缝高分辨率温度数据集(GSHTD)

全球无缝高分辨率温度数据集&#xff08;GSHTD&#xff09; 本研究中介绍的全球无缝高分辨率温度数据集&#xff08;GSHTD&#xff09;为各领域的研究人员提供了全面而宝贵的资源。该数据集涵盖 2001 年至 2020 年&#xff0c;主要关注陆地表面温度 (Ts) 和近地面气温 (Ta)。GS…