JSP EL JSTL
Contents
1 | <html> |
jsp 处理
- 浏览器发送HTTP请求给服务器
- 服务器识别出这是对JSP的请求,并将该请求传递给JSP引擎,
- JSP引擎从磁盘载入JSP文件,然后将他们转换为Servlet。
- JSP引擎将servlet编译成可执行类,并且将原始请求传递给Servlet引擎。
- Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。
Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到您的浏览器中。
JSP 生命周期
编译阶段:
servlet容器编译servlet源文件,生成servlet类
初始化阶段:
加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
执行阶段:
调用与JSP对应的servlet实例的服务方法
销毁阶段:
调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例
属性范围
1 | page: 只在一个页面中保存属性,跳转之后无效。 |
JSP 语法
脚本程序的语法格式<% 代码片段 %>
如果要正常显示中文,在JSP 文件头添加
1 | <%@ page language="java" contentType="text/html"; charset=UTF-8 pageCoding="UTF-8"%> |
JSP 声明
一个声明语句可以声明一个或者多个变量方法,供后面Java代码使用
1 | <%! declaration; [ declaration; ]+ ... %> |
JSP 表达式
JSP的表达式先被转化为String, 然后插入到表达式出现的地方 不用分号结束表式。
1 | <%= 表达式%> |
JSP注释
1 | <%--zhushi--%> |
JSP 指令
1 | <%@ directive attribute="value"%> |
JSP 行为
1 | <jsp:action_name attribute="value" /> |
JSP 隐藏对象
七大对象
Request Response Out Session Application Config PageContext Page Exception
MIME
(Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
JSP 标准标签库 (JSTL)和EL表达式
EL(Expression Language) 表示式语言
EL表达式的主要作用
- 获取数据 。EL 表达式主要用于替换JSP页面的脚本表达式,以从各种类型WEB作用域中检索Java对象,获取数据
- 执行运算。利用EL 表达式进行基本的关系运算,逻辑运算 ,算术运算。
- 获取WEB 开发常用对 。EL 表达式定义了一些隐式对象。
EL表达式以${ }定义 结构如下
1 | ${expression} ${x+y} |
EL 表达式可以返回任意类型的值,如果返回一个带属性的值,用 . 或者 [ ] 访问其属性。如果 class.propertyName 的propertyname不是Java变量名,则只能使用[]运算符。要访问HTTPSession 可以 /获取HTTpsession的Id
1 | ${pageContext.session} ${pageContext.session.id} |
EL表达式运算符
1 | + - * / % &&和and ||和or !和not == != >= <= < > |
EL的11个隐式对象
- pageContext JSp的上下文对象
- param 一个包含所有请求参数并用参数名做key的map ${param.name} 取出参数
- paramValues一个包含所有请求参数并用参数名做key的map 检索一个字符串数组而不是单个的值
- header 包含请求标题 并用标题名做key 的map
- headerValues 包含请求标题 并用标题名做key 的map 是个数组
- cookie 包含当前请求对象cookie对象的map
- initparam 包含所有环境初始化参数
- pagescope map 包含页面域内所有属性
- requestscope map 包含请求域内所有属性
- Sessionscope map 包含会话域内所有属性
- applicationscope map 包含应用程序上下文域内的所有属性
JSTL
有五个类别,分别是 核心标签(包含web常见工作,循环,输入输出等),格式化标签(语言区域,消息,数字,日期格式化),SQL 标签(访问数据库),XML标签(访问xml文件),函数标签(集合长度 字符串操作)
1 | <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%> |
通过上述方式引入标签
Core 标签库
14个标签被分成4类
- 多用途核心标签 <c:out> <c:set> <c:remove> <c:catch>
- 条件控制标签 <c:if> <c:choose><c:when> <c:otherwise>
- 循环控制标签 <c:foreach> <c:fortokens>
- URL相关标签 <c:import> <c:url><c:redirect><c:param>
#####<c:out> 用于显示数据
1 | <c:out value=${sessionScope.username} default="游客"> |
<c:set> 为变量赋值
1 | var 表示创建的变量名 |
<c:remove> 删除scope中的值
1 | <c:remove var="username" scopre="page"/> |
<c:if> 对条件进行测试
1 | test 判断条件 var 保存判断结果的变量名为true或者false scope 范围 |
<c:choose> <c:when> <c:otherwise>
复杂的判断条件用上面三个 choose只作为父标签存在,另外两个是子标签
when标签等价于if标签
1 | <c:choose> |
<c:foreach> 循环控制
1 | begin 开始条件 end 结束条件 step 步长 items集合的遍历对象 |
<c:fortokens>使用分隔符分隔指定的字符串
1 | delims 分隔符 |
<c:import>包含另一个标签
1 | <c:import url="title.jsp"/> |
c:url 组合一个正确的url地址
核心标签
是最常用的JSTL 标签, 引用核心标签库的语法如下
1 |
1 | <c:out> 在JSP 中显示数据 <c:set> 用于保存数据 <c:remove> 删除数据 |
格式化标签
1 | <%@ taglib prefix="fmt" |
Author: corn1ng
Link: https://corn1ng.github.io/2017/10/03/jsp的副本/
License: 知识共享署名-非商业性使用 4.0 国际许可协议