概念


全称:Java Server Pages, Java服务端页面

描述:一种动态的网页技术,可以在其中定义HTML、JS、CSS等静态内容,以及Java代码的动态内容

说明:JSP = HTML + Java

作用:简化开发,避免了在Servlet中直接输出 HTML 标签

原理JSP本质上就是一个Servlet。在被访问时,由JSP容器(Tomcat)将其转换为Java文件(Servlet),在由JSP容器将其编译,最终对外提供服务的其实就是这个字节码文件

快速入门


  1. 导入JSP坐标
<dependency>
<groupld>javax.servlet.jsp</groupld>
<artifactld>jsp-api</artifactld>
<version>2.2</version>
<scope>provided</scope>
</dependency>
  1. 创建 JSP文件
  2. 编写 HTML标签和 Java代码
<body>
<h1>hallo jsp</h1>
<% System.out.printf("jsp hello");%>
</body>

JSP 脚本


  • 用于在JSP页面内定义 Java代码
  • 分类:
    • <%...%>:内容会直接放到_jspServlet()方法之中
    • <%=...%>:内容会放到out.print()中,作为out.print()的参数
    • <%!...%>:内容会放到_jspServlet()方法之外,被类直接包含

小技巧:

<%
for(int i=0;i<brands.size();i++){
Brand brand = brands.get(i);
}
%>
<tr align="center">
<td>1</td>
<td>三只松鼠</td>
<td>三只松鼠</td>
<td>100</td>
<td>三只松鼠,好吃不上火</td>
<td>启动</td>
<td><a href="#">修改</a><a href="#">删除</a></td>
</tr>
<%
}
%>

说明:<%...%>标签是可以分段的,这样写,只是为了让我们更直观的知道get后值赋给谁

JSP 缺点


  • 由于JSP页面内,既可以定义 HTML 标签,又可以定义 Java代码,造成了以下问题:

    1.书写麻烦;特别是复杂的页面

    2.阅读麻烦

    3.复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE...

    4.占用空间和磁盘:JSP会自动生成 .java 和 .class文件占用磁盘,运行的是.class文件占内存

    5.调试困难:出错后,需要找到自动生成的.java文件进行调试

    6.不利于团队协作:前端人员不会 java,后端人员不精 HTML

    7.xxx

EL 表达式


全称:Expression Language 表达式语言,用于简化 JSP页面内的Java代码

主要功能:获取数据

语法

${expression}
//例子
${brands}//获取域中存储的key为brands的数据

JavaWeb中的四大域对象:

1.page:当前页面有效

2.request:当前请求有效

3.session:当前会话有效

4.application:当前应用有效

el表达式获取数据,会依次从这4个域中寻找,知道找到为止

JSTL 标签


全称:JSP标准标签库(Jsp Standard Tag Library),使用标签取代JSP页面上的Java代码

//例子
<c:if test="${flag == 1}"> 男 </c:if>
<c:if test="${flag == 2}"> 女 </c:if>

JSTL 库中有很多不同的标签,这里就只说明两个最常用的标签。

其他可点击链接查阅:https://www.runoob.com/jsp/jsp-jstl.html

快速入门

<c:if>

用来完成逻辑判断,也就是替换Java 代码中的if else

<c:if test="true">
<h1>true</h1>
</c:if> <c:if test="false">
<h1>false</h1>
</c:if>

当test为中值为ture时,就会执行其包裹的代码块里的代码

一般会和EL表达式配合使用,EL表达式获取数据,<c:if>标签做逻辑判断

<c:froEach>

MVC 模式


MVC 是一种分层开发的模块,其中:

  • M:Model,业务模型,处理业务
  • View,视图,界面展示
  • Controller,控制器,处理请求,调用模型和视图

MVC 好处

  • 职责单一,互补影响
  • 有利于分工协助
  • 有利于组件重用

类似于三层架构

