JSP本质是一个类,说明这个JSP里面可以书写java代码,具体书写方式有三种。
-
<% 代码 %>
:代码段,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。 -
<%! 代码 %>
:声明,在jsp转换后的java类的成员位置。 -
<%= 代码 %>
:表达式,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么
演示JSP三种脚本的使用
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<%-- 在浏览器页面输出 --%>
<%=1%>
<%-- 在idea工具的控制台输出 --%>
<% System.out.println(2);%>
<%-- 成员变量的定义 --%>
<%! int i = 1;%>
<% int b = 2;%>
- html注释:
<!-- -->
:只能注释html代码片段
- jsp注释:推荐使用
<%-- --%>
:可以注释所有
为了简化Web应用程序的开发,JSP 2.0规范中提供了9个内置对象,它们是JSP默认创建的,可以直接在JSP页面中使用。
| 名称 | 类型 | 描述 |
| — | — | — |
| out | javax.servlet.jsp.JspWriter | 用于页面输出 |
| request | javax.servlet.http.HttpServletRequest | 得到用户请求信息 |
| response | javax.servlet.http.HttpServletResponse | 服务器向客户端的回应信息 |
| config | javax.servlet.ServletConfig | 服务器配置,可以取得初始化参数 |
| session | javax.servlet.http.HttpSession | 用来保存用户的信息 |
| application | javax.servlet.ServletContext | 所有用户的共享信息 |
| page | java.lang.Object | 指当前页面转换后的Servlet类的实例 |
| pageContext | javax.servlet.jsp.PageContext | JSP的页面容器 |
| exception | java.lang.Throwable | 表示JSP页面所发生的异常,在错误页中才起作用 |
request对象是javax.servlet.http.HttpServletRequest对象的一个实例。每当客户端请求页面时,JSP引擎将创建一个新对象来表示该请求。
request对象提供了获取包括表单数据,Cookie,HTTP方法等HTTP头信息的方法。
response
对象是javax.servlet.http.HttpServletResponse
对象的一个实例。就像服务器创建request
对象一样,它还创建一个对象来表示对客户端的响应。
response
对象还定义了处理创建新HTTP头的接口。通过此对象,JSP程序员可以添加新的Cookie或日期戳,HTTP状态代码等。
out
隐式对象是javax.servlet.jsp.JspWriter
对象的一个实例,用于在响应中发送内容。
初始化JspWriter
对象根据页面是否缓存而不同地实例化。缓冲可以通过使用page
指令的buffered ='false'
属性来关闭。
JspWriter
对象包含与java.io.PrintWriter
类大部分相同的方法。但是,JspWriter
还有一些额外的方法用来处理缓冲。与PrintWriter
对象不同,JspWriter
会抛出IOExceptions
异常。
session
对象是javax.servlet.http.HttpSession
的一个实例,其行为与Java Servlet下的会话对象行为完全相同。
session
对象用于跟踪客户端请求之间的客户端会话。
application
对象是生成的Servlet
的ServletContext
对象的直接包装,实际上是javax.servlet.ServletContext
对象的一个实例。
application
对象是JSP页面在其整个生命周期中的表示。 当JSP页面被初始化时,将创建此对象,并且在JSP页面被jspDestroy()
方法删除时application
对象也将被删除。
通过向application
对象添加属性值,可以确保组成Web应用程序的所有JSP文件都可以访问它。
config
对象是javax.servlet.ServletConfig
的实例化,是生成的servlet的ServletConfig
对象周围的直接包装。
pageContext
对象是javax.servlet.jsp.PageContext
对象的一个实例。pageContext
对象用于表示整个JSP页面。
page
对象是对该页面实例的实际引用。可以认为它是表示整个JSP页面的对象。
page
对象是this
对象的直接同义词。
exception
对象是一个包含上一页抛出的异常的包装器。它通常用于生成对错误条件的适当响应。
到此为止,web开发接触到了4个域对象,这4个域对象是学习web的重点
-
pageContext(称之为page域)
-
request(称之为request域)
-
session(称之为session域)
-
application (称之为application域) 本质上是ServletContext
什么是域
域: 即范围的意思
之所以把这些对象叫做域对象 是为他们都有自己的固定的生命周期和作用域
内部是Map集合的实现 Map<String, Object>
都有 存 和 取 、删除的方法
void setAttribute(String name, Object value):用来存储数据
Object getAttribute(String name):用来获取域中的数据
void removeAttribute(String name):用来移除域中数据
| 域对象 | 生命周期 | 作用 |
| — | — | — |
| pageContext | 当期页面 | 代理其他域对象 |
| request | 一次请求 | 数据只是做显示的,看完了就没用了 (请求转发, Servlet 产生的处理结果(数据) 交给jsp显示) |
| session | 一次会话 | 保存用户特有数据 或 数据给用户看完了,一会还要用,会话结束了就没用了 |
| application | 与服务器共存亡 | 数据给一个用户用完了,别人还要用,保存所有用户共享的数据 |
域范围: pageContext <request<session<application
从小到大
概念:EL 全名为Expression Language 表达式语言
作用:
替换和简化jsp页面中java代码的编写
语法格式:
${表达式}
-
算数运算符:
+ - * /(div) %(mod)
-
比较运算符:
> < >= <= == !=
-
逻辑运算符:
&&(and) ||(or) !(not)
-
三元运算符:表达式1 ? 表达式2 : 表达式3;
-
空运算符:
empty
-
功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
-
${empty list}
:判断字符串、集合、数组对象是否为null或者长度为0 -
${not empty str}
:表示判断字符串、集合、数组对象是否不为null 并且 长度>0
演示EL表达式运算符的使用
在web根目录WebContent 中创建目录el,在该目录中创建elDemo.jsp 页面
使用EL运算符
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
算术运算符
${8+3 }
${8-3 }
${8/3 }
${8*3 }
${8%3 }
比较运算符
${3>8}
逻辑运算符
${3>1&&3>8}
三元运算符
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
总结
三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。
- 第一个是算法
关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。
而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本
《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题
《算法的乐趣》共有23个章节:
- 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)
基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)
- 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)
遍,尤其是这本**
《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题
[外链图片转存中…(img-YzDDJE1W-1711962083173)]
《算法的乐趣》共有23个章节:
[外链图片转存中…(img-uUyezZvk-1711962083174)]
[外链图片转存中…(img-eQo2O3gL-1711962083174)]
- 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)
基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)
[外链图片转存中…(img-ubmhzuzW-1711962083174)]
- 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)
[外链图片转存中…(img-VbXRN9L5-1711962083174)]