您的位置:首页 > Web前端 > JavaScript

JSP基础和EL表达式核心标签

2015-12-05 14:51 344 查看
jsp基础
(1)什么是jsp?
(2)如何写一个jsp?
1)html(css,js) 直接写。
2)java代码
a. java代码片断
<% java代码 %>
b. jsp表达式
<%= java表达式 %>
c.jsp声明 (a1.jsp)
<%! %>
3)指令
a.什么是指令
b.page指令
import属性
pageEncoding属性
contentType属性
session属性(a2.jsp): true(缺省)/false,当值为
false,就不能使用session隐含对象了。
errorPage属性(a3.jsp,a4.jsp):
指定一个异常处理页面。
isErrorPage属性:true/false(缺省值),当值
为true时,表示这是一个异常处理页面,
此时,可以使用exception隐含对象。
c.include指令
file属性:告诉容器,在将jsp文件转换成
servlet类时,将file属性指定的文件的
内容包含进来。
比如
<%@include file="header.jsp"%>
d.taglib指令
引入jsp标签。
4)隐含对象
a.什么是隐含对象
b.为什么可以直接使用这些对象
c.有哪些隐含对象
out
request
response
session
application
exception: 必须设置isErrorPage=true时才能
使用。
pageContext(a1.jsp,a2.jsp):容器会为每一个jsp实例创建唯
一的一个符合PageContext接口要求的
对象。该对象有两个特点:
唯一性:一个jsp实例分配一个pageContext
持久性:只要jsp实例还在,pageContext
就一直存在。
作用1:
绑订数据 setAttribute getAttribute removeAttribute
作用2:
获得其它所有隐含对象
config(a3.jsp):ServletConfig
page: jsp实例本身。
5)注释 (a4.jsp)
a.<!--注释--> 如果注释的内容是java代码,
会执行。
b.<%--注释--%> 如果注释的内容是java代码,
不会执行。
(3)jsp是如何执行的?
step1,容器要将jsp文件转换成一个servlet类。
html(css,js) ------> service方法,out.write()
<% %> -----> service方法,照搬。
<%= %> -----> service方法,out.print()。
<%! %> -----> 为servlet类增加新的成员
变量或者方法。
step2,调用该servlet。

2.jsp标签和el表达式
(1)什么是jsp标签
jsp标签类似于html标签(有开始标记,结束标记,有
属性),用来替换jsp中的java代码。
注:
a.直接在jsp文件当中写java代码,不方便jsp
文件的维护,比如,将包含有java代码的jsp
交给美工来修改就很不方便。
b.jsp标签其实就是一个占位符,容器遇到jsp
标签之后,会找到对应的标签类然后执行。
c.使用jsp标签之后,jsp方便美工修改,也利于
代码的复用(将一些常用的java代码封装成jsp标签,
以后就可以重复使用了)。
(2)什么是el表达式
是一套简单的运算规则,计算的结果用于给标签
的属性赋值,也可以直接输出。
(3)el表达式的使用
1)访问bean的属性 (e1.jsp)
方式一
${user.name} 依次从pageContext,request,
session,application查找绑订名称
为"user"的对象,找到之后,会
调用该对象的"getName"方法,
然后输出该方法的运行结果。
注:
a.会将null转换成""输出。
b.找不到绑订名对应的对象,会
输出""。
c.如果要指定查找范围,可以使用
"pageScope","requestScope",
"sessionScope","applicationScope"。
方式二 (e1.jsp)
${user["name"]}
注:
a.允许[]里面出现绑订名。
b.允许[]里面出现从0开始
的下标,用来访问数组中的
指定下标的元素。
2)做一些简单的运算,运算的结果可以给
标签的属性赋值,也可以直接输出(e2.jsp)。
a.算术运算 "+","-","*","/","%"
注意: "+"只能求和。
b.关系运算 ">",">=","<","<=","==","!="
c.逻辑运算 "&&","||","!"
d.empty运算 empty
注:用来判断集合是否为空,或者是
不是一个空字符串。
以下四种情况结果为true
d1.空的集合
d2.空字符串
d3.null
d4.找不到对应的对象
3)读取请求参数值 (e3.jsp)
${param.name}
等价于request.getParameter("name")
${paramValues.city}
等价于request.getParameterValues("city")

(3)jstl标签(java standard taglib)
1)jstl是什么?
apache提供的一系列标签,后来捐献给了sun
(作为javaee5.0的一部分)。
2)编程步骤
step1,将jstl相关的jar文件拷贝到WEB-INF\lib下。
注:如果使用的是javaee5.0或者以上的版本,
不用拷贝了。
step2,使用taglib指令引入要使用的标签。
<%@taglib uri="" prefix=""%>

uri:命名空间(是为了区分同名的元素而
定义的一个字符串,经常是一个域名)。
prefix:设置命名空间的前缀(别名)
3)几个核心的标签
a.if标签 (jstl01.jsp)
<c:if test="" var="" scope="">
标签体
</c:if>
当test属性值为true时,容器会执行标签体的
内容。 test属性可以使用el表达式来赋值。
var属性:指定一个绑订名。
scope属性:指定绑订范围("page","request",
"session","application")
b.choose标签 (jstl02.jsp)
<c:choose>
<c:when test="">
</c:when>
...
<c:otherwise>
</c:otherwise>
</c:choose>
when可以出现1次或者多次,表示一个分支,
当test属性值为true,执行标签体的内容。
otherwise可以出现0次或者1次,表示例外。
c.forEach 标签(jstl03.jsp)
<c:forEach items="" var="" varStatus="">
</c:forEach>
该标签用于遍历集合或者数组,其中,items
属性用于指定要遍历的集合或者数组,可以
使用el表达式来赋值。
var属性:用于指定绑订名称,绑订范围是
pageContext(该标签每一次从集合或者
数组中取一个元素,然后绑订到pageContext
上)。
varStatus属性:用来指定绑订名称,绑订范围是
pageContext,绑订值是一个特殊的对象,该
对象提供了一系列方法用于获得当前遍历的
状态:
getCount() : 返回当前正在访问的元素的
次数。
getIndex():返回当前正在访问的元素的
下标。

1.自定义标签
step1,写一个java类,继承SimpleTagSupport类。
step2,在doTag方法里面,编写相应的处理逻辑。
step3,描述标签(.tld文件)。
<body-content>可以设置为"empty","
scriptless","JSP"。
empty : 没有标签体。
scriptless:有标签体,但是,标签体里面不能够
出现java代码(<% %> <%= %>,<%! %>)
JSP:有标签体,并且,标签体里面可以出现java代码。
但是,只有复杂标签技术才支持,简单标签
技术只支持empty和scriptless。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Jsp EL