25@JSP_day11
一、jsp基础
1、什么是jsp?
2、如何写一个jsp?
step1 写一个.jsp为后缀的文件
step2 添加如下的内容
1)html(css,javascript): 直接写。
2)java代码:
a, java代码片断 <% %>
b, jsp表达式 <%= %>
c, jsp声明 <%! %> 为jsp所对应的servlet增加新的属性和方法。
3)指令
a, page指令
import属性:导包
pageEncoding属性: 告诉容器, jsp文件的编码。
contentType属性: 添加response.setContentType。
session属性: true(缺省值)/false。当值为false时,对应的servlet不再创建session。
isErrorPage属性:true/false(缺省值),当值为true,表示这是一个错误处理页面。
errorPage属性: 用来指定一个错误处理页面的地址。
step1 写一个错误处理页面,在这个错误处理页面当中,一般设置isErrorPage=true,这样,才能够访问exception隐含对象。
step2 在发生错误的页面当中,使用errorPage属性指定一个错误处理页面。
isELIngnored属性: 是否忽略el表达式,true表示忽略。
b, include指令:
在.jsp文件转换成.java文件时,在该指令所在的位置插入file所指定的文件的内容。
<%@include file="head.jsp"%>
c, taglib指令:
引入标签。
4)隐含对象
a,out
b,request
c,response
d,session
e,application
f,exception:只有isErrorPage为true时,才能使用。
g,pageContext: 容器会为每一个jsp实例(jsp所对应的servlet对象)创建一个pageContext 对象,作用:
作用一:绑订数据
setAttribute,getAttribute,removeAttribute
作用二:查找其它隐含对象
该对象提供了查找其它八个隐含对象的方法。
h,config: ServletConfig对象
i, page: 相当于this,指向jsp实例本身。
5) 注释
<!--注释内容-->: 注释内容可以是java代码,该代码会执行,但是,输出的内容不会显示在浏览器端。
<%--注释内容--%>:注释的内容不能是java代码,输出的内容不会显示在浏览器端。
3、jsp如何执行
step1 .jsp文件转换成.java文件。
a, html ----> service方法里,使用out.write输出。
b, <% %> ---> service方法里,照搬。
c, <%= %> --> service方法里,使用out.print输出。
d, <%! %> ---> 为jsp所对应的servlet增加新的属性和方法。
step2 调用servlet的service方法(因为jsp已经转换成了一个servlet)。
二、jsp标签
1、什么是jsp标签
在.jsp文件当中,使用标签(类似于html标记)来代替直接编写java代码,这样做的好处是,jsp文件会更简洁,方便维护。
2、什么是el表达式
el表达式是一套计算规则,用于给jsp标签的属性赋值,在新的版本当中,也可以直接输出。
3、el表达式的基本使用
1)语法
${el表达式}
2)基本使用
a, 访问bean的属性
方式一: ${user.name}
该表达式的执行过程:
容器依次从pageContext,request,session,application这四个隐含对象中查找(比如执行request.getAttribute("user"))绑订名为"user"的对象,如果找到了,则不再向下查找,然后,调用getName方法,并输出其结果。如果找不到,输出""。
方式二: ${user["name"]},这种用法,允许[]里面是一个变量。此外,还可以允许出现从0开始的下标,用来访问数组的某个元素值。
如果要指定查找的范围:
${requestScope.user.name}
pageScope: 从pageContext查找。
requestScope,sessionScope,applicationScope
b,获得请求参数值
方式一: ${param.username}
相当于request.getParameter("username");
方式二:${paramValues.interest}
相当于request.getParameterValues("interest");
c, 计算表达式的值,输出。
算术运算: "+","-","*","/","%",但是,"+"操作不能够连接字符串。
逻辑运算: && || !
关系运算: ">",">=","<","<=","==","!="。
empty运算: 以下四种情况为true
空字符串
集合内容为空
值为null
值不存在
d,计算表达式的值,用于给标签的属性赋值。
4、jstl(标准标签库)
1)jstl是什么?
apache将一些常用的标签捐献给了sun,sun将其命名为java standard taglib。
2)jstl核心标签的使用 :
step1 将标签相关的jar文件拷贝到WEB-INF\lib
MyEclipse 5.5.1 GA\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_5.5.1\data\libraryset\JSTL1.1\lib
standard.jar jstl.jar
step2 使用taglib指令引入标签。
<c:if test="" var="" scope="">:
当test属性值为true时,执行标签体的内容。
test属性值可以使用el表达式。
var属性值指定绑订名
scope属性指定绑订值
scope的值可以是"page","request","session","application"。要注意,page指的是pageContext隐含对象。
<c:choose> <c:when test=""> <c:otherwise>
when,otherwise要放在choose里。
when可以出现多次,但otherwise只能出现一次,表示例外。
<c:forEach var="" items="" varStatus="">
var属性值指定绑订名, 绑订范围是pageContext
items属性指定要遍历的集合。
varStatus属性指定绑订名,绑订值是一个封装了当前遍历状态的对象。比如该对象的getIndex()返回遍历的对象的下标(下标从0开始),getCount()返回是第几次遍历。
5、自定义标签
6、el函数
7、自定义el函数