【JSP&EL&JSTL】
JSP
- 全称:java servlet page
- 是一个java类,继承了servlet,可以看做是一个servlet
- ?为什么使用JSP? html为静态内容,需要获取动态数据
三大指令 <%@ %>
<%@page %>
对jsp界面的设置
- language —— 表名jsp页面可以写xxx代码
- contextType —— 告诉浏览器是什么内容类型,如何打开,用什么编码方式
- pageEncoding —— jsp内容编码
- extends —— 用来指定java文件翻译后继承的父类,一般不用改(默认继承父类)
- buffer —— 设置缓冲区
- inport 导包
- session —— 值可选true、false在该界面是否可以使用session对象
具体区别:看翻译后的java文件,true有session对象的方法调用 - errorPage ——如果有错回调到哪个界面
- isErrorPage ——可选true负责显示错误信息 <%= exception.toString()%>
<%@include %>
可以包含另一个jsp界面
- file=“xxxx.jsp”
背后源代码把另一个jsp的页面内容拿来一起输出(静态包含)
<%@taglib %>
- prefix —— 标签库别名
- uri —— 标签库路径
jsp动作标签
在body里 <jsp:>
include
- page —— 跟指令标签中的file的区别:这里是动态包含,是把运行结果拿来。
forward
- page —— 前往哪个页面。
等同于请求转发request.getRequestDispatcher("xxx").fordward(request,response);
param
- 在跳转或包含的时候带参数
- 嵌套在跳转里面
- 取的时候request.getParameter(" ");
- 源码:页面?xxx = xxxx
内置对象(面试重点)
- 不用创建可以直接在jsp中使用的对象
作用域对象
- 对象可以存执,取值范围有限定
setAttribute getAttribute
- 四个作用域区别:
pageContext【PageContext类型】
- 作用域只在当前页面
- 用这个对象可以拿到其他的八个对象(不咋用)
request【HttpServletRequest类型】
- 只要服务器作响应,就没有值了
- 请求转发,一次请求可以取值
session【HttpSession类型】
- 仅限于一次会话
- 关闭浏览器后取不到值
application【servletContext类型】
- 整个工程都可以访问
- 只有关闭服务器才不可用
exception【throwable类型】
- 错误界面才有(iserrorPage=“true”)
page【this,当前类的引用对象】
config【servletconfig配置信息】
response【HttpServletResponse类型】
out【jspWriter类型】
- out.write(“out输出的内容”);
- response.getWriter().write(“response输出的内容”);
区别 :jsp中网页的文字翻译成java都是用out输出的
把out对象输出的内容放到response的缓冲区,先输出response里的内容,再输出缓冲区的内容。
EL表达式
- 为了简化jsp代码
- ${表达式 }
- 没有快捷键提示
指定作用域
<%
pageContext.setAttribute("name", "zhangsan");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "applicaton");
%>
普通取
<br>
<%= pageContext.getAttribute("name")%>
<%= request.getAttribute("name")%>
<%= session.getAttribute("name")%>
<%= application.getAttribute("name")%>
el取
<br>
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }
不指定作用域
- 默认按照pageContext、request、session、application顺序找
11个内置对象 面试重点
- pageContext
作用域相关对象
- pageScope
- requestScope
- sessionScope
- applicationScope
头信息相关对象
- header
- headerValues
参数信息相关对象
- param
- paramValues
.
- cookie
全局初始化参数
- initParam
JSTL表达式
- Java standard tag library标准标签库
- 简化jsp的代码替换<%%>配合el表达式使用
- 先导入支持jar包
- 引入标签库
<%@taglib prefix=" " uri=%>
记得引入1.1版本1.0不支持el表达式 http://java.sun.com/jsp/jstl/core
核心库- prefix快捷键自动填入c,c是core缩写
常用标签
<c:set></c:set>
<c:set var="name" value="zhangsan" scope="xxx"></c:set> //默认存到page里
<c:if test=""></c:if>
<c:if test="${age > 18}" var=“flag” scope=“域”>xxxxxxxxxx</c:if>
//判断表达式里是否满足 满足输出xxxxxxxxxxx flag:表达式的结果
<c:forEach></c:forEach>
//从1开始,10结束,增幅为2
<c:forEach begin="1" end="10" var="i" step="2">
${i }
</c:forEach>
<c:forEach var="user" items="${list}">
${user.name }
</c:forEach>