JSP
JSP
Jsp实质就是servlet,jsp在第一次被访问时会被Web容器翻译成servlet,再执行,
servlet内也可写HTML标签,
Jsp内写java代码方法:
<%java代码%> ----- 内部的java代码会翻译到service方法中,所以该标签内无法写方法
<%=java变量或表达式> ----- 会被翻译到service方法内部out.print(),只能写值
<%!java代码%> ---- 会被翻译到类中,可写成员变量和成员方法
<%-- jsp注释 --%>
Jsp三大指令
1.page指令:
格式:<%@page 属性名1=”属性值1” ……%>
常用属性:
import:导入java的包 ,AIt+/ 自动导包
errorPage=”路径”:设置当前页面出错后跳转到哪个页面
isErrorPage=”true”:当前页面为处理错误的页面,设置后出错会跳到该页面,控制台不会报错
可在web.xml中设置:
<error-page>
<error-code>404</error-code>
<location>/eror.jsp</location> //出错后跳转的页面
</error-page>
<error-page>
<error-code>500</error-code>
<location>/eror.jsp</location> //出错后跳转的页面
</error-page>
2.Include指令:
静态包含,可将一个页面拼接到另一个页面中,
格式:<%@ include file="被包含的文件地址"%>
动态包含:
<jsp:include page="/indes05.jsp"></jsp:include>
Jps隐藏对象(9个)
jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,在jsp可以直接使用这9个对象
out 用于页面输出
request 请求
response 响应
config 服务器配置,servlet init方法中,可直接得到初始化值
session 域,用来存储用户信息
application 域
page 指令
pageContext 域,JPS的页面容器
exception
pageContext对象:
page对象与pageContext对象不是一回事
pageContext是一个域,作用范围:当前jps中
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)
pageContext可以向指定的其他域中存取数据
pageContext.setAttribute("name", "zhangsan",PageContext.REQUEST_SCOPE);//request域
pageContext.setAttribute("name", "lisi",PageContext.SESSION_SCOPE);//session域
pageContext.setAttribute("name", "wangwu",PageContext.APPLICATION_SCOPE);//application域
pageContext取数据:
pageContext.getAttribute("name",PageContext.REQUEST(域名)_SCOPE)//取
<%= pageContext.findAttribute("name")%> <!-- 根据域范围从小往大找 -->
EL表达式
EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写。
EL从四个域中取数据,范围才小到大:
${name}
对象取值:
${key.属性名}
集合取值 :
${List[0].id }
获取项目名:
${pageContext.request.contextPath}
判断是否为空,为空是true
${empty user}
EL获得四大域中的数据,格式${EL表达式}
EL获得pageContext域中的值:${pageScope.key};
EL获得request域中的值:${requestScope.key};
EL获得session域中的值:${sessionScope.key};
EL获得application域中的值:${applicationScope.key};
JSTL技术
JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标准标签库有5个子库,但随着发展,目前常使用的是他的核心库
标签库 标签库的URI 前缀
Core http://java.sun.com/jsp/jstl/core c
JSTL导入
在JSTL文件夹lib目录下的两个JAR文件,分别为jstl.jar和standard.jar,导入
使用jsp的taglib指令导入核心标签库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL常用标签:
<c:if test=” ”>标签
普通for:
<c:forEach begin="0" end="10" var="i">
${i }
</c:forEach>
增强for, items=” 内写要遍历的域中的集合或map”:
<c:forEach items="${List }" var="user">
${user.id }...${user.username }
<br>
</c:forEach>
for内取key
${变量名.key }
取
${变量名.value.username }