【JavaWeb】学习笔记——JSP的更多相关文章

  1. JavaWeb学习笔记——jsp基础语法

    1.JSP注释 显式注释 <!-- 注释内容 --> 隐式注释,隐式注释在客户端无法看见 // /* */ <% 注释内容 %> 2.Scriptlet(小脚本程序) 所有嵌入 ...

  2. JavaWeb学习笔记——JSP标准标签库JSTL

  3. JavaWeb学习笔记——jsp:setproperty和getproperty

  4. JavaWeb学习笔记——jsp内置对象

  5. JavaWeb学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  6. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  7. #学习笔记#JSP数据交互

    #学习笔记#JSP数据交互 数据库的使用方式:   当用户在第一个页面的查询框输入查询语句点提交的时候我们是用什么样的方式完成这个查询的? 答:我们通过在第一个页面提交表单的形式,真正的数据库查询时在 ...

  8. 学习笔记|JSP教程|菜鸟教程

    学习笔记|JSP教程|菜鸟教程 ------------------------------------------------------------------------------------ ...

  9. javaweb学习5——JSP

    声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...

  10. javaweb学习笔记(二)

    一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...

随机推荐

  1. Word 的页眉、页脚、页码分别是什么?怎么设置?

    页眉:在 Word 文档中,每个页面的顶部区域为页眉.常用于显示文档的附加信息,可以插入时间.图形.公司微标.文档标题.文件名或作者姓名等. 页脚:页脚与页眉的作用相同,都可以作为显示文档的附加信息, ...

  2. bind搭建内网DNS服务器架构(主从、子域授权、DNS转发器)

    实验目的 模拟企业DNS服务架构服务器及原理 实验环境准备 实验架构图 实验设备 DNS服务器4台 主服务器master(centos8):IP_192.168.100.30, 从服务器slave(r ...

  3. ELK技术-IK-中文分词器

    1.背景 1.1 简介 ES默认的分词器对中文分词并不友好,所以一般会安装中文分词插件,以便能更好的支持中文分词检索. 本例参考文档:<一文教你掌握IK中文分词> 1.2 IK分词器 IK ...

  4. KingbaseES V8R6C5单实例sys_backup.sh备份案例

    ​ 案例说明: KingbaseES V8R6C5版本中使用了securecmdd工具,用于主机节点间的通讯,默认端口8890.备份工具sys_backup.sh默认使用了securecmdd工具,对 ...

  5. [CG] 顶点动画贴图 (Vertex Animation Texture, VAT)

    什么是顶点动画? 简单来说,通过改变网格顶点的位置,使网格变形从而做成的动画.顶点动画的灵活度要远远高于骨骼动画.骨骼动画是靠骨骼(一堆有层级结构的节点,数量应该是远远小于网格顶点的数量的)的变化来驱 ...

  6. SpringMVC--从理解SpringMVC执行流程到SSM框架整合

    前言 SpringMVC框架是SSM框架中继Spring另一个重要的框架,那么什么是SpringMVC,如何用SpringMVC来整合SSM框架呢?下面让我们详细的了解一下. 注:在学习SpringM ...

  7. Unity接入微信支付SDK 2022年版安卓篇

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...

  8. 【学习笔记】循环神经网络(RNN)

    前言 多方寻找视频于博客.学习笔记,依然不能完全熟悉RNN,因此决定还是回到书本(<神经网络与深度学习>第六章),一点点把啃下来,因为这一章对于整个NLP学习十分重要,我想打好基础. 当然 ...

  9. Containerd和Docker的关系

    联系 容器运行时(Container Runtime)是Kubernetes(k8s)最重要的组件之一,负责管理镜像和容器的生命周期.Kubelet通过Container Runtime Interf ...

  10. 【前端必会】让ESLint与Prettier一起玩耍

    背景 上回说到ESlint和Prettier可能会有规则上的冲突,解决的办法有多种,好比不用Prettier 不用Prettier也是一种选择 配置相同的规则 我们选择一种可以共存的方式 可以参考这篇 ...