jsp、el、hstl

案例1:在页面中展示所有的商品信息,但不能使用jsp脚本
技术分析:jsp/el/jstl
jsp:
java 服务页面
作用:将内容的生成和信息的展示分离开来
运行在服务器端,本质就是servlet,产生相对应的class和java文件  work目录


jsp的脚本:
<%....%> java代码片段
<%=...%> 输出表达式 相当于out.print()
<%!...%> 声明成员
jsp的指令:
作用:声明jsp页面的属性和动作
格式:<%@ 指定名称 属性="值" 属性="值"%>


指令的分类:
page指令:声明jsp页面的属性
重要的3个指令:
contentType:设置响应流的编码,以及通知浏览器用什么编码打开,设置文件的mimeType
pageEncoding:设置页面的编码
import:导入所需要的包


contentType和pageEncoding的联系:
若两者都出现的时候各自用各自的编码
若只出现一个的时候,两个都使用出现的编码
若两者都不出现,使用服务器默认的编码:iso-8859-1


需要了解的指令:
language:当前jsp页面可以嵌套的语言
buffer:设置jsp页面的流的缓冲区大小
autoFlush:是否自动刷新
extends:声明当前jsp的页面继承属于哪个类,必须继承httpServlet及其子类
session:设置jsp页面是否可以使用session属性
isElignored:是否忽略el表达式
errorpage:当前jsp页面出现错误异常时跳转的jsp页面
isErrorPage:当前jsp是否是错误页面,若为true,可以使用jsp页面的一个内置对象Exception






include指令:静态包含
将其他页面或者servlet的内容包含进来,一般进行编译运行,生成一个java文件
格式:<%@ include file = "相对路径或者是内部路径" %>




路径:


相对路径:
./ 或者什么都不写表示 当前路径
../ 表示上一级路径
绝对路径:
带协议和主机的绝对路径
不带协议和主机的绝对路径
/项目名/资源
内部路径
不带协议和主机的绝对路径去掉项目名
请求转发  静态包含  动态包含


tablib指令:导入标签库
格式:<%@ taglib prefix="前缀名" url="空间名称" %>
若导入之后
<前缀名:标签名>
例如: <c:if test="">输出内容</c:if>




注意:一个页面可以出现多个指令(不冲突)
指令可以写在任何一个位置,一般写在jsp页头




jsp的内置对象:***(9大内置对象)
在jsp页面上可以直接使用的对象
内置对象    类型


out------------JspWriter


request--------httpServletRequest


response-------httpServletResponse


session--------httpSession


exception------Throwable


page-----------servlet


config---------ServletConfig


application----ServletContext


pageContext----PageContext


jsp里的域对象:理解
application  整个项目
session     一次会话
request      一次请求
pageContext  一个页面


pageContext:
1.是域对象
xxxAttribute(...,int scope);
2.操作其他对象
xxxAttribute(...,int scope);
scope取值:
APPLICATION_SCOPE
SESSION_SCOPE
REQUEST_SCOPE
PAGE_SCOPE
3.获取其他内置对象
getXXX();
getRequest();获取request内置对象
4.便捷查找
findAttribute(String key)
依次从pageContext,request,session,application 从小到大四个域中查找
相应的属性,若查找到了返回值并结束该次查找
若找不到返回null;


jsp的动作标签:
<jsp:forward>:请求转发
相当于java中的 request.getRequestDispatcher().forward
<jsp:inculde>:动态包含


el:
jsp的内置表达式语言 从jsp2.0开始
用来替代<%=...%>


作用:
1获取域中数据****



获取简单数据
${pageScope|requestScope|sessionScope|applocationScope.属性名}
${属性名}:依次从pageContext request session applocation查找 找不到返回" "


获取复杂数据
获取数组中的数据
${域中的名称[index]}
获取list中的数据
${域中的名称[index]}
获取map中的数据
${域中的名称.键名}


javabean导航
java语言编写的一个可重用的组件
狭义上来讲就是我们编写的一个平通的java类,例如user
javabean规范:
1.必须是一个公共的具体类:public static
2.必须提供私有的字段 private String id
3.提供公共访问字段的方法 get|set|is 方法
一旦有公共方法后,get|set之后的内容必须将首字母小写,将这个东西称之为bean属性
4.提供无参构造器
5.一般实现序列化接口 serializable
${user.id} 格式:${javabean名称.属性}




注意:若属性名中出现了".","-","+"等特殊符号,需要使用scope获取
${requestScope["user.age"] }




2执行运算***
四则运算  关系运算  逻辑运算
注意:
+ 只能进行加法运算,字符串形式的数字可以进行加法运算
empty:判断一个容器的长度是否为空{list.map.对象等}
${empty 域中名称}
三元运算:${3>4?"yes":"no"}






3获取常见的web对象


4调用java方法


格式:
${el表达式}


el内置对象:
pageScope
requestScope
sessionScope
applicationScope


param
paramValues


header
headerValues


initParam


cookie***
pageContext***


注意:
除了pageContext其他对象获取的全是map集合.


了解:
和参数相关的el内置对象
param
paramValues


和请求头相关的el内置对象
header
headerValues


和全局初始化参数相关的el内置对象
initParam


cookie内置对象:
${cookie名称.key.value}


${cookie名称}:获取map集合{key=value}


${cookie名称}:获取相当于${username=new Cookie("username","lisi")}


相当于map中的key是cookie的值
value是cookie的value


常见api:
getName()
getValue()


jstl:
jsp标签库
apache
用为代替java脚本
<%


if(){}else(){}


%>


使用步骤:
1.导入jar包(jstl.jar和standard.jar)
2.在页面上导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


jstl分类:
core:核心类库
c:if 判断**
<c:if test="${el表达式 }">
满足条件时输出
</c:if>


<c:if test="${3<5 }">
3小于5
</c:if>


c:forEach循环**
格式1:
<c:forEach begin="从哪里开始" end="到哪里结束" step="步长" var="变量名" varStatus="循环状态变量">
${i}
</c:forEach>


varStatus:用来记录循环的状态
常用的属性:
count:记录次数
current:当前遍历的内容


<c:forEach begin="1" end="20" step="2" var="i" varStatus="vs">
${i}---${vs.count}---${vs.current}<br>
</c:forEach>


格式2:
<c:forEach items="${el获取域中的容器}" var="i"></c:forEach>




c:set
c:choose c:when c:otherwise




fmt:格式化/国际化




xml:过时
SQL:过时


函数库:很少使用
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>




jsp注释:
html注释: <!--  -->
注释的内容只有在页面上看不到  java代码和html源码都有


java注释://
只有在java代码中存在


jsp注释:<-- -->
只有在jsp页面中存在,翻译成java文件之后就没有了





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值