[Java Web开发]Servlet学习

2023-11-10

一、什么是Servlet

Servlet是SUN公司提供的一门用于开发动态web资源的技术。它是Java Web三大组件 之一,它工作在客户端请求与服务器响应的中间层。

二、Servlet生命周期

代表生命周期的三个方法:init()、service()、destroy()。

  1. init():当Servlet第一次被装载时,Servlet引擎调用init()方法,只调用一次。
  2. service():这是Servlet真正处理请求的地方。对于每个请求,Servlet引擎将调用Servlet的service方法,并把Servlet请求和响应对象做为参数传递给它。
  3. destroy():当Servlet即将被卸载时由Servlet引擎来调用,这个方法用来清除并释放在init方法中所分配的资源,只调用一次。

在这里插入图片描述

三、Servlet工作过程

  1. 客户端对web服务器发出访问请求。
  2. web服务器接收到请求后将其发送给Servlet。
  3. Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器。
  4. web服务器把从Servlet实例对象中收到的响应结果发送回客户端。
    在这里插入图片描述

四、Servlet项目实战

新建项目:
在这里插入图片描述

  1. Dnamic Web Project:If you want to create a content-based Web application that does not contain any dynamic content (such as servlets, JSP files, filters, and associated metadata) you might prefer to create a static Web project, as opposed to a dynamic Web project.
  2. Static Web Project:Create a Web project for static content (HTML files) only.

项目取名为:HelloServlet
在这里插入图片描述
如果Target runtime为空,请参考:安装和配置Tomcat详解 进行配置。

在这里插入图片描述
新建Servlet
方法一:
在这里插入图片描述
方法二:
在这里插入图片描述
包名和类名:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点Finish生成Hello类:
在这里插入图片描述
新建XML文件:
在这里插入图片描述
在这里插入图片描述
编辑Web.xml文件代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<servlet>
		<!-- 类名 -->
		<servlet-name>Hello</servlet-name>
		<!-- 所在的包 -->
		<servlet-class>com.lj.hello.Hello</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Hello</servlet-name>
		<!-- 访问的网址 -->
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>

在这里插入图片描述
com.lj.hello.Hello,不能写错了:包名+类名。

doGet里面加代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("HelloWorld!!!");

	}
	

在这里插入图片描述

运行项目:
在这里插入图片描述
没Server时:
在这里插入图片描述
有Server时:
在这里插入图片描述
如果报错:
在这里插入图片描述

在这里插入图片描述
如报:“HttpServlet cannot be resolved to a type”这种报错。
请参考:关于HttpServlet cannot be resolved to a type的解决方法

