第一个Servlet程序

这篇具有很好参考价值的文章主要介绍了第一个Servlet程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一个Servlet程序

一、Servlet是什么?

Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app.
大家需要注意,网页可以分为两类:
1.静态页面:网页内容始终固定的页面
2.动态页面:用户不同/时间不同/输入参数不同时页面的内容会发生变化

Servlet主要进行的工作:
1.允许我们程序员创建一个类,tomcat收到某个特定路径的HTTP请求时,执行该类中的某个方法
2.对HTTP请求进行解析,并将HTTP请求从一个字符串解析成一个HttpRequest对象
3.我们程序员只需要给指定的HttpResponse对象的一些属性字段填写,Servlet就会自动的按照HTTP协议的方式构造出一个HTTP响应的字符串,然后通过Socket写回客户端

Servlet是tomcat提供的一组API,让我们用户不必关注Socket,HTTP协议格式等细节,降低了web开发的门槛,提高开发效率

二、第一个Servlet程序

我们现在就来编写我们第一个Servlet程序吧,写一个helloworld程序,部署到tomcat上,然后通过浏览器去访问,在网页上得到hello world字符串,一共需要一下7个步骤:

1.创建项目

此处我们需要创建一个maven项目
第一个Servlet程序
如果是首次使用maven,项目创建好之后会在下面读条,去中央仓库加载一些maven的依赖,因为中央仓库在国外,所以这里读条的过程可能比较久,前面我们已经介绍过maven的使用了,这里我们就不再一一解释了。
第一个Servlet程序
我们的将settings中的maven设置为我们下载的maven,而不是IDEA自带的maven
第一个Servlet程序

2.引入依赖

我们需要在pom.xml引入servlet的依赖,我们在中央仓库搜索一下maven
第一个Servlet程序
这里我们使用servelt 3.1.0,和tomcat 8是匹配的
第一个Servlet程序
下面即是我们servlet的坐标依赖
第一个Servlet程序

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

第一个Servlet程序
我们需要先在pom.xml中创建该标签,该标签中可以放多个依赖,我们将servlet依赖粘贴进去即可
第一个Servlet程序
如果是首次使用,这里可能会爆红,我们需要手动刷新导入一下
第一个Servlet程序
这两个刷新按钮都可以

3.创建目录

虽然maven已经帮我们自动创建了一些目录,但是还不够,因为此处我们使用maven开发的是一个web程序,还需要一个额外的目录
1.在main目录下,创建一个webapp目录,该目录和java,resources并列
第一个Servlet程序
2.在webapp目录下创建WEB-INF目录
第一个Servlet程序
3.在WEB-INF目录下创建一个web.xml文件
第一个Servlet程序
4.给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>

第一个Servlet程序
大家需要注意一点,有些同学这里的代码是红色的,但并不代表是错的

4.编写代码

我们在java目录下创建一个HelloServlet类然后继承HttpServlet类
第一个Servlet程序
Servlet api提供了现成的HttpServlet类,我们只需要继承该类,然后重写部分方法即可
我们这里重写doGet方法
第一个Servlet程序
我们输入doG直接快捷键完成即可
第一个Servlet程序
我们来看一下HttpServlet是如何处理doGet的
第一个Servlet程序
我们发现,父类是直接写回一个错误,所以我们这里需要将父类的super.doGet()删除,然后自己实现逻辑。
大家需要注意,我们这里重写的doGet方法不需要我们手动调用,而是tomcat收到get请求,就会触发doGet方法,tomcat会构造好两个参数,req和resp,req是TCP socket中读出来的字符串,按照HTTP协议解析得到的对象,resp是一个空的对象(不是null,只是里面的各个属性没有设置)。
第一个Servlet程序
我们需要在类上面加一个注解,注解是java中特殊的类,java中定义一种特殊的’语法糖"来实现注解,注解的作用,是针对一个类/方法,进行额外的解释说明,赋予该类/方法额外的功能/含义
此处这里的 @WebServlet 注解的作用是把当前类和一个HTTP请求路径关联起来,tomcat收到GET请求后,根据GET请求的路径去触发不同的类
第一个Servlet程序
resp.getWriter()会得到一个Writer对象,此处的writer对象是属于resp对象的,此处的write操作其实是往resp的body部分进行写入,等resp对象整个构造好了,tomcat会统一转成HTTP相应的格式,写入socket

