<% java代码 %>
<%= 打印输出 %>
<%! 成员方法或变量 %>
<%-- jsp注释 --%> 标签要用这个注释
<!-- html注释-->
三大指令
<%@include file=" "%>静态包含 被包含页面 不需要出现全局的html标签
<%@ page
language="java"翻译成java源文件 必写
import="java.util.*"多个包逗号分隔
pageEncoding="ugt-8" 把jsp变成java文件用什么编码 在eclipse中也要注意编码保存
contentType="text/html; charset=utf-8"响应编码格式 可以省略
errorPage="" 在当前页面指定错误页面 优先级高于全局
全局配置错误页面,在web.xml文件 jsp可以查看到错误原因
<error-page>
<error-code>500<error-code>
<location>/common/500.jsp</location>
<error-code>400<error-code>
<location>/common/400.html </location>
<error-page>
isErorrPage=“ true/false ”指定当前页面 是否 可以显示异常信息 为flase 则不能使用exception对象 错误信息显示代码<%= exception.getMessage()%>
session="true"开启session对象的使用
buffer jsp页面缓存大小
isElignore 是否忽略el表达式
%>
2.2 9大内置对象
内置对象名 类型
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
exception Throwable
page Object(this)
out JspWriter (有缓冲区 buffer=“8kb” 为0kb则是不缓存 可手动刷新缓存 out.flush() 可以查看缓存区大小和剩余大小 jsp页面结束之前自动缓存)
pageContext PageContext 向4个域中存取数据
pageContext.setAttribute("name");默认存、取page域
pageContext.setAttribute("name",域范围常量)
#获取数据
1)默认情况下,从page域获取
pageContext.getAttribute("name")
2)可以从四个域中获取数据
pageContext.getAttribute("name",域范围常量)
域范围常量:
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext..SESSION_SCOPE
PageContext.APPLICATION_SCOPE
3)自动在四个域中搜索数据
pageContext.findAttribute("name");
顺序: page域 -> request域 -> session域- > context域(application域)
3 Jsp中的四个域对象
四个域对象:
pageContext page域
request request域
session session域
application context域
1)域对象作用:
保存数据 和 获取数据 ,用于数据共享。
2)域对象方法:
setAttribute("name",Object) 保存数据
getAttribute("name") 获取数据
removeAttribute("name") 清除数据
3)域对象作用范围:
page域: 只能在当前jsp页面中使用(当前页面)
request域: 只能在同一个请求中使用(转发)
session域: 只能在同一个会话(session对象)中使用(私有的)
context域: 只能在同一个web应用中使用。(全局的)
5 EL表达式
jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<% %>。
EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!
语法: ${变量或表达式}${list[0].name}该对象为javaBean ${map[0].name}
判断null 和空 ${name==null || name==""} 另一种写法${empty name }
6 jsp标签
1)内置标签(动作标签): 不需要在jsp页面导入标签
2)jstl标签: 需要在jsp页面中导入标签
3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签
转发标签: <jsp:forward page="/index.jsp"/>
参数标签: <jsp:pararm value="tom" name="name"/> 传递参数 可以放在别的标签中
包含标签: <jsp:include page=“/common/head.jsp”/> 包含标签
指令跟标签的区别
6.4 JSTL标签
JSTL (全名:java standard tag libarary - java标准标签库 )
核心标签库 (c标签库) 天天用
国际化标签(fmt标签库)
EL函数库(fn函数库)
xml标签库(x标签库)dao层的操作不应该在jsp页面中
sql标签库(sql标签库)
6.5 使用JSTL标签步骤
1) 导入jstl支持的jar包(标签背后隐藏的java代码)注意:使用javaee5.0的项目自动导入jstl支持jar包
2)使用taglib指令导入标签库 <%@taglib uri="tld文件的uri名称" prefix="简写" %>
例:<%@taglib uri="http://java.sum.com/jsp/jstl/core" prefix="c" %>
3)在jsp中使用标签
核心标签库的重点标签:
保存数据:
<c:set var="name" value="tom" scope="request"></c:set> 默认保存到page域 el表达式取出
获取数据:
<c:out value="${name}" default="当value为null会使用默认值" escapeXml="true 不转义value的值 比如value带有标签"></c:out>
单条件判断 查询api判断属性是否支持el表达式
<c:if test="true">
条件成立输出内容
</c:if>
多条件判断
<c:choose></c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
循环数据
begin="从那个元素开始" end="到那个元素结束" step="每次加几" items="要遍历的数据" var="每个元素的名称" varStatus="正在遍历的元素的状态对象"
<c:forEach begin="0" end="2" step="1" items="${list}" var="stu" varStatus="varSta">
${stu.name}
</c:forEach>
<c:forTokens items="" delims=""></c:forTokens>
重定向
<c:redirect></c:redirect>