簡介:(全稱Java Server Pages),jsp是一個特殊的servlet;Servlet通常應用於邏輯控制,至關於mvc中Controller;servle的t不足:寫一堆的html標籤拼接;jsp是在java+html基礎上,可寫java代碼和html標籤,主要用於頁面的顯示;把jsp看成html用;你雖然會在jsp中寫java代碼,可是你別寫,java代碼主要寫在servlet中;html
基礎: jsp的註釋:< % --java
<%@:表明聲明的是jspweb
language:語言瀏覽器
contentType:上下文(網頁)用瀏覽器以什麼樣的類型和編碼打開tomcat
pageEncoding:文件保存在服務器上的編碼服務器
<%:都是給tomcat看的,都要通過服務器運行session
<%%>:可寫java代碼mvc
輸出:<%=>至關於out.println()app
代碼示例:1.<% //輸出到頁面 out.println("jsp"); %>jsp
2.<%! //定義一個無返回值的方法 public void run(){
System.out.print("run....");
}
//定義一個有返回值的方法 public int num(int a,int b){
return a+b;
} %>
3. <% run();
int c=num(5,10);
System.out.print(c);
out.print(c); %>
<%=num(2,5) %>
4.<%int i=1;while(i<=20){%> <span style="color: red"><%=i %></span><%i++;} %>
5.打印九九乘法口訣表:
<table border="1" style="background: red;">
<%for(int i = 1 ; i < 10 ; i ++){%>
<tr>
<%for(int j = 1 ; j <= i ; j ++){%>
<td><%=i %> * <%=j %> = <%=i * j %></td>
<%}%> </tr>
<%}%></table>
1.標籤
2.Jsp生命週期和servlet同樣;
_jspInit()初始化
_jspService()服務:主要功能代碼
_jspDestroy()銷燬
3.原理:Jsp被編譯過的路徑,通常在tomcat的work目錄;jsp被翻譯成:jsp名+_jsp.java文件,繼承HttpJspBase實現了HttpServlet,再給編譯成字節碼文件:jsp名+_jsp.class
4.Jsp執行過程:
用戶客戶端訪問頁面發送請求,被web服務器翻譯成.java文件,而後被jdk編譯成class文件,最後在被web服務器解析成html響應到客戶端;
5.頁面跳轉
<!-- 相對路徑 --><button><a href="first.jsp">first1</a></button>
<!-- 絕對路徑 --><button><a href="http://localhost:8080/com.jh.web/first.jsp">first2</a></button>
<%//獲取的是路徑:以防哪一天老闆心情很差改了項目名String path=request.getContextPath();%><button><a href="<%=path %>/first.jsp">first3</a></button>
<!-- 利用jsp標籤 --><jsp:forward page="first.jsp"></jsp:forward>
請求轉發:<%request.getRequestDispatcher("first.jsp").forward(request, response);%>
//重定向<%response.sendRedirect("first.jsp");%>
請求轉發與重定向的區別:
forward:服務器轉發 只發送一次請求,地址欄未發生改變 轉發效率高 只能訪問本網站頁面
Redirect:客戶端轉發 發送了兩次請求,地址欄發生了改變 轉發效率低 可訪問其餘網站頁面
--%>
三.註冊登陸頁面:
第一步:
第二步:
第三步:
第四步:
第五步:
第六步:
第七步:
第八步:
第九步:
第十步:
四.
內置對象不用再像java同樣new對象,直接拿着使用;
name |
類型 |
描述(decription) |
pageContext |
PageContext |
上下文 |
session |
HttpSession |
會話 |
application |
ServletContext |
應用服務 |
config |
ServletConfig |
配置 |
out |
JspWriter |
輸出 |
page |
index_jsp |
Jsp的java文件 |
request |
HttpServletRequest |
請求 |
response |
HttpServletResponse |
響應 |
e |
Exception |
異常 |
做用域 |
描述 |
Page(pageContext) |
當前頁 |
request |
一次請求(多個頁面) |
session |
一次會話 |
application |
應用 |
做用域大小:application > session > request > pageContext;使用規則能用小的做用域不要大的做用域,浪費內存
<body>
<%--
測試pageContext做用域
--%>
<%
pageContext.setAttribute("name", "岳飛");
%>
<%
String name=(String)pageContext.getAttribute("name");
out.print(name);
%>
</body>