5.打包程序

这里我们需要将程序打成war包,jar只是一个普通的java程序,war则是tomcat专属用来描述webapp的程序,一个war就是一个webapp,但是我们maven默认是打成jar包,我们需要在pom.xml配置一下
第一个Servlet程序
第一个Servlet程序
第一个Servlet程序
点击package进行打包
第一个Servlet程序
第一个Servlet程序
如果大家打包后没有出现target,大家需要刷新(reload)一下项目。

6.部署

将刚才打包好的war拷贝到tomcat的webappas目录下,无论tomcat是在同一个电脑还是在不同电脑上,都是这样拷贝,需要注意如果tomcat正在运行时,直接拷贝,tomcat虽然能识别,但是在windows上可能会出现Bug
第一个Servlet程序

7.验证

启动Tomcat,在浏览器地址栏输入对应url
第一个Servlet程序
第一个Servlet程序
第一个Servlet程序
我们刚刚在浏览器地址输入url之后,浏览器就构造了一个GET HTTP 请求,发给了tomcat,tomcat然后根据一级目录,确定了具体的webapp,根据第二级路径,确定了是调用哪个类,再通过GET/POST方法确定调用HelloServlet的那个方法。

上述是我们servelt最朴素的步骤,我们也可以通过一些操作来简化上述操作

三、IDEA部署Servlet程序

smart tomcat

我们在tomcat那篇文章,详细介绍了Tomcat的使用,以及smart插件的使用,这里我们只是演示一下,不再详细介绍了。
第一个Servlet程序
点击+新增配置,选中smart tomcat
第一个Servlet程序
配置tomcat

第一个Servlet程序
运行tomcat
第一个Servlet程序
第一个Servlet程序
不要去点击这里的地址,我们需要在地址栏手动输入url
第一个Servlet程序
smart tomcat的工作原理,不是说把war包拷贝(webapps里不变),而是tomcat启动的时候显式指定了一个webapp目录,相当于加载单个webapp运行,ided直接调用tomcat,让tomcat加载当前项目中的目录,这个过程没有打war包,没有拷贝,也没用解压缩的过程
大家需要注意:如果我们直接拷贝war包的方式部分,context path就是war包名,如果是smart tomcat方式部署,这里是可以配置的,默认是项目名

Tomcat Server

需要注意的是使用Tomcat Server部署的时候,需要将项目打成war包
第一个Servlet程序

第一个Servlet程序
第一个Servlet程序
第一个Servlet程序
将我们打好的包,添加进来
第一个Servlet程序
然后网页访问即可
第一个Servlet程序

常见错误

1.404
路径写错了,如果大家出现了404将自己地址栏输入的url与Context path
第一个Servlet程序
和servlet path对应看是否一致
第一个Servlet程序
webapp没有正确被部署: web.xml 写错了

2.405
405 表示对应的 HTTP 请求方法没有实现,比如我们在浏览器发了个GET请求,但是代码里没写doGet,此时就会出现405,因为我们父类的doGET里的代码就是返回405
第一个Servlet程序
3.500
本质上就是我们的代码抛异常了,500的时候日知会明确告诉我们异常调用栈,告诉我们是哪一行代码出的异常
第一个Servlet程序

4.出现空白页面
我们的方法中没有写resp.getWriter().write()方法

5.出现"无法访问此网站"
原因可能是tomcat没有启动好,我们需要检查我们的tomcat是否启动好了文章来源地址https://www.toymoban.com/news/detail-415855.html

