JSP學習筆記

2020-08-13 13:43:19

1.基礎語法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%--jsp表達式  --%>
   <%= new java.util.Date()%>
  <hr>

  <%--jsp指令碼片段--%>
  <%
    int sum=0;
  for(int i=0;i<100;i++){
    sum+=i;
  }
  out.print("<h1>sum="+sum+"</h1>");
  %>
  <hr>

  <%--宣告--%>
  <%!
  static {
    System.out.println("jsp宣告");
  }
  private  int a=1;
  public  void haue(){
    System.out.println("河南工程學院");
  }
  %>
  jsp宣告會被編譯到jsp生成的java類,
  其他的會被生成到_jspService()方法中
  <hr>

  <%--EL表達式--%>
  <%for (int i=0;i<3;i++){%>
   hello ${i}
  <%}%>
  <hr>
  </body>
</html>

2. 指令

page

<%@page contentType="text/html;charset=UTF-8" language="java" %>
<%@page errorPage="error/500.jsp" %>
<%@page import="java.util.Date" %>
<%@include file="error/500.jsp"%>
  1. 匯入錯誤頁
    通過page
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page errorPage="error/500.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<% new Date();%>
<%
int x=1/0;
%>
</body>
</html>

500.jsp

<html>
<head>
</head>
<body>
<img src="../img/500.png" alt="500">
</body>
</html>

通過web.xml

<error-page>
        <error-code>500</error-code>
        <location>/error/500.jsp</location>
    </error-page>
    <error-page>
        <error-code>404</error-code>
        <location>/error/404.jsp</location>
    </error-page>

通過 標籤

 <jsp:include page="error/404.jsp"></jsp:include>

在这里插入图片描述

3.內建物件及其作用域

C:\Users\zhao.IntelliJIdea2019.2\system\tomcat\Unnamed_javaweb-jsp\work\Catalina\localhost\ROOT\org\apache\jsp

final javax.servlet.jsp.PageContext pageContext;
        javax.servlet.http.HttpSession session = null;
        final javax.servlet.ServletContext application;
        final javax.servlet.ServletConfig config;
        javax.servlet.jsp.JspWriter out = null;
        final java.lang.Object page = this;
        javax.servlet.jsp.JspWriter _jspx_out = null;
        javax.servlet.jsp.PageContext _jspx_page_context = null;
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--內建物件--%>
<%

pageContext.setAttribute("name1","1");//儲存的數據只在一個頁面中有效
    request.setAttribute("name2","2");//儲存的數據 只在一次請求中有效 請求轉發會攜帶這個伺服器
    session.setAttribute("name3","3");//儲存的數據只在一次對談中有效 從開啓瀏覽器到關閉瀏覽器
    application.setAttribute("name4","4");//儲存的數據在伺服器中有效 從開啓伺服器到關閉伺服器
%>
<%--從pageContext去除 我們通過尋找的方式來
從底層到高層(作用域)
--%>
<%
String name1= (String) pageContext.findAttribute("name1");
    String name2= (String) pageContext.findAttribute("name2");
    String name3= (String) pageContext.findAttribute("name3");
    String name4= (String) pageContext.findAttribute("name4");
    String name5= (String) pageContext.findAttribute("name5");//不存在
%>
<hr>
<%--${}--%>
使用EL表達式輸出
${name1}
${name2}
${name3}
${name4}
${name5}
<hr>
使用jsp表達式輸出
<%=name1%>
<%=name2%>
<%=name3%>
<%=name4%>
<%=name5%>

</body>
</html>

兩種請求轉發的方式

<%
//頁面
pageContext.forward("/index.jsp");
//java後臺
//request.getRequestDispatcher("/index.jsp").forward(request,response);
%>

在这里插入图片描述

4.JSP標籤 JSTL標籤 EL表達式

1. EL表達式:${}

  • 獲取數據
  • 2.執行運算
  • 3.獲取web開發的常用物件

2.JSP標籤

<%--<jsp:include page=""></jsp:include>--%>
<jsp:forward page="/jsptag02.jsp">
    <jsp:param name="name" value="趙"/>
    <jsp:param name="age" value="21"/>
</jsp:forward>
<%=request.getParameter("name")%>
<%=request.getParameter("age")%>

3.JSTL表達式

JSTL標準庫
JSTL的使用就是爲了彌補HTML的不足。他自定義了許多標籤功能和java程式碼一樣

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

*引入對應的taglib
*使用其中的方法

在Tomcat也需要引入jstl的包 否則會報錯:JSTL解析錯誤