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,关系,区别,核心概念,代码例子 的相关文章

  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如何延迟加载嵌入在 iframe 上的 YouTube 视频?

    如何将延迟加载应用于iframe嵌入视频 我尝试添加loading eager loading auto and loading lazyload 您可以使用srcdoc你里面的属性iframe标签来加载图像 请参阅以下示例作为参考
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • 如何在 Eclipse Java 动态 Web 项目中使用 .properties 文件?

    我正在 Eclipse 中开发动态 Web 项目 我创建了一个 properties 文件来存储数据库详细信息 用户名 密码等 我通过右键单击项目和 New gt File 添加它 我使用了Java util包Properties类 但它不
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false

随机推荐

  • 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