到了这里,关于第一个Servlet程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 两种方法用IDEA创建一个Servlet程序 新手教程详解

         Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 2.1 创建一个普通的java程序       页面左上角,点击文件 - 项目 - 新建项目: 2.2 添加框架支持          为新建

    2024年02月01日
    浏览(91)
  • 创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

    目录 🐲 1. 动态页面之Servlet 🐲 2. 写第一个Servlet的程序:\\\"hello world!\\\" 🦄 2.1 创建项目 🦄 2.2 引入Servlet依赖 🦄 2.3 创建目录结构 🦄 2.4 编写代码  🦄 2.5 打包程序 🦄 2.6 部署程序 🦄 2.7 验证程序 🐲3. 创建Servlet流程简化 🐲4. 工作原理流程分析 🐲5. 访问页面出错 HTTP服务器

    2023年04月11日
    浏览(68)
  • 【Servlet综合项目练习】实现一个简单的博客系统~

    目录 🌟一、数据库设计部分 1、建表分析:系统中一共要实现几张表?  2、开始建表 🌟二、大概框架与实现功能 🌟 三、代码实现部分 🌈前言1:工具类的实现(utils包下) 1、数据库连接的工具类 2 、 用户信息判空的工具类 3、判断当前用户是否已经登录的工具类 🌈前

    2024年02月15日
    浏览(41)
  • 【Servlet学习四】实现一个内存版本的表白墙~

    目录 一、前端代码 二、后端代码实现 🌈1、全局类定义AppVar 🌈2、实体类定义Message 🌈3、获取所有信息:getMessageServlet实现前后端的交互 🌈4、添加数据:addMessageServlet,实现前后端交互 三、效果演示 目标:         将输入内容放在内存里面存储,用List存储对象,这个

    2024年02月11日
    浏览(43)
  • 【JavaEE】Tomcat的安装和使用、创建Mevan项目使用Servlet写一个程序

    目录 前言 一、Tomcat的下载和安装 二、写一个简单的Servlet项目 1、创建一个Maven项目 2、引入依赖  3、创建目录   4、编写Servlet代码。 5、打包程序 6、将程序部署到Tomcat上 7、验证程序运行结果  三、在IDEA上安装Smart Tomcat插件 四、Servlet中的一些常见错误 我我们制作一个网站

    2024年02月17日
    浏览(48)
  • 【Servlet学习三】实现一个内存版本的简易计算器~

    目录 一、方式1:使用form表单的形式(不推荐) 🌈1、前端代码:HTML文件 🌈2、后端代码:Calculator_form.java文件 🌈3、最终效果 二、方式2:使用ajax形式(最常用重点!!!) 🌈1、前端代码:HTML文件 🌈2、后端代码:Calculator_ajax.java文件 🌈3、最终效果  注意: (1)前端

    2024年02月12日
    浏览(43)
  • 使用JavaBean+Servlet+JSP实现一个简单的后台登陆和注册功能

    JavaBean泛指java的一些基本组件,类似domain,service,utils等 Servlet是运行在服务器端可以接收客户端 请求 并向客户端发送 响应 的一个 Java类 ,servlet的主要职责有三个,分别是(1)获取请求,接收请求参数;(2)调用业务逻辑;(3)页面导航,返回数据。 JSP是一种使用Java语言

    2024年02月04日
    浏览(50)
  • 在【微信小程序】中实现 【支付宝支付】是一种什么样的体验?

    一名自由职业的程序员的独立开发之路 自己的微信小程序中需要实现 企业向个人付款的需求,前前后后折腾了一段时间 各种问题,各种坑都有,有技术类的,有非技术类 此篇文章做一个记录,希望能帮助到各位 有问题大家可以留言交流 微信提供给我们有几种的对接方式,

    2024年02月10日
    浏览(60)
  • 实现SERVLET应用程序

    Smart Software 的开发人员希望开发一个Web应用程序,使用servlet显示保存在表中的雇员信息。该应用程序需要有用户界面,用户可在该用户界面中指定要查看雇员数据的雇员ID。该界面还应显示网站被访问的次数。 要解决上述问题,需要执行以下任务: 创建Web应用程序。 使用

    2024年01月21日
    浏览(37)
  • 表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序

    目录 表白墙引入数据库  再谈Cookie和session 得到Cookie ​编辑 设置Cooie 使用Cookie编写一个登入的小界面 1.先引入数据库的依赖(驱动包),5.1.49 pom.xml中,在之前的两个之前,再去添加一个 2.创建本地的数据库 3.之前的代码中有一段可以删掉了 这个代码需要删除,因为我们已

    2024年02月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包