关于jsp/el/jstl

jsp el jstl
jsp: Java服务器页面
作用:将内容的生成和信息的展示分离出来,运行在服务器端,本质就是servlet,产生相对应的class和java文件放在work里
jsp的脚本
<%....%> java程序片段,生成在jsp的service方法中
<%=....%> 输出表达式,生成在jsp的service方法中,不能以“;”结尾,相当于Java中调用 了out.print()
<%!....%> 声明成员,成员位置
jsp的指令
作用:声明jsp页面的一些属性和动作
格式:<%@ 指令名称 属性 = ”值“ 属性 = ”值“ %>
指令的分类:
page:主要是声明jsp的一些属性
include:静态包含
taglib:导入标签库
注意:一个页面可以出现多个指令,指令可以写在任意位置,一般放在页面最上面

page指令
重要的三个属性:
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="相对路径或内部路径"%>
例如:<%@include file="/jsp/include/i2.jsp" %>

路径:
相对路径: ./ 或者什么都不写:当前路径
上一级路径 ../
绝对路径:
带协议和主机的绝对路径
不带协议和主机的绝对路径
/项目名/资源
内部路径:
不带协议和主机的绝对路径去掉项目名称
请求转发 静态包含 动态包含
taglib指令 :导入标签库
格式:<%@taglib prefix="前缀名" url="名称空间"%>
若导入之后
<前缀名 : 标签名>
例如:<c:if test="">输出内容</c:if>

jsp的内置对象:***(9大内置对象)
在jsp页面上可以直接使用的对象
内置对象 类型
out JspWriter
request HttpServletRequest
response HttpServletResponse
session HttpSession
exception Throwable
page servlet
config ServletConfig
aplication ServletContext
pageContext PageContext

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

pageContext:
1.域对象
xxxAttribute(...,int scope);
2.操作其他对象
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().foward;
<jsp:include>:动态包含
将被包含的页面或者servlet的运行结果包含到当前页面中

el :jsp的内置表达式语言,从jsp2.0开始用,用来替代<%=...%>
作用:
1,获取域中的数据****
2,执行运算***
3,获取常见的web对象
4,调用Java方法
格式:${el表达式}

获取域中数据
注意:**
若属性名中出现了“ . ”或者“-”,“+”等特殊符号,需要使用scope获取
${requestScope["user.age"]}
获取简单数据: key value
${pageScope| requsetScope| sessionScope| application.属性名}
${属性名}
若查找 ,不到返回” “

获取复杂数据
获取数组中的数据
${域中的名称[index]}
获取list中的数据
${域中的名称[index]}
获取map中的数据
${域中的名称 . 键名}
javabean导航
javabean:java语言编写的一个可重用的组件
狭义上来说就是一个普通java类例如:user
javabean规范:
1,必须是一个公共的具体类 public class
2,提供私有的字段 private String name;
3,提供公共访问字段的访问方法 get|set|is 方法
一旦有公共方法之后, get|set|is 方法必须将首字母小写,将这个东西称之为
bean属性。
4,提供一个无参的构造器
5,一般实现序列化接口 serializable
${javabean名称 . bean属性}

执行运算:
四则运算,关系,逻辑
注意:
+:只能进行加法运算,字符串形式的数字可以进行加法运算
empty:判断一个容器的长度是否为0(array set list map)
还可以判断一个对象是否为空:
${empty 域中的对象名称}
三元运算符
el的内置对象(了解)
11个:
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
initParam
cookie ***
pageContext
注意:除了pageContext其余参数获取的都是map集合
了解:和参数相关的el内置对象
param
paramValues
了解:和请求头相关的el内置对象
header
headerValues
了解:和全局初始化参数相关的el内置对象
initParam
内置对象cookie
${cookie名称}:获取map集合{key=value}
Cookie c=new Cookie("username","lisi")
${cookie名称}:获取相当于:
${username=new Cookie("username","Tom")}
相当于map中的key是cookie的值
map中的 value是当前cookie
若想获取名称username的cookie的value(获取list)
${cookie.username.value}
cookie常见的API
getName()
getValue()

jstl:jsp的标签库
用来代替java脚本
<%
if(){}else{}
%>
使用步骤;
1,导入jar包(jstl.jar 和 standard.jar)
2,在页面上导入标签库
<%@taglib prefix=" " uri=" "%>
jstl分类:
core:核心内库
fmt:格式化 | 国际化
xml:过时了
sql:过时了
函数库:很少使用
core:核心内库
c:if ***
c:foreach ***
c:set
c:choose c:when c:otherwise
c:if:判断
<c:if test=" ${el表达式} ">满足的时候输出的内容</c:if>
例如:
<c:if test="${3<4}">
3小于4
</c:if>
c:foreach:循环
格式1:
<c:foreach begin=“从哪里开始” end=“到哪里结束”
setp=“步长” var=“变量名” varStatus=“循环状态变量”>
</c:foreach>

varStatus:用来记录循环的状态
常用的属性:
count:记录次数
current:当前的遍历内容
例如:
<c:forEach begin="1" end="20" step="2" var="i" varStatus="vs">
<br/>${i}----${vs.count}----${vs.current}<br/>
</c:forEach>

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

函数库

jsp注释:
html注释<!-- -->注释的内容只有页面上看不到 java代码和html源码都有
Java注释 // 只有Java代码中存在
jsp注释 <-- -->只在jsp页面中存在,翻译成Java文件就不存在了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值