深度學習中的梯度計算(矩陣向量求導)
阿新 • • 發佈:2021-08-14
簡介
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>