<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【精選】JSP技術知識點大合集

      JSP簡介

      在這里插入圖片描述

      JSP介紹

      JSP(全稱Java Server Pages)Java服務端頁面技術,是JavaEE平臺下的技術規范。它允許使用特定的標簽在HTML網頁中插入Java代碼,實現動態頁面處理,所以JSP就是HTML與Java代碼的復合體。JSP技術可以快速的實現一個頁面的開發,相比在Servlet中實現頁面開發將變得更加容易。

      常見的視圖層技術

      HTML、JSP、Thymeleaf等。

      前后端分離開發方式

      在前后端分離的項目中真正可以做到“術業有專攻”(開發人員分離) 。前后端分離開發方式中前端頁面由專業團隊完成頁面的開發,并通過請求調用后端的api接口進行數據交互。在開發前端頁面的團隊中更多關注的技術如:html、CSS、jQuery、Vue、Nodejs等前端技術。前端追求的是:頁面表現,速度流暢,兼容性,用戶體驗等等。而后端團隊則更多的是業務的具體實現。在后端開發的團隊中更多關注的技術如:==設計模式、分布式架構、微服務架構、數據庫的操作、Java的性能優化以及數據庫優化等技術。==前后端分離已成為互聯網項目開發的業界標準使用方式,特別是為大型分布式架構、彈性計算架構、微服務架構、多端化服務(多種客戶端,例如:瀏覽器,車載終端,安卓,IOS等等)打下堅實的基礎。

      JSP運行原理

      在這里插入圖片描述

      JSP技術特點

      JSP和Servlet是本質相同的技術。當一個JSP文件第一次被請求時,JSP引擎會將該JSP編譯成一個Servlet,并執行這個Servlet。如果JSP文件被修改了,那么JSP引擎會重新編譯這個JSP。

      JSP引擎對JSP編譯時會生成兩個文件分別是.java的源文件以及編譯后的.class文件,并放到Tomcat的work目錄的Catalina對應的虛擬主機目錄中的org\apache\jsp目錄中。兩個文件的名稱會使用JSP的名稱加”_jsp”表示。如:index_jsp.java、index_jsp.class

      JSP與Servlet區別

      • JSP以源文件形式部署到容器中。而Servlet需要編譯成class文件后部署到容器中

      • JSP部署到web項目的根目錄下或根目錄下的其他子目錄和靜態同資源位于相同位置。而Servlet需要部署到WEB-INF/classes目錄中。

      • JSP中的HTML代碼會被JSP引擎放入到Servlet的out.write()方法中。而在Servlet中我們需要自己通過對字符流輸出流的操作生成響應的頁面。

      • JSP更擅長表現于頁面顯示,Servlet更擅長于邏輯控制。

      JSP標簽的使用

      原始標簽

      JSP的三種原始標簽

      JSP的原始標簽在JSP的任何版本中都可以使用。

      <%! %> 聲明標簽

      聲明標簽用于在JSP中定義成員變量方法的定義。標簽中的內容會出現在JSP被編譯后的Servlet的class的**{ }**中。

         //<%! %>聲明標簽
         <%!
         int a =10;
         int add(int a,int b){
           return a+b;
         }
         %>
      

      <% %>腳本標簽

      腳本標簽用于在JSP中編寫業務邏輯。標簽中的內容會出現在JSP被編譯后的Servlet的_jspService方法體中。

         //腳本標簽
         <%
         int b=10;
       	%>
      

      <%= %>賦值標簽

      賦值標簽用于在JSP中做內容輸出。標簽中的內容會出現在_jspService方法的out.print()方法的參數中。注意我們在使用賦值標簽時不需要在代碼中添加 ”;”。

        	//賦值標簽
        	<%=a%>
        	<%=b%>
      
      JSP原始標簽的使用

      需求:以20%概率顯示你中獎了。

      <%@ page import="java.util.Random" %>
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
         <title>Title</title>
      </head>
      <body>
         <%
             int flag = new Random().nextInt(100);
             if(flag<=20){
         %>
         中獎了<%=flag%>
         <%}else {%>
         沒中獎<%=flag%>
         <%}%>
      </body>
      </html>
      
      

      JSP的指令標簽

      JSP指令標簽的作用是聲明JSP頁面的一些屬性和動作。

      <%@指令名稱 屬性=“值” 屬性=“值1,值2…”%>

      JSP指令標簽分類
      Page指令標簽

      contentType

      設置響應類型和編碼。

      pageEncoding

      設置頁面的編碼。

      import

      導入所需要的包。

      language

      當前JSP頁面里面可以嵌套的語言。

      session

      設置JSP頁面是否獲取session內置對象。

      buffer

      設置JSP頁面的流的緩沖區的大小。

      autoFlush

      是否自動刷新。

      exends

      聲明當前JSP的頁面繼承于那個類.必須繼承的是httpservlet 及其子類。

      isELIgnored

      是否忽略el表達式。

      errorPage

      當前JSP頁面出現異常的時候要跳轉到的JSP頁面。

      isErrorPage

      當前JSP頁面是否是一個錯誤頁面。若值為true,可以使用JSP頁面的一個內置對象 exception。

      Include指令標簽

      靜態包含,可以將其他頁面內容包含進來,一起進行編譯運行.生成一個java文件.

      <%@include file=“被包含JSP的相對路徑” %>

      Taglib指令標簽

      導入標簽庫。

      <%@taglib prefix=“前綴名” uri=“名稱空間” %>

      JSP的內置對象

      JSP中一共預先定義了9個這樣的對象,分別為:request、response、session、application、out、pagecontext、config、page、exception。

      request對象

      request 對象是 HttpServletRequest類型的對象。

      response對象

      response 對象是 HttpServletResponse類型的對象。

      session對象

      session 對象是HttpSession類型的對象。只有在包含 session=“true” 的頁面中才可以被使用。

      application對象

      application 對象是ServletContext類型的對象。

      config 對象

      config 對象是ServletConfig類型的對象。

      out 對象

      out 對象是JspWriter類型的對象。

      pageContext 對象

      是JSP的上下文對象,pageContext 對象是PageContext類型的對象。作用是取得任何范圍的參數,==通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。==pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

      page 對象

      page 對象代表JSP本身。

      exception 對象

      exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用。

      請求轉發

      什么是請求轉發

      請求轉發是服務端的一種請求方式,相當于在服務端中直接請求某個資源。

      RequestDispatcher dispatcher = request.getRequestDispatcher("/test.jsp");

      dispatcher.forward(request,response);

      簡寫方式:

      request.getRequestDispatcher("/test.jsp").forword(request,response);

      請求轉發與重定向的區別

      1. 請求轉發對于客戶端瀏覽器而言是在一次請求與響應中完成,而重定向是在兩次請求兩次響應中完成。
      2. 請求轉發并不會改變客戶端瀏覽器的地址欄中的內容。而重定向會改變客戶端瀏覽器地址欄中的內容。
      3. 請求轉發可以使用request對象傳遞數據,而重定向不能使用request對象傳遞數據。
      4. 如果是處理的DML操作,建議使用重定向方式為客戶端瀏覽器產生響應,可以解決表單重復提交現象。
      
      ## JSP中的四大作用域對象
      
      作用域:“數據共享的范圍”,也就是說數據能夠在多大的范圍內有效。
      
      | 對象名稱    | 作用范圍         |
      | ----------- | ---------------- |
      | application | 整個應用都有效   |
      | session     | 在當前會話中有效 |
      | request     | 在當前請求中有效 |
      | page        | 在當前頁面有效   |
      
      ## JSTL標簽庫
      
      ### 什么是JSTL標簽庫
      
      JSTL(Java server pages standard tag library,即JSP標準標簽庫)JSTL標簽是基于JSP頁面的。這些標簽可以插入在JSP代碼中,本質上JSTL也是提前定義好的一組標簽,這些標簽封裝了不同的功能,在頁面上調用標簽時,就等于調用了封裝起來的功能。JSTL的目標是使JSP頁面的可讀性更強、簡化JSP頁面的設計、實現了代碼復用、提高效率。
      
      在JSP2.0版本后開始支持JSTL標簽庫。在使用JSTL標簽庫時需要在JSP中添加對應的taglib指令標簽。
      
      ```jsp
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      

      JSTL標簽分類

      根據JSTL標簽所提供的功能,可以將其分為5個類別。

      核心標簽

      最常用、最重要,也是最基本的標簽

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

      JSTL格式化標簽用來格式化并輸出文本、日期、時間、數字。

      <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
      
      SQL標簽

      JSTL SQL標簽庫提供了與關系型數據庫(Oracle,MySQL,SQL Server等等)進行交互的標簽。

      <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
      
      XML標簽

      JSTL XML標簽庫提供了創建和操作XML文檔的標簽。

      <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
      
      JSTL函數

      JSTL包含一系列標準函數,大部分是通用的字符串處理函數。

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

      EL表達式

      什么是EL表達式

      EL(Expression Language)是一種表達式語言。是為了使JSP寫起來更加簡單,減少java代碼,可以使得獲取存儲在Java對象中的數據變得非常簡單。在JSP2.0版本后開始支持EL表達式。

      語法結構

      ${表達式}

      ${對象.屬性名}

      EL表達式中的操作符

      操作符描述
      ( )優先級
      +
      -減或負
      *
      / 或div
      % 或 mod取模
      == 或 eq測試是否相等
      != 或 ne測試是否不等
      < 或 lt測試是否小于
      > 或gt測試是否大于
      <= or le測試是否小于等于
      >= 或 ge測試是否大于等于
      && 或 and測試邏輯與
      || 或 or測試邏輯或
      ! 或not測試取反
      empty測試是否空值

      EL表達式的隱含對象

      隱含對象描述
      pageScopepage 作用域
      requestScoperequest 作用域
      sessionScopesession 作用域
      applicationScopeapplication 作用域
      paramRequest 對象的參數,字符串
      paramValuesRequest對象的參數,字符串集合
      headerHTTP 信息頭,字符串
      headerValuesHTTP 信息頭,字符串集合
      initParam上下文初始化參數
      cookieCookie值
      pageContext當前頁面的pageContext

      使用EL表達式取出作用域中的值

      ${pageScope.name}

      ${requestScope.name}

      ${sessionScope.name}

      ${applicationScope.name}

      獲取作用域屬性中的數據時,也可以只寫屬性名,EL表達式會按照pageScope、requestScope、sessionScope、applicationScope的順序查找該屬性的值。

      ${name}

      JSTL標簽庫與EL表達式的使用

      JSTL標簽庫的使用步驟

      1. 添加jstl.jar
      2. 在JSP頁面中添加taglib指令標簽。

      JSTL核心標簽的使用

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

      < c : if >

      標簽判斷表達式的值,如果表達式的值為 true 則執行其主體內容。

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <html>
      <head>
         <title>Title</title>
      </head>
      <body>
         <c:if test="${1==1}">
             Hello,JSTL
         </c:if>
      </body>
      </html>
      
      

      < c:choose >, < c:when >, < c:otherwise >

      < c:choose >標簽與Java switch語句的功能一樣,用于在眾多選項中做出選擇。

      switch語句中有case,而< c:choose >標簽中對應有< c:when >,switch語句中有default,而< c:choose >標簽中有< c:otherwise >。

      如果有多個< c:when >條件都滿足,則返回第一個< c:when >條件對應的內容,如果都不滿足,則返回< c:otherwise >條件中的內容!

      < c:forEach >

      迭代器,用于迭代集合。

      屬性描述
      items被迭代的集合
      begin迭代器的起始因子
      end迭代器的結束因子
      step迭代因子的增長數
      var代表當前迭代元素的變量名稱
      varStatus代表循環狀態的變量名稱
      varStatus 屬性
      current當前這次迭代的(集合中的)項
      index當前這次迭代從 0 開始的迭代索引
      count當前這次迭代從 1 開始的迭代計數
      first用來表明當前這輪迭代是否為第一次迭代的標志
      last用來表明當前這輪迭代是否為最后一次迭代的標志
      begin屬性值
      end屬性值
      step屬性值
      <c:forEach begin="0" end="9" step="2" varStatus="shuxin">
          forEach......${shuxin.count}  ${shuxin.first}  ${shuxin.last}  ${shuxin.index}<br/>
      </c:forEach>
      

      使用ForEach迭代List

      需求:

      創建Users對象,含有userid,username屬性。

      創建一個Servlet,在Servlet中創建多個Users對象并放到List集合中,在showUsers.jsp的頁面中顯示所有的Users對象的信息。

      Users對象

      public class Users {
          private Integer userid;
          private String username;
      
          public Users() {
          }
      
          public Users(Integer userid, String username) {
              this.userid = userid;
              this.username = username;
          }
      
          public Integer getUserid() {
              return userid;
          }
      
          public void setUserid(Integer userid) {
              this.userid = userid;
          }
      
          public String getUsername() {
              return username;
          }
      
          public void setUsername(String username) {
              this.username = username;
          }
      }
      
      

      FindUsersServlet

      @WebServlet("/findUser.do")
      public class FindUsersServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              this.doPost(req,resp);
          }
      
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //創建Users對象
              Users users1=new Users(1,"zhangsan");
              Users users2=new Users(2,"lisi");
              //實例化List容器
              List<Users> list = new ArrayList<>();
              list.add(users1);
              list.add(users2);
      
              //將list傳入到Request對象中
              req.setAttribute("list",list);
              //通過請求轉發的方式調用JSP渲染頁面
              req.getRequestDispatcher("showUser.jsp").forward(req,resp);
          }
      }
      
      

      showUsers.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
          <table border="1" align="center">
              <tr>
                  <th>用戶ID</th>
                  <th>用戶名</th>
              </tr>
              <c:forEach items="${requestScope.list}" var="users">
                  <tr>
                      <td>${users.userid}</td>
                      <td>${users.username}</td>
                  </tr>
              </c:forEach>
          </table>
      </body>
      </html>
      
      

      使用ForEach迭代Map

      需求:

      創建Users對象,含有userid,username屬性。

      創建一個Servlet,在Servlet中創建多個Users對象并放到Map集合中,在showUsers2.jsp的頁面中顯示所有的Users對象的信息。

      FindUsersServlet2

      @WebServlet("/findUsers2.do")
      public class FindUsers2Servlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              this.doPost(req,resp);
          }
      
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //創建Users對象
              Users users1=new Users(1,"zhangsan");
              Users users2=new Users(2,"lisi");
              //實例化Map容器
              Map<String,Users> map = new HashMap<>();
              map.put("users1",users1);
              map.put("users2",users2);
      
              //將Map傳入到Request對象中
              req.setAttribute("map",map);
              //通過請求轉發的方式調用JSP渲染頁面
              req.getRequestDispatcher("showUser2.jsp").forward(req,resp);
          }
      }
      
      

      showUsers2.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
      <table border="1" align="center">
        <tr>
          <th>Map的key</th>
          <th>用戶ID</th>
          <th>用戶名</th>
        </tr>
        <c:forEach items="${requestScope.map}" var="users">
          <tr>
            <td>${users.key}</td>
            <td>${users.value.userid}</td>
            <td>${users.value.username}</td>
          </tr>
        </c:forEach>
      </table>
      </body>
      </html>
      
      

      JSTL格式化標簽的使用

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

      對日期的格式化處理

      <fmt:formatDate value="${data}" pattern="yyyy-MM-dd"/>
      

      對數字格的式化處理

      <fmt:formatNumber value="${balance}" type="currency"/>
      
      @WebServlet("/format.do")
      public class FormatServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              req.setAttribute("date",new Date());
              req.setAttribute("number",18613453.4868);
              req.getRequestDispatcher("format.jsp").forward(req,resp);
          }
      }
      
      
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
        ${requestScope.date}
        <hr/>
        <fmt:formatDate value="${requestScope.date}" pattern="yyyy-MM-dd" />
        <hr/>
      <fmt:formatNumber value="${requestScope.number}" type="currency"/>
      
      </body>
      </html>
      

      MVC模式

      什么是MVC模式

      MVC模式:Model、View、Controller即模型、視圖、控制器。是軟件的一種架構模式(Architecture pattern)。MVC要實現的目標是將軟件的用戶界面和業務邏輯分離,可提高代碼可擴展性、可復用性、可維護性、以及靈活性。

      View(視圖):用戶的操作界面。如:html、jsp。

      Model(模型):具體的業務模型與數據模型。如:service、dao、pojo。

      Controller(控制):處理從視圖層發送的請求,并選取模型層的業務模型完成響應的業務實現,并產生響應。如:Servlet。

      MVC模式與應用程序分層的區別

      MVC模式是一種軟件的架構方式,而應用程序分層這是一種代碼的組織方式。MVC模式與應用程序分層的目標都是一致的:為了解耦和、提高代碼復用性。

      posted @ 2023-11-20 12:37  Gjq-  閱讀(132)  評論(0)    收藏  舉報  來源
      主站蜘蛛池模板: 蜜臀av久久国产午夜福利软件| 亚洲国产日韩a在线播放| 在线视频中文字幕二区| 久久亚洲精品人成综合网| 日韩国产欧美精品在线| 精品人妻伦一二二区久久| 欧美牲交a欧美在线| 亚洲日本乱码熟妇色精品| 国产日韩av二区三区| 国产精品中文字幕二区| 国产成人精品无人区一区| 蜜臀av久久国产午夜| 加勒比中文字幕无码一区| 国产精品小视频一区二页| 亚洲国产成人综合精品| 国产av人人夜夜澡人人爽麻豆| 午夜福利偷拍国语对白| 国产乱码日产乱码精品精| 亚洲三区在线观看内射后入| 日本一区不卡高清更新二区| 亚洲精品中文字幕尤物综合| 日韩AV无码精品一二三区| 麟游县| 日本亚洲一区二区精品久久| 国语精品自产拍在线观看网站| 和顺县| 波多野结衣av无码| 成人免费无遮挡无码黄漫视频| 色二av手机版在线| 又爽又黄又无遮挡的视频| 日韩一区二区在线看精品| 亚洲精品一区二区天堂| 国产免费踩踏调教视频| 日本韩国日韩少妇熟女少妇| 亚洲香蕉av一区二区蜜桃| 亚洲av永久一区二区| 国产高清自产拍av在线| 国产成人综合色就色综合| 亚洲日韩性欧美中文字幕| 人妻少妇看a偷人无码| 亚洲一区二区av免费|