servlet / jsp 学习——java,关系,区别,核心概念,代码例子

2023-11-10

互联网三大基石

  • HTTP: HyperText Transfer Protocol, 传输数据
  • URL:    Uniform Resource Locator, 定位数据
  • HTML: HyperText Markup Language, 显示数据

servlet

servlet 就是 java,是继承父类 HttpServlet 的 java 类。在服务器端运行,用于处理用户的请求并给予响应。

servlet 运行过程

  1. 浏览器发送请求到服务器
  2. 服务器根据请求的 URL,去调用相应的 servlet(servlet 有不止一个),servlet 操作数据库,获取信息
  3. 通过 servlet 中打印流对象,将生成的 HTML 数据输出给服务器
  4. 服务器将 servlet 生成的 HTML 数据再输出给客户端浏览器
  5. 浏览器根据服务器传回的 HTML 数据解析,再发送请求,最终显示出页面

可以看出,浏览器和servlet不直接沟通,web服务器是媒介。下面这幅图片很好的描述了各种关系:

图:注意要区分Web服务器和应用服务器。Apache是Web服务器;Tomcat是Java应用服务器。Web服务器用来处理HTTP, URL, 和HTML;Tomcat用来处理Java的应用,JSP/Servlet。在开发Java的Web程序的时候,Apache和Tomcat配合在一起使用,Apache处理静态页面,Tomcat处理动态页面。

servlet 学习网站


jsp

jsp经过编译,成为 java 类(此类的超类的超类,最终是 HttpServlet,因此也可以说 jsp 就是 servlet),所以 jsp 也是java。jsp java + html。有时候写 jsp 就像是在写 HTML,然后嵌套一点 Java。JSP 是简化 Servlet 编写的一种技术,它将 Java 和 HTML 混合在一起编写。动态产生的内容使用 Java 代码编写,而固定不变的静态内容采用 HTML 编写。

jsp 文件在第一次运行的时候,通过 jsp 引擎( JspServlet ),会生成对应的 java 文件和 class(位置:tomcat/work/Catalina/localhost/web项目名/org/apache/jsp)

jsp 语法分为三种不同的类型:
编译器指令
1. page,页面设置 < %@ page … %>)
2. include,源码级别导入 < %@ include … %>)
3. taglib
脚本语法
1. HTML注释,Servlet中会生成,会发给浏览器 < !– comments –>
2. 隐藏注释,Servlet中不会生成,不发给浏览器< %– comments –>
3. 声明,< %! … %>
4. 表达式,< %= … %>
5. java脚本段,< % … %>,在这里直接写入 java 代码,变量,方法等
动作语法
< jsp:forward >, < jsp:include >, < jsp:plugin >等

jsp 学习网站


补充

servlet 和 jsp 都是属于 Java EE 内容。Servlet 负责相应请求产生数据,并把数据通过转发技术带给 JSP,数据显示用 JSP 来做。

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

