1. 程式人生 > 其它 >深度學習中的梯度計算(矩陣向量求導)

深度學習中的梯度計算(矩陣向量求導)

簡介

JSP:Java Server Page

瀏覽器向伺服器傳送請求,不管訪問什麼資源,其實都是在訪問Servlet。
JSP最終也會被轉換成為一個Java類。

原理

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<% String name = "Bob"; %>
hello, <%=name%>!
</body>
</html>

本質

在訪問JSP時,java程式碼會原封不動的輸出,HTML程式碼會變轉化,可以看到本質都是Servlet!

依賴

<dependencies>
  <!-- servlet的依賴 -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
  </dependency>

  <!-- jsp的依賴 -->
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
    <scope>provided</scope>
  </dependency>

  <!-- standard標籤庫 -->
  <dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
  </dependency>

  <!-- jstl表示式依賴 -->
  <dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
  </dependency>

</dependencies>

基礎語法

表示式

<%= 變數或表示式%> 將輸出展示在客戶端

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

指令碼片段

<% java程式碼 %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    int sum=0;
    for (int i = 0; i < 100; i++) {
      sum +=i;
    }
    out.println("sum=" + sum);
  %>
  </body>
</html>

指令碼再實現

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%= new java.util.Date()%>
  <hr>
  <%
    for (int i = 0; i < 5; i++) {
  %>
  hello world!<%=i%> <br>
  <%
    }
  %>
  </body>
</html>

宣告

<%! java程式碼 %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <% int i = 1/0; %>
</body>
</html>

<%!
    static {
    System.out.println("Loading servlet");
}
	private int globalVar = 0;
	public void fun(){
   		System.out.println("It is a function");
	}
%>

jsp的宣告會被JSP生成到Java的類中,其他的被生成到_jspService 方法中

註釋

<%-- 註釋 --%>

自定義錯誤頁面

規定頁面

<%@ page errorPage="xxx.jsp" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page errorPage="/error/500.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <% int i = 1/0; %>
</body>
</html>

全域性

配置web.xml

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

包含頁面

<%-- 將兩個頁面合二為一 會產生影響 --%>
<%@include file = "commmon/header.jsp" %>
<%-- 拼接頁面 互不影響 --%>
<jsp:include page = "/common/header.jsp" />

九大物件

  • PageContext JSP的頁面容器
  • Request 獲取使用者的請求資訊
  • Response 伺服器向客戶端的迴應資訊
  • Session 用來儲存每一個使用者的資訊
  • ServletContext 表示所有使用者的共享資訊
  • Config 伺服器配置資訊
  • out 頁面輸出
  • page 只在一個頁面中儲存屬性
  • exception 錯誤處理

獲取物件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    //儲存的資料僅在一個頁面中有效
    pageContext.setAttribute("name1", "test1");
    //儲存的資料僅在一次請求中有效,請求轉發會攜帶
    request.setAttribute("name2", "test2");
    //在一次會話中有效,從開啟瀏覽器到關閉瀏覽器
    session.setAttribute("name3", "test3");
    //儲存的資料在伺服器中有效,從開啟伺服器到關閉伺服器
    application.setAttribute("name4", "test4");
%>

<%
    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");
%>

<%--el表示式輸出--%>
<h2>${name1}</h2>
<h2>${name2}</h2>
<h2>${name3}</h2>
<h2>${name4}</h2>
<h2>${name5}</h2>
</body>
</html>

pageContext.forword("1.jsp") request資料也會轉發

標籤

jsp標籤

jspTag.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <jsp:forward page="/jspTag2.jsp">
        <jsp:param name="name" value="Bob"/>
        <jsp:param name="age" value="18"/>
    </jsp:forward>
</body>
</html>

jspTag2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%=request.getParameter("name")%>
    <%=request.getParameter("age")%>
</body>
</html>

jstl標籤

JSTL標籤庫的使用就是為了彌補HTML標籤的不足;它自定義許多標籤,可以供我們使用,標籤的功能和ava程式碼一樣

  • 核心標籤
  • 格式化標籤
  • sql標籤
  • xml標籤

核心標籤

使用步驟

  • 引入對應的taglib
  • 使用其中的方法
  • 在tomcat中也需要引入jstl的包
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--引入jstl核心標籤庫--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="jstl.jsp" method="get">
    <%--el表示式獲取表單內容--%>
    <input type="text" name="username" value="${param.username}">
    <input type="submit" value="登入">
</form>
<%--判斷--%>
<c:if test="${param.username == 'admin'}" var="isAdmin">
    <c:out value="welcome" />
</c:if>
</body>
</html>