【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 ...
随机推荐
- DolphinScheduler 在绿瘦的实践成果,开启了我的开源之路!
点击上方 蓝字关注我们 ✎ 编 者 按 2021 年,Apache DolphinScheduler 社区又迎来了新的蓬勃发展,社区活跃度持续提高.目前,项目 GitHub Star 已达 6.7k, ...
- 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x00 前言 ...
- 分布式版本控制系统Git的使用;
1.什么是Git Git是一个分布式的版本控制软件: 软件,类似于qq.office等安装到电脑才能使用的工具. 版本控制,类似于毕业论文,视频剪辑等需要反复修改和保留原历史数据: 分布式 文件夹拷贝 ...
- 【NOI P模拟赛】混凝土粉末(整体二分)
题面 样例输入 5 8 1 1 4 2 2 3 1 2 3 3 1 2 5 1 2 3 3 2 5 2 2 1 2 2 1 3 样例输出 1 0 4 0 1 0 样例解释 题解 比这道题简单了不知多少 ...
- 【碳硫磷模拟赛】消失的+和* (树形DP)
好久没做过这么恶心的DP题了 题面 题面很简单,有一个计算式,由+号.*号.括号和小于10的正整数组成,现在所有的+和*(由于属于违禁词而)都被-号给和谐掉了,现在要求所有可能的原计算式的结果之和. ...
- python必备基础
1. 基础函数 序号 函数 说明 1 print() 打印 2 input() 输入 3 int() 转化为整形 4 float() 转化为浮点型 5 str() ...
- 图床搭建|chrome插件|操作简单不要钱
为什么需要一个图床 为了写博客 图床:专门用来存放图片,同时允许你把图片对外连接的网上空间. 用markdown格式写作,插入图片需要图片的url地址,然后博客的背景图也是要用url地址. 有段时间, ...
- 【面试题】Vue中的$router 和 $route的区别
Vue中的$router 和 $route的区别 点击视频讲解更加详细 this.$route:当前激活的路由的信息对象.每个对象都是局部的,可以获取当前路由的 path, name, params, ...
- D - Distinct Trio
D - Distinct Trio 题意:求三个数个各不相同的数目. 题解:正面考虑比较困难,可以反向思考,在总值上减去不符合的即可 #include<bits/stdc++.h> usi ...
- alter role 导致的数据库无法登录问题
ALTER ROLE 用于更改一个数据库角色.只要改角色后续开始一个新会话,指定的值将会成为该会话的默认值,并且会覆盖 kingbase.conf中存在的值或者从命令行收到的值. 显性的更改角色的一 ...