jsp的基本语法
<%!
//声明,定义成员变量,成员方法,内部类
String name;
public void setName(String name){
this.name = name;
}
%>
<%
//脚本,相当于service内容
int a = 1;
%>
<%= a+".表达式,相当于out.println()" %>
jsp常用三大标签
page标签属性:
language="java" java语言
contentType="text/html; charset=UTF-8" 文件类型
pageEncoding="UTF-8" 语言编码
buffer="8kb" 默认是8kb
errorPage="" 指定出错页面
import="" import导包
isELIgnored="false" 忽略el表达式,默认为false 打断腿属性
isErrorPage="false" 如果为true,出错了就在此页面处理
isThreadSafe="true" 是否线程安全
session="true" 支持session
<body>
include标签,包含的页面一起编译,不能有相同变量名:<br/>
<%@ include file="header.jsp" %>
<%@ include file="footer.jsp" %>
<hr/>
page标签:<br/>
<hr/>
taglib标签<br/>
</body>
jsp六个常用动作
<jsp:useBean id="user" class="com.gec.domain.User"></jsp:useBean>
<jsp:setProperty property="name" name="user" value="张三"/>
<jsp:getProperty property="name" name="user"/>
<hr/>
<% request.setCharacterEncoding("utf-8"); %>
<jsp:forward page="header.jsp">
<jsp:param value="张四" name="name"/>
<jsp:param value="20" name="age"/>
</jsp:forward>
forward动作内部跳转,浏览器显示链接是原页面链接,而不是跳转的新页面的链接。
include动作和include标签
区别
include动作,包含的页面分开编译,再包含进来,不存在重名问题。和include标签不同。
<jsp:include page="header.jsp"></jsp:include><br/>
<jsp:include page="footer.jsp"></jsp:include>
include标签,包含的页面一起编译,不能有相同变量名:<br/>
<%@ include file="header.jsp" %>
<%@ include file="footer.jsp %>
相同
二者浏览器显示的链接相同,都是主页面的链接,而不显示被包含进来的页面链接。
jsp九大内置对象:
pageContext: jsp的上下文
application: 项目对象
request: 请求对象
session: session对象
response: 响应对象
config: servletConfig
out: jspWriter–> response.getWriter()
page: Object page = this
exception: 异常对象
请求过程 先找pageContext—>request—>session—>application
JSTL
循环标签
<!-- for(int i = 1;i<=10;i++ -->
<c:forEach var="i" begin="1" end="10" step="1">
${i}
</c:forEach>
<%
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("aa");
arrayList.add("bb");
arrayList.add("cc");
%>
<!-- 设置存储的范围域是session -->
<%
request.getSession().setAttribute("arrayList", arrayList);
%>
<!-- items:是要遍历的集合 var:表示遍历中的每个对象都存储session中 -->
<c:forEach items="${sessionScope.arrayList}" var="arrayListI">
${arrayListI}
</c:forEach>
<!-- 书籍 -->
<%
List<Book> list = new ArrayList<>();
list.add(new Book(1, "JavaScript权威指南", "David Flanagan"));
list.add(new Book(2, "Effective Java中文版", "约书亚·布洛克"));
list.add(new Book(3, "Java编程思想", " 埃克尔"));
//request
request.setAttribute("list", list);
%>
<br />
<%
List<Book> books = (List<Book>) request.getAttribute("list");
for (Book bs : books) {
%>
<%=bs%><br />
<%
}
%>
<hr>
<br />
<c:forEach items="${list}" var="book">
${book}<br />
</c:forEach>
<br>
<hr>
<%
Map<Integer, Book> map = new HashMap<>();
map.put(1, new Book(1, "JavaScript权威指南", "David Flanagan"));
map.put(2, new Book(2, "Effective Java中文版", "约书亚·布洛克"));
map.put(3, new Book(3, "Java编程思想", " 埃克尔"));
//request
request.setAttribute("map", map);
%>
<c:forEach items="${map}" var="bk">
${bk.key}<br />
${bk.value}<br />
${bk.value.name}<br />
${bk.value.author}<br />
</c:forEach>
<hr><!-- 不加end属性就是遍历全部 -->
<c:forTokens items="aa,bb,cc,dd" begin="0" delims=","
var="aValue">
${aValue}
</c:forTokens>
条件控制标签
<c:if>:单个判断
<c:choose>:用于复杂的判断
<c:when> :if...else if
<c:otherwise> else
fn标签
<%
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("aa");
arrayList.add("bb");
arrayList.add("cc");
%>
<!-- 设置存储的范围域是session -->
<%
request.getSession().setAttribute("arrayList", arrayList);
%>
${fn:length(sessionScope.arrayList) }<br/>
${fn:contains("ABC", "a")}<br>
${fn:contains("ABC", "A")}<br>
前者返回“false”,后者返回“true”。
<br/>忽略大小写:
fn:containsIgnoreCase:${fn:containsIgnoreCase("ABC", "a")}<br>
${fn:containsIgnoreCase("ABC", "A")}<br>
<br/>
fn:startsWith ("ABC", "ab"):${fn:startsWith ("ABC", "ab")}<br>
fn:startsWith ("ABC", "AB"):${fn:startsWith ("ABC", "AB")}<br>
<br/>
截取字符串fn:substring("ABC",1,2):${fn:substring("ABC",1,2)}<br>
fmt格式化标签
<%
Date date = new Date();
request.setAttribute("date", date);
%>
没有格式化前:${date }<br/>
格式化后:<fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/><br/>
<c:set var="num" value="3.77777777"/>
没有格式化前:${num }<br/>
格式化后:<fmt:formatNumber value="${num }" pattern="#.##"></fmt:formatNumber>
EL表达式
算术表达式
<%=1+1 %><br/>
1+1:${1+1 }<br/>
1-1:${1-1 }<br/>
2*3:${2*3 }<br/>
10/5:${10/5 }<br/>
10%3:${10%3 }<br/>
逻辑表达式
逻辑表达式<br/>
true&&true :${true&&true }<br/>
true&&false :${true&&false }<br/>
true||true:${true || true }<br/>
false||true:${false||true}<br/>
关系表达式
关系表达式<br/>
1 == 1:${1==1 }<br/>
1 != 1:${1!=1 }<br/>
1 > 1:${1>1 }<br/>
1 <= 1:${1<=1 }<br/>