【JavaWeb】学习笔记——JSP
概念
全称:Java Server Pages, Java服务端页面
描述:一种动态的网页技术,可以在其中定义HTML、JS、CSS等静态内容,以及Java代码的动态内容
说明:JSP = HTML + Java
作用:简化开发,避免了在Servlet中直接输出 HTML 标签
原理:JSP本质上就是一个Servlet。在被访问时,由JSP容器(Tomcat)将其转换为Java文件(Servlet),在由JSP容器将其编译,最终对外提供服务的其实就是这个字节码文件

快速入门
- 导入JSP坐标
<dependency>
<groupld>javax.servlet.jsp</groupld>
<artifactld>jsp-api</artifactld>
<version>2.2</version>
<scope>provided</scope>
</dependency>
- 创建 JSP文件
- 编写 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的更多相关文章
- JavaWeb学习笔记——jsp基础语法
1.JSP注释 显式注释 <!-- 注释内容 --> 隐式注释,隐式注释在客户端无法看见 // /* */ <% 注释内容 %> 2.Scriptlet(小脚本程序) 所有嵌入 ...
- JavaWeb学习笔记——JSP标准标签库JSTL
- JavaWeb学习笔记——jsp:setproperty和getproperty
- JavaWeb学习笔记——jsp内置对象
- JavaWeb学习笔记总结 目录篇
JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- #学习笔记#JSP数据交互
#学习笔记#JSP数据交互 数据库的使用方式: 当用户在第一个页面的查询框输入查询语句点提交的时候我们是用什么样的方式完成这个查询的? 答:我们通过在第一个页面提交表单的形式,真正的数据库查询时在 ...
- 学习笔记|JSP教程|菜鸟教程
学习笔记|JSP教程|菜鸟教程 ------------------------------------------------------------------------------------ ...
- javaweb学习5——JSP
声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...
- javaweb学习笔记(二)
一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...
随机推荐
- Redis 15 主从复制
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 主从复制 ...
- Shell 脚本报错 line x: [xxx: command not found
[root@VM-0-6-centos sh_scripts]# bash val.sh username: hello world! val.sh: line 5: [hello: command ...
- 在微信小程序中,如何获取 for 循环的 index
微信小程序中,for 循环的 index(索引值)可以用wx:for-index="index"来获取. <view class="item" wx:fo ...
- CSS 选择器(一):属性选择器
属性选择器的介绍 属性选择器顾名思义就是通过标签的属性来查找标签的选择器.让我们来回忆一下标签的属性是什么?HTML5 的所有标签共同拥有的属性叫作全局属性,除此之外还有标签自己拥有的属性,就叫作私有 ...
- Html5新增内容标签
<canvas>画布</canvas> <audio src=""></audio> <video src="&qu ...
- VS2019 Community社区版登录提示:我们无法刷新此账户的凭证 解决方法
最正确的方式: 1.点击 帮助-->发送反馈-->报告问题 2.点击 检查新的许可证 ,即可登陆成功 3.如果提示:无法下载或者下载失败. 4.那么就需要在左边 账户选项 中将 嵌入式We ...
- 《Java编程思想》读书笔记(五)
前言:本文是<Java编程思想>读书笔记系列的最后一章,本章的内容很多,需要细读慢慢去理解,文中的示例最好在自己电脑上多运行几次,相关示例完整代码放在码云上了,码云地址:https://g ...
- 【Android 逆向】手动构造dex文件
public class Hello { public static void main(String[] args) { System.out.println("hello android ...
- 阿色全息脑图,及制作软件AHMM
阿色全息脑图 AHMM 全息脑图是按照大系统观原理开发的新型思维工具,用于升维思考. 让您以系统的观点看待世界,专注系统的结构信息--全息,抓住事物的本质,透过表象和数据发现规律. 世间每项事物都是一 ...
- [Python]-pydicom模块处理DICOM数据
在处理医疗数据时,经常要跟DICOM文件打交道.在使用Python处理时,不得不提常用的pydicom模块. import pydicom DICOM文件读取 pydicom.read_file()读 ...