当前位置: 首页 > news >正文

【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.lryc.cn/news/306915.html

相关文章:

  • c++ http操作接口
  • oracle官网下载早期jdk版本
  • Python爬虫实战:图片爬取与保存
  • CMS垃圾回收器
  • 【力扣白嫖日记】184.部门工资最高的员工
  • JAVA讲解算法-排序算法-选择排序算法-02
  • 【初始RabbitMQ】高级发布确认的实现
  • 用39块钱的全志V851se视觉开发板做了个小相机,还可以物品识别、自动追焦!
  • 主从复制实现Redis集群
  • 高分文献解读|3D打印骨支架实现梯度密度颌骨功能性重建
  • 大型电商日志离线分析系统(一)
  • FL Studio Fruity Edition2024中文入门版Win/Mac
  • 学习vue3第二节(使用vite 创建vue3项目)
  • 基于Siamese网络的zero-shot意图分类
  • Java架构师之路五、微服务:微服务架构、服务注册与发现、服务治理、服务监控、容器化等。
  • [计算机网络]--IP协议
  • MySQL问题记录
  • LeetCode_Java_动态规划系列(1)(题目+思路+代码)
  • Linux使用Docker部署在线协作白板WBO并结合内网穿透发布公网远程访问
  • petalinux烧写image.ub报错
  • [足式机器人]Part2 Dr. CAN学习笔记-Ch00-2 - 数学知识基础
  • 【Linux】head命令使用
  • 【书籍分享 • 第三期】虚拟化与容器技术
  • 数据结构之:堆
  • 助力探索社交出海最短变现路径,融云 1V1 音视频「限时免费」
  • 汇编工具理解
  • Leetcoder Day21| 回溯理论基础+组合
  • 备战蓝桥杯Day17 - 链表
  • 登录页设计新选择:毛玻璃和新拟态风格,非2.5D和插画风
  • 14:00面试,14:05就出来了,问的问题有点变态。。。