es6之Proxy代理
阿新 • • 發佈:2020-09-04
------------恢復內容開始------------
JSP
- 什麼是JSP
- 瀏覽器向伺服器傳送請求,不管訪問什麼資源,其實都是在訪問Servlet,servlet最終會轉換成為一個java類,JSP本質上就是一個Servlet
- 在JSP頁面中,java程式碼就會原封不動的輸出,如果是HTML程式碼則會被轉義成out.write("<html>\r\n")這樣的格式輸出到前端
- jSP基礎語法和指令
- <%-- 註釋命令 --%>
-
<%-- JSP 表示式 用來將程式輸出到客戶端
<%= 變數或者表示式 %>
--%>
<%= new java.util.Date() %> -
<hr>
<%-- 分割線 --%> -
<%-- JSP宣告:使生成的元素在java的類中,提高了元素的作用域!,其他的會生成到_javaService方法中 --%>
<%!
static {
System.out.println("Loading Servlet!");
}
private int globVar = 0;
public void method(){
System.out.println("進入了method方法");
}
%>
- JSP指令
- page指令
-
<%@ page import="java.util.Date" %>導包
-
<%-- 定製錯誤頁面 --%>
<%@page errorPage="error/500.jsp" %><%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <img src="../img/500.png" alt = 500> </body> </html>
-
在web.xml中配置錯誤頁面
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="true"> <error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page> </web-app>
-
<%@page isErrorPage="true" %>
<%@page pageEncoding="UTF-8" %> 都是一些頁面設定
-
- page指令
-
- include指令
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%@include file="common/header.jsp"%> <h1> 我是主體 </h1> <%@include file="common/footer.jsp"%> <hr> <%-- jsp 標籤 --%> <jsp:include page="/common/header.jsp"/> <h1> 我是主體 </h1> <jsp:include page="common/footer.jsp"/> </body> </html>
<%-- 兩種方式的不同點是,@include會將兩個頁面合二為一,jsp標籤的include是拼接頁面,本質還是三個頁面 --%>
-
- include指令
- JSP內建物件和作用域
- jsp9大內建物件
- PageContext 存東西
- Requset存東西
- Respones
- Session存東西
- Application[ServletContext]存東西
- config[ServletConfig]
- out
- exception
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- 內建物件 何其不同的作用域--%>
<%
pageContext.setAttribute("name1","duf1");//儲存的資料只在一個頁面中有效
request.setAttribute("name2","duf2");//儲存的資料只在一次資料請求中有效,如果有頁面的轉發,該資料繼續生效,否則該資料死亡
session.setAttribute("name3","duf3");//儲存的資料只在一車會話中有效,,從開啟瀏覽器到關閉瀏覽器
application.setAttribute("name4","duf4");//儲存的資料在伺服器中有效,從開啟伺服器到關閉伺服器
%>
<%
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表示式輸出值 name5沒有值就不會輸出--%>
<h1>取出的值為</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>
<hr>
<%-- 使用jsp語法取值 name5會輸出null --%>
<h3><%= name5%></h3>
</body>
</html>- 各個作用域使用的場景
- request:客戶端向伺服器傳送請求,產生資料,使用者看完就沒用了,比如:新聞等
- session:客戶端向伺服器傳送請求,產生資料,使用者用完一段時間還有用,比如:購物車
- application:客戶端向伺服器傳送請求,產生資料,一個使用者用完了,其他使用者可能還有用,比如:聊天資料
- 各個作用域使用的場景
- jsp9大內建物件
- JSP標籤&JSTL標籤&EL表示式
<!-- JSTL 表示式的依賴 --> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- standard 標籤庫依賴 --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
- EL表示式:${}
- 獲取資料
- 執行運算
- 獲取web開發常用的物件
- EL表示式:${}
-
- JSTL標籤
- javabean
- 必須要有一個無參構造
- 屬性必須私有化
- 必須有對應的set、get方法
- 一般用來和資料庫的欄位做對映ORM
- 表-->類
- 欄位-->屬性
- 行記錄-->物件
- MVC三層構架
-
- model 模型
- 業務處理:業務邏輯(service)
- 資料持久層:CRUD(Dao)
- view 檢視 (JSP):專注於顯示資料
- 展示資料
- 提供連線發起Servlet請求(a、form、img...)
controller 控制器(servlet):專注於處理請求,以及控制檢視跳轉
- 接收使用者的請求(req:請求引數,Session資訊)
- 相應使用者的請求(交給業務層去做)
- 重定向或轉發 (檢視的跳轉)
- 登入-->接收使用者的登入請求-->處理使用者的請求(獲取使用者登入的引數,username,password)---->提交給業務層處理登入業務(判斷使用者名稱密碼是否正確:事務)---->Dao層查詢使用者名稱和密碼是否正確---->資料庫(資料持久化)
- model 模型
- Filter 過濾器
- 用來過濾網站的資料
- 處理中文亂碼
- 登入驗證
- Filter開發步驟
- 導包 javax.servlet
- 編寫過濾器
- 實現Filter介面,重寫對應的方法即可
public class CharacterEncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { //初始化,伺服器啟動就會初始化,隨時等待過濾物件出現 System.out.println("CharacterEncodingFilter初始化"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("UTF-8"); servletResponse.setCharacterEncoding("UTF-8"); servletResponse.setContentType("text/html;character=UTF-8"); /** * filterChain:鏈 * 1、過濾中的所有程式碼在過濾特定請求的時候都會執行 * 2、必須要讓過濾器繼續通行 * filterChain.doFilter(servletRequest,servletResponse) */ System.out.println("CharacterEncodingFilter執行前...."); filterChain.doFilter(servletRequest,servletResponse);//讓我們的請求繼續走,如果不寫,程式到這裡就被攔截停止 System.out.println("CharacterEncodingFilter執行後....."); } @Override public void destroy() { //銷燬,關閉伺服器時,過濾會銷燬 System.out.println("CharacterEncodingFilter銷燬"); } }
- filter檔案亦需要在web.xml中進行註冊和對映
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.twilight.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/servlet/*</url-pattern> </filter-mapping>
此處可以為/servlet下的所有包都可以進行過濾,所以,對映Servlet路徑時最好加上該路徑
<servlet> <servlet-name>showServlet</servlet-name> <servlet-class>com.twilight.servlet.ShowServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>showServlet</servlet-name> <url-pattern>/show</url-pattern> <url-pattern>/servlet/show</url-pattern> </servlet-mapping>
- 實現Filter介面,重寫對應的方法即可
- 用來過濾網站的資料
- 監聽器