servlet / jsp 学习——java,关系,区别,核心概念,代码例子 的相关文章

  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • 响应式图像 - srcset 和尺寸属性 - 如何正确使用两者:基于设备像素比和基于视口的选择一起?

    到目前为止 我经常读到这个问题 并且它也发生在我自己的项目中 这里介绍一下我到目前为止所发现的关于 srcset 和 size 属性的内容 关于如何使用有两种不同的可能性srcset 属性 来源 w3c http w3c github io
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 使用css bootstrap时如何仅向一列添加右边框?

    我正在尝试使用CSS引导框架 http getbootstrap com css tables在我的项目中 我正在使用带有以下类的表table table bordered table striped 我想删除除第一列之外的所有列的边框 这
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 按日期对 RecyclerView 进行排序

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

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • C语言绘图EasyX图形库基础(笔记)

    在电脑已经安装了vs编译器的情况下在浏览器输入EasyX的官网网址http easyx cn下载EasyX图形库根据安装提示对应VS版本安装即可 EasyX cpp 此文件包含 main 函数 程序执行将在此处开始并结束 在电脑已经安装了v
  • 【前端】node、npm、pnpm部署react项目过程中问题记录

    最近在重新部署一个前后端分离的项目时 在前端环境这里遇到了一些麻烦 通过百度找到的node npm pnpm的处理情况不尽相同 没能很准确地解决到问题 经过多次的尝试才自己得到结论 现在记录一下操作过程中遇到的问题 1 目标是成功安装pnp
  • this action could not be completed. Try again

    问题描述 直接在organiser点击upload to app store出现 this action could not be completed Try again 解决办法 1 打开xcode 2 选择xcode gt open d
  • 基于Ambari 2.6 hdp2.6 集成Redis5.0.0

    1 将Redis组件纳入Amabri集群 查看hdp版本 hdp select status hadoop client 得到hadoop client 2 6 5 0 292 可知hdp版本为2 6 主节点上 cd var lib amb
  • Elasticsearch 搜索数量不能超过10000的解决方案

    目录 一 问题描述 二 问题分析 三 解决方案 3 1 调大index max result window 不推荐 3 2 cardinality 不推荐 3 3 track total hits 推荐 一 问题描述 开发环境 JDK1 8
  • 【STM32F4】STM32F407+ESP8266连接机智云过程详解

    要求 通过手机上的机智云通用APP 点亮开发板载LED0 LED1 摘要 硬件组成 STM32F407ZGT6 esp8266 乐鑫 软件APP 机智云开发都者中心下载的通用APP Demo Xcom串口调试助手 Keil V5 调试过程详
  • mui实现表格

    mui的css文档中没有向bootstrap中类似的写好的样式供调用 但是用table显示表格本身就不难看 再写一些CSS类完全可以放到网页中 下面提供代码
  • ROS2中创建 Python 和 C++包

    创建 Python 包 在本教程中 您将学习如何创建和设置 ROS2 Python 包 我将向您展示每一步 并解释文件之间的关系 在哪里编写节点 如何添加启动文件等 设置 ROS2 Python 包 Python包内文件说明 package
  • 进程管理详解

    1 进程 进程就是出于执行期的程序 但是进程并不仅仅局限于一段可执行的代码 通常进程还要包括其他资源 像打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间及一个或多个执行线程 当然还包括用来存放全局变量的
  • idea工具基础配置(Mac)

    用于个人在初次使用idea时 做一些基础配置 便于后续快速开发 此文章不涉及快捷键设置 若需要快捷键设置可查看其他链接 idea Mac 快捷方式设置 快捷键改为eclipse 1 idea背景颜色 intelliJ IDEA gt pre
  • (每日一练)MATLAB数据拟合

    今天就的学习内容是数据拟合 数据拟合也称为曲线拟合 是一种把现有数据透过数学方法来代入一条数式的表示方式 科学和工程问题可以通过诸如采样 实验等方法获得若干离散的数据 根据这些数据 我们往往希望得到一个连续的函数 也就是曲线 或者更加密集的
  • SpringMVC学习笔记

    springMVC简单入门 快速搭建 pom xml依赖
  • JQuery DOM

    操作文本 常用方法 代码实现 div 我是div div
  • 用Python赚钱的4个大招,女程序员做副业躺赚

    关于穷 去年有了一个更学术的说法 隐形贫困人口 就是因为有太多 种草达人 让我们为了物质生活超前消费 再加上不理财的话 那简直是雪上加霜 看到知乎上面最近有一个很火的问题 90后的你 现在拥有多少存款 你会看到人生百态 有人父母双亡 白手起
  • Docker : Docker镜像的分层结构

    1 美图 2 概述 3 base镜像 base 镜像简单来说就是不依赖其他任何镜像 完全从0开始建起 其他镜像都是建立在他的之上 可以比喻为大楼的地基 docker镜像的鼻祖 base 镜像有两层含义 不依赖其他镜像 从 scratch 构
  • Github 如何设置 master 为默认分支

    起因 github 新版本上线之后 原默认分支为 master 现在统一改为了 main 我不禁产生疑问 为什么要改呢 原因大概是漂亮国农奴历史遗留问题导致的 master 奴隶主 slaver 奴隶 解决方法 我们已经习惯以 master
  • 算法:优先队列-理论

    目录 优先队列 我们平时比较常见的优先队列的场景有什么 优先队列的实现机制 java的优先队列是怎么实现的 优先队列 我们先回忆一下什么是队列 队列 一种先进先出的数据结构 主要关注点在于先入的元素
  • 【初级计量经济学】内生性问题——工具变量法(Stata实现)

    目录 1 数据来源以及变量详目 1 1变量一览表 1 2数据描述性统计 2 模型设定以及初步回归 2 1 OLS 模型 2 2 回归结果 2 3 回归结果分析 内生性问题校正 1工具变量法 2 两阶段最小二乘 3 豪斯曼检验 stata手工
  • 智能机器人用什么语言编程

    智能机器人用什么语言编程 对于很多家长们来说 他们的任务之一就是培养孩子的学习 很多的家长在培养孩子的学习方面可以说是十分的重视的 会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家长对于
  • servlet / jsp 学习——java,关系,区别,核心概念,代码例子

    互联网三大基石 HTTP HyperText Transfer Protocol 传输数据 URL Uniform Resource Locator 定位数据 HTML HyperText Markup Language 显示数据 serv