一:JSP
概述:JSP全名为Java Server Pages,中文名叫java服务器页面,其本质是一个简化的Servlet 设计,它是由Sun 公司倡导、许多公司
参与一起建立的一种动态网页 技术标准。其实就是一个既能书写Servlet代码又能书写HTML代码的文件。
1.jsp中书写java代码的方式:
1)脚本片段指的是一段java代码。书写格式:<% java 代码 %>
[Java] 纯文本查看 复制代码 <%--[/size][/font]
[font=微软雅黑][size=3] response.getWriter().println()任意数据
response.getWriter().write//只能输出字符 字符数组 字符串
--%>
<%
response.getWriter().println("hello itcast");
response.getWriter().write(65);
%> 2)脚本声明的格式:<%! 书写Java代码 %>
[Java] 纯文本查看 复制代码 <%!
int num = 10;
public void method(){}
%>
3)脚本表达式的格式:<%= 内容 %> 等价于:out.print(内容)
[Java] 纯文本查看 复制代码 <%="传智播客"%>
二:EL表达式
1.语法格式:${表达式内容}
JSP的四大域对象指的是:page域,request域,session域,application域。我们通常使用EL表达式从这4个域对象用取值。
域对象 对象名称 说明
page域pageScopepage域指的是当前JSP页面,其中存储的数据只在当前页面有效
request域requestScoperequest域:一次请求或请求链中request域
session域sessionScopesession域:一次会话过程中,session域
application域applicationScopeapplication域:服务启动后整个项目对应的ServletContext域
2.EL表达式从四大域中取值
域对象 取值方式
page域${pageScope.xxx}
request域${requestScope.xxx}
session域${sessionScope.xxx}
application域${applicationScope.xxx}
3.EL表达式支持:
算数运算符,${a+b} 关系运算符,${a==b}//同时也可以用${a eq b} eq,ne,lt,gt,le,ge依次代表==,!=,<,>,<=,>= 逻辑运算符,${a&& b}或${a and b},|| or,! not 条件运算符,${a ?b:c} empty运算符,${empty a},变量a不存在返回true。
[HTML] 纯文本查看 复制代码 <body>
<%
request.setAttribute("n1",40);
request.setAttribute("n2",30);
request.setAttribute("n3","20");
request.setAttribute("n4","10");
%>
算数运算:<br>
n1+n2:${n1 + n2}<br>
n3-n4:${n3-n4}<br>
n2*n3:${n2 * n3}<br>
关系运算符:<br>
n1==n2:${n1==n2}<br>
n3>=n4:${n3>=n4}<br>
n1!=n2:${n1 ne n2}<br>
逻辑运算符:<br>
false && true:${false && true}<br>
false || true:${false || true}<br>
!false:${!false}<br>
<%--
表达式1?表达式2:表达式3
--%>
三元运算符:<br>
${n1>=n2?"正确":"错误!"}<br>
<%--
empty:
Stirng str=""
Student student=null;
List<> list = new ArrayList<>;
list.size()=0
--%>
<%
String str = "";
Student student=null;
List<String> list = new ArrayList<>();
%>
empty:<br>
${empty str}<br>
${empty student}<br>
${not empty list}<br>
</body>
三、JSTL标签库
1.核心库
标签名称 作用
通常用于输出一段文本内容到客户端浏览器
用于设置各种Web域中的属性
用于删除各种Web域中的属性
用于捕获嵌套在标签体中的内容抛出的异常
用户java代码if(){}语句功能
用于指定多个条件选择的组合边界,它必须与c:when和c:otherwise标签一起使用
用户代替java代码for循环语句
用户迭代操作String字符
给请求路径添加参数
重写url,在请求路径添加sessionid
用于在JSP页面中导入一个URL地址指向的资源内容
用于将当前的访问请求转发或重定向到其他资源
2.jstl需要的引入
[Java] 纯文本查看 复制代码 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.常用JSTL标签 <c:out> 用来显示数据的内容,可直接用EL表达式 <c:out value=”value”default=”default value”/> <c:set> 可以在page、request、session、application等范围内设置一个变量 <c:set value="value" var="varName" scope="page/request/session/application"> 如:<c:setvalue="黑马程序员" var="a" scope="session"> 相当于:<%session.setAttribute("a",黑马程序员)%> 设置JavaBean的属性必须使用target属性进行设置: <c:set value="value" target="JavaBean=" property="propertyName">
<c:remove> 删除某个变量 <c:remove var="varName" scope="session"/> 相当于<%session.remmoveAttribute("varName")> 流程控制标签 <c:if> <c:if test="表达式">主体内容</c:if>
<c:choose><c:when><c:otherwise> 可以实现if/elseif/else的功能,如: [Java] 纯文本查看 复制代码 <c:choose>
<c:whentest=”表达式1”>主体内容</c:when>
<c:whentest=”表达式2”>主体内容</c:when>
<c:otherwise>else内容</c:otherwise>
</c:choose>
<c:forEach> 实现for循环 [Java] 纯文本查看 复制代码 <c:forEach var=”item” items=”Collectionsor Arrays”>
循环体
</c:forEach>
|