JSP基础和EL表达式、JSTL,看懂这些帮你轻松解决就业问题年薪50万不是梦


1.3 JSP脚本


JSP本质是一个类,说明这个JSP里面可以书写java代码,具体书写方式有三种。

  • <% 代码 %>:代码段,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。

  • <%! 代码 %>:声明,在jsp转换后的java类的成员位置。

  • <%= 代码 %>:表达式,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么


案例一:


演示JSP三种脚本的使用

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

$Title$

<%-- 在浏览器页面输出 --%>

<%=1%>

<%-- 在idea工具的控制台输出 --%>

<% System.out.println(2);%>

<%-- 成员变量的定义 --%>

<%! int i = 1;%>

<% int b = 2;%>


1.4 JSP注释


  1. html注释:

<!-- -->:只能注释html代码片段

  1. jsp注释:推荐使用

<%-- --%>:可以注释所有


二、 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页面所发生的异常,在错误页中才起作用 |


2.1Request对象


request对象是javax.servlet.http.HttpServletRequest对象的一个实例。每当客户端请求页面时,JSP引擎将创建一个新对象来表示该请求。

request对象提供了获取包括表单数据,Cookie,HTTP方法等HTTP头信息的方法。

2.2 response对象


response对象是javax.servlet.http.HttpServletResponse对象的一个实例。就像服务器创建request对象一样,它还创建一个对象来表示对客户端的响应。

response对象还定义了处理创建新HTTP头的接口。通过此对象,JSP程序员可以添加新的Cookie或日期戳,HTTP状态代码等。

2.3 out对象


out隐式对象是javax.servlet.jsp.JspWriter对象的一个实例,用于在响应中发送内容。

初始化JspWriter对象根据页面是否缓存而不同地实例化。缓冲可以通过使用page指令的buffered ='false'属性来关闭。

JspWriter对象包含与java.io.PrintWriter类大部分相同的方法。但是,JspWriter还有一些额外的方法用来处理缓冲。与PrintWriter对象不同,JspWriter会抛出IOExceptions异常。

2.4 session对象


session对象是javax.servlet.http.HttpSession的一个实例,其行为与Java Servlet下的会话对象行为完全相同。

session对象用于跟踪客户端请求之间的客户端会话。

2.5 application对象


application对象是生成的ServletServletContext对象的直接包装,实际上是javax.servlet.ServletContext对象的一个实例。

application对象是JSP页面在其整个生命周期中的表示。 当JSP页面被初始化时,将创建此对象,并且在JSP页面被jspDestroy()方法删除时application对象也将被删除。

通过向application对象添加属性值,可以确保组成Web应用程序的所有JSP文件都可以访问它。

2.6 config对象


config对象是javax.servlet.ServletConfig的实例化,是生成的servlet的ServletConfig对象周围的直接包装。

2.7 pageContext对象


pageContext对象是javax.servlet.jsp.PageContext对象的一个实例。pageContext对象用于表示整个JSP页面。

2.8 page对象


page对象是对该页面实例的实际引用。可以认为它是表示整个JSP页面的对象。

page对象是this对象的直接同义词。

2.9 exception对象


exception对象是一个包含上一页抛出的异常的包装器。它通常用于生成对错误条件的适当响应。


三、JSP四大域对象


3.1、概述


到此为止,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):用来移除域中数据


3.2、域对象总结


| 域对象 | 生命周期 | 作用 |

| — | — | — |

| pageContext | 当期页面 | 代理其他域对象 |

| request | 一次请求 | 数据只是做显示的,看完了就没用了 (请求转发, Servlet 产生的处理结果(数据) 交给jsp显示) |

| session | 一次会话 | 保存用户特有数据 或 数据给用户看完了,一会还要用,会话结束了就没用了 |

| application | 与服务器共存亡 | 数据给一个用户用完了,别人还要用,保存所有用户共享的数据 |

域范围: pageContext <request<session<application

从小到大


四、EL表达式


4.1、概述


概念:EL 全名为Expression Language 表达式语言

作用

替换和简化jsp页面中java代码的编写

语法格式:

${表达式}

4.2、EL表达式使用


4.2.1 运算


  • 算数运算符: + - * /(div) %(mod)

  • 比较运算符:> < >= <= == !=

  • 逻辑运算符:&&(and) ||(or) !(not)

  • 三元运算符:表达式1 ? 表达式2 : 表达式3;

  • 空运算符:empty

  • 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0

  • ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0

  • ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0

案例4:


演示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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。

  • 第一个是算法

关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。

而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本

《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

《算法的乐趣》共有23个章节:

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

  • 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)

基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

遍,尤其是这本**

《算法刷题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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值