javaweb學習總結-----jsp原理

一、什麼是JSP?

JSP全稱是Java Server Pages,它和servle技術一樣,都是SUN公司定義的一種用於開發動態web資源的技術。
  JSP這門技術的最大的特點在於,寫jsp就像在寫html,但它相比html而言,html只能爲用戶提供靜態數據,而Jsp技術允許在頁面中嵌套java代碼,爲用戶提供動態數據。

二、JSP原理
Web服務器是如何調用並執行一個jsp頁面的?
  瀏覽器向服務器發請求,不管訪問的是什麼資源,其實都是在訪問Servlet,所以當訪問一個jsp頁面時,其實也是在訪問一個Servlet,服務器在執行jsp的時候,首先把jsp翻譯成一個Servlet,所以我們訪問jsp時,其實不是在訪問jsp,而是在訪問jsp翻譯過後的那個Servlet

追究本質

【IDEA注意點】

idea的Tomcat work在他自己的空間中;

C:\Users>IntelliJIdea2018.1>{用戶}>IntelliJIdea2018.1>system>tomcat>Web項目>找JSP生成的Servlet

===

Tomcat在工作的時候,將我們的Jsp頁面轉換成了java類

在這裏插入圖片描述
打開這個類分析:

他繼承一個類:HTTPJSPBase , 沒有直接繼承HttpServlet , 但是HTTPJSPBase繼承了HttpServlet,所以得出結論

JSP本身就是一個servlet的方式運行的

那他怎麼輸出頁面的呢?發現他是使用out對象輸出到瀏覽器
在這裏插入圖片描述
那這個out對象上去的方式是什麼呢?

發現,有一個_jspService可以執行操作我們的JSP,將他輸出到前端頁面。
在這裏插入圖片描述
繼續分析源碼,得到一些屬性;
在這裏插入圖片描述

JSP基礎語法

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--
JSP基礎語法
  1.JSP獲得變量的值 <%= 表達式或者變量值 %>
  2.JSP定義局部變量:寫一段Java代碼   <% Java代碼 %>
    注意點:必須嚴格遵守Java規範
  3.JSP定義全局變量 <%! 全局變量或方法 %>

簡化符:因爲HTML是標記語言,我們需要一些標記
EL表達式和JSTL標籤

    ${}  ==  <%= %> 聯繫和區別
    EL表達式一般用來輸出變量的值;而不能是一個對象;

tomcat會在jsp解析的時候將_jspService轉換成對應的doget。dopost,我們正常方式無法直接調用!

//JSP內置對象:
    pageContext 作用域:
          application = pageContext.getServletContext(); 應用
          session = pageContext.getSession(); 會話
          request = 請求
          page = this; 頁面

      ===
      out.輸出
--%>


<%!
  int i = 0;

  public int add(int a,int b){
      return a+b;
  }

%>


<%
//Java代碼
String name = "qinjiang";
int age = 18;
int j = 0;
    Date date = new Date();

    out.write(
            (java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate
                    ("${name}", java.lang.String.class,
                            (javax.servlet.jsp.PageContext)_jspx_page_context,
                            name
                    )
    );

%>


<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>

  <h1>

日期:<%=new Date()%>
名字:<%=name%>
年齡:<%=age%>
i:<%=i++%>
j:<%=j++%>

  </h1>

  </body>
</html>

JSP使用

jsp代碼可以在不同的 <%%>中實現,但是,Java代碼必須保持完成,否則500;

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>首頁</title>
  </head>
  <body>

  <%--在頁面輸出100個Hello,World--%>

  <%
      for (int i = 0; i < 100; i++) {
  %>
      <h1>Hello,World</h1>
  <%
      }
  %>

 
  </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章