初識JSP,第一天

1.什麼JSP
java Server Page java 服務端的頁面,它和servlet 同樣能夠提供動態的html 響應。 不一樣的是 servlet 以 java 代碼 爲主
jsp 以html 爲主 內嵌少許的java 代碼。 jsp 以 .jsp 結尾.以最簡單的一個爲例html

 1 <%@page import="java.util.Date"%>
 2 <%@ page language="java" contentType="text/html; charset=utf-8"
 3     pageEncoding="utf-8"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>Time</title>
 9 </head>
10 <body>
11     如今時間是:<%= new Date()%>
12     
13 </body>
14 </html>
View Code

 2.JSP 和 Servlet 的關係 java

  當請求jsp 頁面時,服務器端會把 jsp頁面通過 轉義(把jsp 變成java)編譯 (java 變成class)造成servlet 對象 就能夠提供動態的html 響應。因此jsp 本質上就是servlet。 apache

生成的.jsp.java路徑是E:\apache-tomcat-8.0.52\work\Catalina\localhost\jsp-day06\org\apache\jsp 瀏覽器

寫個簡單的例子:tomcat

<%!
    int s = 10001;
    public String getName() {
        return "liweijie";
    }
%> <%=s %><br> <%=getName()
輸出:
10001
liweijie

3.聲明區
語法 : <%! %>
做用: 用來定義變量 以及 定義方法
服務器

<%!
    int s = 10001;
    public String getName() {
        return "liweijie";
    }%>
View Code

 

4.表達式
語法: <%=表達式%>
做用:使用表達式來進行取值
app

 <%=getName() %>jsp

5.代碼區
語法: <% %>
做用:可使用任何的java語法 編寫java 代碼 ;好了下面咱們來個進階的,前提是謝謝好一個model實體類BankAccount:ide

      <%
        BankAccount acc = new BankAccount(1, "1001", "12345", 12);
        BankAccount a1cc = new BankAccount(2, "1002", "12345", 13);
        
      %>
    <table>
        <tr>
            <td>id</td>
            <td>acc_no</td>
            <td>password</td>
            <td>money</td>
        </tr>
        <tr>
            <td><%=acc.getId()%></td>
            <td><%=acc.getAcc_no()%></td>
            <td><%=acc.getAcc_password()%></td>
            <td><%=acc.getAcc_money()%></td>
        </tr>
        <tr>
            <td><%=a1cc.getId()%></td>
            <td><%=a1cc.getAcc_no()%></td>
            <td><%=a1cc.getAcc_password()%></td>
            <td><%=a1cc.getAcc_money()%></td>
        </tr>
    </table>

固然,這種方式顯然還不夠簡介,因此咱們再次將<tr>進行升級:ui

<%
        BankAccount acca = new BankAccount(1, "1001", "12345", 12);
        BankAccount a1cc = new BankAccount(2, "1002", "12345", 13);
        BankAccount a1ce = new BankAccount(3, "1003", "45645", 324);
        BankAccount a1cf = new BankAccount(4, "1004", "976", 433);
        List<BankAccount> list = new ArrayList<>();
        list.add(acca);
        list.add(a1cc);
        list.add(a1ce);
        list.add(a1cf);
    %>
    <table>
        <tr>
            <td>id</td>
            <td>acc_no</td>
            <td>password</td>
            <td>money</td>
        </tr>

        <!-- 方法一:此處不能使用PrintWriter, 使用PrintWriter打印的位置不正確 -->
        <%
            for (int i = 0; i < list.size(); i++) {
                BankAccount acc = list.get(i);
                out.append("<tr>");
                out.append("<td>" + acc.getId() + "</td>");
                out.append("<td>" + acc.getAcc_no() + "</td>");
                out.append("<td>" + acc.getAcc_password() + "</td>");
                out.append("<td>" + acc.getAcc_money() + "</td>");
                out.append("");
                out.append("</tr>");
            }
        %>
        <tr>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <!-- 方法二:此處不能使用PrintWriter, 使用PrintWriter打印的位置不正確 -->
        <%
            for (int i = 0; i < list.size(); i++) {
                BankAccount acc = list.get(i);
                String s1 = "<tr><td>'" + acc.getId() + "'</td><td>'" + acc.getAcc_no() + "'</td><td>'"
                        + acc.getAcc_password() + "'</td><td>'" + acc.getAcc_money() + "'</td></tr>";
            }
        %>

        <!-- 方法三:此處不能使用PrintWriter, 使用PrintWriter打印的位置不正確 -->

    </table>
