java 服务器页面java
做用:将内容的生成和信息的展现相分离web
执行原理:运行在服务器端,本质上是一个servlet,被编译成class面试
jsp脚本格式:sql
<%..%> java代码片断apache
<%=..%> 输入表达式 至关于out.print();数组
<%!..%> 生命成员浏览器
jsp的指令缓存
三大指令:page指令、include指令、taglib指令服务器
page指令:cookie
language JSP的语言属性,默认java,目前也只有java
contentType 设置浏览器默认的打开的时候的编码
pageEncoding 设置JSP文件保存到硬盘,以及翻译成Servlet保存到硬盘的编码格式
import 设置JSP中引入其余的类
extends 设置JSP被翻译成Servlet后继承的类,
autoFlush 设置自动刷出缓存
buffer JSP缓冲区的大小,默认8kb
session 默认值是true,设置是否能够直接使用session对象
isELIgnored 设置JSP是否忽略EL表达式,默认false,JSP中能够使用EL表达式
isErrorPage 设置JSP页面中出现错误应该如何处理
errorPage 设置JSP页面中出现错误应该如何处理
include指令:用于引入其余的页面
file属性:属性中不能使用变量,不能传递参数
<%@ include file="logo.jsp" %>
taglib指令:用于在JSP中引入标签库
<%@ taglib url="" prefix="" %>
JSP的内置对象
内置对象:JSP中能够直接使用的对象
九大内置对象(面试):
request,response,session,application,page,pageContext,out,config,exception
JSP的四个域对象
pageContext 页面范围
request 请求范围
session 回话范围
application 应用范围
JSP的动做标签
语法:<jsp:动做标签 属性="" /> 使用该标签可以简化代码的编写,尽可能少在JSP中使用<%%>
<jsp:forward page="/demo.jsp"></jsp:forward>
<jsp:include page="/demo.jsp"></jsp:include>
动态包含&静态包含
静态包含至关于代码的copy,最终被翻译诚意Servlet解释执行的,动态包含包含了其余页面运行的结果,最终翻译成多个Servlet执行的
EL Expression Language 表达式语言
语法:${ EL 表达式}
JSP中尽可能少的使用<%%>代码块,使用EL和JSTL替换页面中<%%>
用途
1.获取数据
2.EL执行运算
3.得到经常使用web开发对象
4.调用java中的函数
EL获取四个域范围中的值
获取普通值
获取数据的数据
获取List集合
获取Map集合
[]和.区别:[]获取带有下标的数据、list等 .获取一个对象的属性,若是属性中包含了特殊字符,必须使用[]不能使用.
demo
<%
pageContext.setAttribute("pname","zhangsan");
request.setAttribute("rname","lisi");
session.setAttribute("sname","wangwu");
application.setAttribute("aname","zhaner");
%>
----------------传统方式取值-----------------------------
<%= pageContext.getAttribute("pname")%>
<%= request.getAttribute("pname")%>
<%= session.getAttribute("pname")%>
<%= application.getAttribute("pname")%>
----------------EL 表达式取值----------------------------
${ pageContext.pname }
${ request.rname }
${ session.sname }
${ application.aname }
demo获取数组数据
<%
String[] arr = {"zhangsan","lisi","wangwu"};
pageContext.setAttribute("arr",arr)
%>
%{ arr[1] }
demo获取List集合数据
<%
List<String> list = new ArrayList<String>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
%>
${ list[1] }
demo获取Map集合
<%
Map<String,String> map = new HashMap<String,String>();
map.put("a","zhangsan");
map.put("b","wangwu");
map.put("c","lisi");
%>
${ map["a"] }
demo获取JavaBean中的数据
<%
Person p = new person();
p.setId(1);
p.setName("zhangsan");
p.setPassword("root");
pageContext.setAttribute("person",p);
%>
${ person.name }
EL标签还能够执行运算,包括算术运算和逻辑运算
EL得到WEB开发的经常使用的对象(EL的内置对象)
11个
${pageScope}
${requestScope}
${sessionScope}
${applicationScope}
${param} 至关于request.getParameter
${paramValues} 至关于request.getParameterValues
${header} 得到请求头 一个key对应一个value
${headerValues} 得到请求头 一个key对应多个value
${initParam} 得到初始化参数
${cookie} 得到cookie信息
${pageContext} 至关于pageContext对象
JSTL标签库
JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的Jakarta小组维护的,从Servlet2.0开始
做用:结合EL替换页面中的<% %>
使用JSTL标签库
JSTL五大标签库:core、fmt、xml、sql、fn
引入标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
经常使用标签
c:set
c:if
c:forEach
c:choose