(JavaWeb)JSP,JSTL

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>


在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章