View Code

雖然已經升級了,但做爲一個開發者來講,顯然仍是不夠完美:

 1 jsp頁面:
 2 
 3     <%
 4      List<BankAccount> list=(List<BankAccount>)request.getAttribute("accounts");
 5     %>
 6 
 7         <%
 8         
 9             for(int i=0;i<list.size();i++){
10                 BankAccount acc = list.get(i);
11                 out.append("<tr>");
12                 out.append("<td>" + acc.getId() + "</td>");
13                 out.append("<td>" + acc.getAcc_no() + "</td>");
14                 out.append("<td>" + acc.getAcc_password() + "</td>");
15                 out.append("<td>" + acc.getAcc_money() + "</td>");
16                 out.append("");
17                 out.append("</tr>");
18             }
19           %>
20 servlet頁面:
21 @WebServlet("/BankAccount.do")
22 public class S_BankAccount extends HttpServlet {
23     private static final long serialVersionUID = 1L;
24 
25     protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
26         //response.setContentType("text/html;charset=utf-8");
27         //BankAccount
28         BankAccount acca = new BankAccount(1, "1001", "12345", 12);
29         BankAccount a1cc = new BankAccount(2, "1002", "12345", 13);
30         BankAccount a1ce = new BankAccount(3, "1003", "45645", 324);
31         BankAccount a1cf = new BankAccount(4, "1004", "976", 433);
32         List<BankAccount> accounts = new ArrayList<>();
33         accounts.add(acca);
34         accounts.add(a1cc);
35         accounts.add(a1ce);
36         accounts.add(a1cf);
37         request.setAttribute("accounts", accounts);
38         //轉發給demo5.jsp
39         request.getRequestDispatcher("demo5.jsp").forward(request, response);
40     }
View Code

6.註釋
  6.1 標記語言的註釋 -- 發給瀏覽器 瀏覽器經過查看源代碼能夠看到
  <!-- 這是第二種顯示數據的方式 -->
  6.2 jsp語法註釋
  <%-- 這是jsp語法註釋 不發給瀏覽器 --%>
  6.3 java語言註釋
 在代碼塊中可使用 java語言的註釋 也不發給瀏覽器
7.JSP中的指令
  7.1 指令的格式
  <%@指令名 屬性="屬性值" 屬性2="屬性值" %>
  7.2 jsp 中的三大指令
  page 指令 用來導包 和 作一些頁面屬性的設置
  import 導入對應的類型
  buffer 緩衝大小 默認 8k
errorPage 當頁面出現錯誤 跳轉到錯誤展現頁面
isErrorPage 是否是一個展現錯誤的頁面 若是是就是true 不是就是false
pageEncoding 頁面文字的編碼
contentType 響應的格式 和 顯示的編碼
isELIgnored 是否忽略EL表達式 默認 是false
taglib 指令 標籤庫指令 用來引入對應的標籤庫位置
prefix 標籤庫的簡稱
uri 標籤庫的位置標識
include 指令 頁面包含指令 用來包含指定的頁面 (靜態包含)
file 指定包含的文件 (先把被包含頁面 拷貝到對應的頁面 再轉回成servlet
因此只有一個servlet 產生)

8.JSP 中的動做
8.1 include 動做 (動態包含)
<jsp:include page="頁面的位置" />
jsp 的include 動做叫動態包含 意思是 先將被包含的頁面轉換成對應的class
而後再將被包含的頁面 動態的加載到 包含頁面,因此這樣會產生兩個class文件。
其實動態包含 還體如今 能夠向被包含頁面傳遞數據。
經過<jsp:param value="值" name="key" /> 在被包含頁面
使用request.getParameter("key")

圖片轉載自:https://blog.csdn.net/u011024652/article/details/52026920 8.2 forward 動做 jsp 頁面中能夠經過java 代碼來完成轉發 也可使用 <jsp:forward 動做來完成轉發 同時 利用 <jsp:param 進行參數傳遞。 9.發送一個 bankAccountAll.do 到達一個servlet 。這個servlet 建立DAO 實現類對象 並經過dao 對象 獲取銀行帳戶列表。把這個銀行帳戶列表放入request 中轉發到對應的jsp 頁面 在jsp 頁面中把銀行帳戶列表數據顯示到一個table表格中。

相關文章
相關標籤/搜索