成功运行后:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Java Web开发]Servlet学习 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 在 QSS 中设置 Qt Widget 属性

    在 QSS 中设置 Qt Widget 属性 默认样式 QSS 自定义属性与 Qt 类型对应 使用枚举 使用 QSS 属性选择器 代码实例 在 QSS 中设置 Qt Widget 属性 Q OBJECT 添加自定义属性到 Qt动态属性系统
  • 使用maven模板快速生成项目

    1 Archetype介绍 Archetype是一个Maven项目的模板工具包 它定义了一类项目的基本架构 Archetype为开发人员提供了创建Maven项目的模板 同时它也可以根据已有的Maven项目生成参数化的模板 通过archety
  • Linux/Mac go版本升级

    文章目录 背景 卸载当前版本 安装最新版本 解压下载的文件 验证生效 背景 Mac上go版本为1 10 在1 11以后加入了go mod等特性 所以要更新到最新的go版本 此方法适用于Mac Linux 卸载当前版本 只需要删除 usr l
  • STM32F103C8T6使用备忘录

    1 STM32端口配置寄存器 CRH寄存器 用于高位I O口 即GPIOX8 GPIOX15 X可以是A B C D E等 每个IO口有两个寄存器 分别是CNFxx 1 0 和MODExx 1 0 共占四位二进制or一位十六进制 1 CNF
  • Nginx下开启php-fpm的错误提示

    Nginx下开启php fpm的错误提示 1 php fpm的作用 nginx本身不能处理PHP 它只是个web服务器 当接收到请求后 如果是php请求 则发给php解释器处理 并把结果返回给客户端 nginx一般是把请求发fastcgi管
  • hausdorff matlab,matlab练习程序(Hausdorff距离)

    Hausdorff距离是根据Hausdorff 1868 1942 命名的 Hausdorff距离是指某一集合中离另一集合最近点的所有距离的最大值 通常用如下公式表示 需要注意的是h A B 和h B A 通常不相等 所以可以定义更一般的H
  • React Context源码是怎么实现的呢

    目前来看 Context 是一个非常强大但是很多时候不会直接使用的 api 大多数项目不会直接使用 createContext 然后向下面传递数据 而是采用第三方库 react redux 想想项目中是不是经常会用到 connect Com
  • 什么是数据湖技术数据湖和数据仓库的区别(好文转载)

    原文链接 什么是数据湖技术 xuzhujack 博客园 什么是数据湖 有什么用 终于有人讲明白了 大数据 CSDN博客 数据湖 Data Lake 是Pentaho公司创始人及CTO James Dixon于2010年10月在2010年10
  • Verilog文件的读取(fscanf)和写入(fwrite)方法

    在写testbench时 经常会用到文件的读取 下面示例了文件读取和写入的方法 文件读取 图中第一行定义一个文件句柄 由于打开的文件中一行中有两个10bit的十进制数据 所以定义了2个reg变量 第6行到12行就是文件的读取过程 使用的系统
  • 一个恋爱小故事告诉你什么是gRPC?!

    RPC 对RPC不了解的人 或许会纠结其与TCP HTTP等的关系 后者是网络传输中的协议 而RPC是一种设计 实现框架 通讯协议只是其中一部分 RPC不仅要解决协议通讯的问题 还有序列化与反序列化 以及消息通知 一个完整的RPC架构里面包
  • 力扣332. 重新安排行程 Java dfs回溯

    给你一份航线列表 tickets 其中 tickets i fromi toi 表示飞机出发和降落的机场地点 请你对该行程进行重新规划排序 所有这些机票都属于一个从 JFK 肯尼迪国际机场 出发的先生 所以该行程必须从 JFK 开始 如果存
  • 【简单入门】ChatGPT prompt engineering (中文版)笔记

    目录 思维导图 一 资料 二 指南 环境配置 两个基本原则 最重要 原则一 编写清晰 具体的指令 策略一 使用分隔符清晰地表示输入的不同部分 分隔符可以是 lt gt
  • MySQL 高级篇 -- 性能分析

    文章目录 一 基础知识 1 1 数据库服务器的优化步骤 1 2 查看系统性能参数 1 3 统计 SQL 查询成本 1 4 查看 SQL 执行成本 二 mysqldumpslow 慢日志分析 2 1 相关变量 2 2 案例准备 2 3 测试
  • Mac下Fiddler的安装、配置与使用

    环境安装 Mono安装 首先 Mac下需要使用 Net编译后的程序 需要用到跨平台的方案Mono 现阶段微软已推出跨平台的方案 Net Core 不过暂时只支持控制台程序 安装程 可以从 http www mono project com
  • 第二十四课、二十五课,高级光照(blinn),Gamma矫正

    高级光照 blinn 这里主要是矫正了 视口方向和反射方向夹角太小造成的阴影轮廓现象 但是在我的项目中 只要给blinn光照的shiness乘4 基本与冯氏光照没有区别 if light blinn vec3 halfwayDir norm
  • 从零开始的Spring Security Oauth2(一)

    使用配置 1 简易的分为三个步骤 配置资源服务器 配置认证服务器 配置spring security 2 oauth2根据使用场景不同 分成了4种模式 授权码模式 authorization code 简化模式 implicit 密码模式
  • Unity的画面高质量传输( FMETP STREAM 实时画面传输案例)

    Unity中实现画面传输首先要保证在同一个局域网下 其次 用到的FMETP STREAM插件进行画面传输的时候不分Server端和Client端 下面我们看一个案例 用大屏和小屏举例 我们要实时把小屏内容传输到大屏上 首先建两个空物体Ser
  • 矩阵分析L6矩阵函数

    一 范数 1 范数与内积 内积 对两个空间进行内积运算可以得到一个实数集 范数 对一个空间可以直接进行向量 大小 的衡量 得到实数集 2 向量范数 正定性 范数为0 则每个向量必为0 3 例题 向量范数判断 4 p级范数 注意 范数 Y 若
  • 老猿学5G扫盲贴:R15/R16中计费架构和计费原则涉及的规范文档

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 概述 在R16的32 240文档对应规范为3GPP TS 32 240 V16 1 0
  • [Java Web开发]Servlet学习

    目录 一 什么是Servlet 二 Servlet生命周期 三 Servlet工作过程 四 Servlet项目实战 一 什么是Servlet Servlet是SUN公司提供的一门用于开发动态web资源的技术 它是Java Web三大组件 之