1.什麼是jsp,它有什麼用?
jsp的全稱是java server pages。是Java的伺服器頁面。
jsp的主要作用是代替Servlet程式回傳html頁面的資料。
因為Servlet程式回傳html頁面資料是一件非常繁瑣的事情、開發成本和維護成本都極高。
2.jsp如何通路?
jsp頁面和html頁面一樣,都是存放在web目錄下,通路也跟通路html頁面一樣。
比如:
在web目錄下有如下的檔案:
web目錄
a.html頁面 通路位址是======>>>>>> http://ip:port/工程路徑/a.html
b.jsp頁面 通路位址是======>>>>>> http://ip:port/工程路徑/b.jsp
3.jsp的本質是什麼?
jsp頁面的本質上是一個Servlet程式。
原因:
當我們第一次通路jsp頁面時,Tomcat伺服器會幫我們把jsp頁面翻譯成為一個java源檔案,并且對它編譯成為.class位元組碼程式。我們打開java源檔案不難發現其裡面的内容是:
我們跟蹤源代碼發現,HttpJspBase類。它直接繼承了HttpServlet類。也就是說,jsp翻譯出來的java類,間接繼承了HttpServlet類,也就是說,翻譯出來是一個Servlet程式。
總結:通過翻譯的java源代碼我們就可以得到結果:jsp就是Servlet程式。
大家也可以去觀察翻譯出來的Servlet程式的源代碼,不難發現,其底層實作,也是通過輸出流,把html頁面資料回傳給用戶端。
4. jsp的三種文法
a)jsp頭部的page指令
jsp的page指令可以修改jsp頁面中的一些在重要的屬性或者行為。
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
b)jsp中的常用腳本
i. 聲明腳本(極少使用)
聲明腳本的格式是: <%! 聲明java代碼%>
作用:
可以給jsp翻譯出來的java類定義屬性和方法甚至是靜态代碼塊、内部類等。
1.聲明類屬性
2.聲明static靜态代碼塊
3.聲明類方法
4.聲明内部類
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/7/18
Time: 8:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--練習:
1.聲明類屬性
2.聲明static靜态代碼塊
3.聲明類方法
4.聲明内部類
--%>
<%--1.聲明類屬性--%>
<%!
private Integer id;
private String name;
private static Map<String,Object> map;
%>
<%--2.聲明static靜态代碼塊--%>
<%!
static{
map=new HashMap<String,Object>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
}
%>
<%--3.聲明類方法--%>
<%!
public int abc(){
return 12;
}
%>
<%--4.聲明内部類--%>
<%!
public static class A{
private Integer id=12;
private String abc="abc";
}
%>
</body>
</html>
ii. 表達式腳本(常用)
表達式腳本的格式是:<%=表達式%>
表達式腳本的作用是:在jsp頁面上輸出資料。
表達式腳本的特點:
1.所有的表達式腳本都會被翻譯到_jspService方法中
2.表達式腳本都會被翻譯成為out.print()輸出到頁面上
3.由于表達式腳本翻譯的内容都在_jspService()方法中,是以_jspService()方法中的對象都可以直接使用。
4.表達式腳本中的表達式不能以分号結束。
練習:
1.輸出整型
2.輸出浮點型
3.輸出字元串
4.輸出對象
<%=12 %><br>
<%=12.12%><br>
<%="我是字元串"%><br>
<%=map%><br>
<%=request.getParameter("username")%>
浏覽器結果:
iii.代碼腳本
代碼腳本的格式:
<%
java語句
%>
代碼腳本的作用是:可以在jsp頁面中,編寫我們自己需要的功能(寫的是java語句)。
代碼腳本的特點是:
1.代碼腳本翻譯之後都在_jspService方法中
2.代碼腳本由于翻譯到_jspService()方法中,是以在_jspService()方法中的現有對象都可以直接使用。
3.還可以由多個代碼腳本塊組合完成一個完整的java語句。
6.jsp中的out輸出和response.getWriter輸出的差別
response中+表示響應,我們經常用于設定傳回給用戶端的内容(輸出)
out也是給使用者做輸出使用的。