文章目錄
JSP基礎語法
JSP表達式
<%--JSP表達式
作用:用來將程序的輸出,輸出到客戶端
<%= 變量或者表達式%>
--%>
<%= new java.util.Date()%>
jsp腳本片段
<%--jsp腳本片段--%>
<%
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
腳本片段的再實現
<%
int x = 10;
out.println(x);
%>
<p>這是一個JSP文檔</p>
<%
int y = 2;
out.println(y);
%>
<hr>
<%--在代碼嵌入HTML元素--%>
<%
for (int i = 0; i < 5; i++) {
%>
<h1>Hello,World <%=i%> </h1>
<%
}
%>
JSP聲明
<%!
static {
System.out.println("Loading Servlet!");
}
private int globalVar = 0;
public void method(){
System.out.println("進入了方法method!");
}
%>
JSP聲明:會被編譯到JSP生成Java的類中!其他的,就會被生成到_jspService方法中!
在JSP,嵌入Java代碼即可!
<%%>//在頁面嵌入java代碼
<%=%>//在頁面輸出變量
<%!%>//jsp聲明
<%--註釋--%>
JSP的註釋,不會在客戶端顯示,HTML會在客戶端顯示。
JSP指令
<%@page args.... %>
<%@include file=""%>
<%--@include會將兩個頁面合二爲一--%>
<%@include file="common/header.jsp"%>
<h1>網頁主體</h1>
<%@include file="common/footer.jsp"%>
<hr>
<%--jSP標籤
jsp:include:拼接頁面,本質還是三個
--%>
<jsp:include page="/common/header.jsp"/>
<h1>網頁主體</h1>
<jsp:include page="/common/footer.jsp"/>
9大內置對象
- PageContext 存東西
- Request 存東西
- Response
- Session 存東西
- Application 【SerlvetContext】 存東西
- config 【SerlvetConfig】
- out
- page ,不用瞭解
- exception
pageContext.setAttribute("name1","1號"); //保存的數據只在一個頁面中有效
request.setAttribute("name2","2號"); //保存的數據只在一次請求中有效,請求轉發會攜帶這個數據
session.setAttribute("name3","3號"); //保存的數據只在一次會話中有效,從打開瀏覽器到關閉瀏覽器
application.setAttribute("name4","4號"); //保存的數據只在服務器中有效,從打開服務器到關閉服務器
<%
String name1 = (String) pageContext.getAttribute("name1");
String name2= (String) pageContext.getAttribute("name2");
String name3 = (String) pageContext.getAttribute("name3");
String name4 = (String) pageContext.getAttribute("name4");
%>
<h1>${name1}</h1>
<h1>${name2}</h1>
<h1>${name3}</h1>
<h1>${name4}</h1>
本頁面訪問
其他頁面訪問
由於page域只作用於本頁面,request雖然可以作用多個頁面但是沒有發送請求所以1號和2號不顯示。
session 3號可以作用於整個瀏覽器,而application 4號可以作用於整個服務器。
-
pageContext:客戶端向服務器發送請求,產生的數據只作用於一個頁面,離開頁面數據就消失了。
-
request:客戶端向服務器發送請求,產生的數據,用戶看完就沒用了,比如:新聞。
-
session:客戶端向服務器發送請求,產生的數據,用戶用完一會還有用,比如:購物車。
-
application:客戶端向服務器發送請求,產生的數據,一個用戶用完了,其他用戶還可能使用,比如:聊天數據。
JSP標籤、JSTL標籤、EL表達式
<!-- JSTL表達式的依賴 -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- standard標籤庫 -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
EL表達式
${ }
- 獲取數據
- 執行運算
- 獲取web開發的常用對象
JSP標籤
<jsp:forward page="/jsptag2.jsp">
<jsp:param name="name" value="ez"></jsp:param>
<jsp:param name="age" value="12"></jsp:param>
</jsp:forward>
JSTL表達式
JSTL標籤庫的使用就是爲了彌補HTML標籤的不足;它自定義許多標籤,可以供我們使用,標籤的功能和Java代碼一樣.
核心標籤 (掌握部分)
JSTL標籤庫使用步驟
- 引入對應的 taglib
- 使用其中的方法
- 在Tomcat 也需要引入 jstl的包,否則會報錯:JSTL解析錯誤
c:if
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--引入jstl對應的 taglib-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="coreif.jsp" method="get">
<%--
EL表達式獲取表單中的數據
${param.參數名}
--%>
<input type="text" name="username" value="${param.username}">
<input type="submit" value="提交">
</form>
<%--判斷如果提交的用戶名是管理員,則登錄成功--%>
<c:if test="${param.username=='admin'}" var="isAdmin">
<c:out value="管理員歡迎您"/>
</c:if>
<c:out value="${isAdmin}"/>
</body>
</html>
c:choose c:when
<body>
<%--定義一個變量score,值爲85--%>
<c:set var="score" value="55"/>
<c:choose>
<c:when test="${score>=90}">
你的成績爲優秀
</c:when>
<c:when test="${score>=80}">
你的成績爲一般
</c:when>
<c:when test="${score>=70}">
你的成績爲良好
</c:when>
<c:when test="${score<=60}">
你的成績爲不及格
</c:when>
</c:choose>
</body>
c:forEach
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
ArrayList<String> hero = new ArrayList<>();
hero.add("伊澤瑞爾");
hero.add("魔法貓咪");
hero.add("亞索");
hero.add("奧拉夫");
hero.add("奧恩");
request.setAttribute("list",hero);
%>
<%--
var , 每一次遍歷出來的變量
items, 要遍歷的對象
begin, 哪裏開始
end, 到哪裏
step, 步長
--%>
<c:forEach var="hero" items="${list}" begin="0" end="3" step="1">
<h1><c:out value="${hero}"/></h1></br>
</c:forEach>
</body>
</html>