日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Java web后端5 JSP技术

發布時間:2023/12/13 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java web后端5 JSP技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JSP概述

HTML代碼與Java代碼共同存在

瀏覽器中顯示


啟動Tomcat
瀏覽器訪問:http://localhost:8083/JSPWeb_war_exploded/hello.jsp

<%--Created by IntelliJ IDEA.User: DQDate: 2021/10/20Time: 9:30To change this template use File | Settings | File Templates. --%> <%--JSP的指令--%> <%--瀏覽器訪問:http://localhost:8083/JSPWeb_war_exploded/hello.jsp--%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <h1 style="color: red">Hello World!</h1> </body> </html>

JSP工作原理

jsp工作原理:web服務器(tomcat\jboss等)先把jsp文件翻譯成servlet的java文件,然后編譯成字節碼文件,就是.class文件,當客戶端訪問的時候,服務器直接裝載jsp對應的servlet的字節碼文件。



Tomcat中存放jsp文件的位置

把jsp文件編譯為class文件和java文件

JSP腳本元素

JSP腳本元素:JSP Scriptlets


JSP腳本元素:JSP聲明語句

JSP腳本元素:JSP表達式

JSP注釋

后端注釋,前端和瀏覽器看不到
java,JSP,H5的注釋都可以在JSP中寫

<!----><%----%><%-- ///****/ --%>

案例:使用JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <%--JSP Scriptlets--%> <%int[]a=new int[10];for(int i=0;i<10;i++) {a[i] = i;} %><%--JSP聲明語句--%> <%! int x=9,y=10;%><%--JSP表達式--%> x=<%=x%><br> y=<%=y%></body> </html>

案例:使用html的表格和JSP輸出九九乘法表

代碼1

<%--Created by IntelliJ IDEA.User: DQDate: 2021/10/20Time: 16:24To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <h1 style="color: aquamarine">九九乘法表</h1> <%--border:表格邊框;cellspacing屬性:設置單元格間距--%> <table border="1" cellpadding="10"><%for (int i = 1; i <= 9; i++) {%><tr><%for (int j = 1; j <= i; j++) {%><%--h5:table: tr行,td列--%><td><%=i%>*<%=j%>=<%=i * j%><%="\t"%></td><%}%></tr><%}%> </table></body> </html>

代碼2

<%--Created by IntelliJ IDEA.User: DQDate: 2021/10/20Time: 16:24To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <h1 style="color: aquamarine" >九九乘法表</h1> <%--border:表格邊框;cellspacing屬性:設置單元格間距--%> <table border="1" cellpadding="10"><%for (int i = 1; i <= 9; i++) {%><tr><%for (int j = i; j <= 9; j++) {%><%--h5:table: tr行,td列--%><td><%=i%>*<%=j%>=<%=i * j%><%="\t"%></td><%}%></tr><%}%> </table></body> </html>

Html5的設置表格形式:

<td style="border: 2px solid black;padding: 2px"><%=i%>*<%=j%>=<%=i * j%></td>

JSP指令:page指令


需要注意的是,page指令對整個頁面都有效,而與其書寫的位置無關(先編譯指令再解析內容),但是習慣上把page指令寫在JSP頁面的最前面。

JSP常見page指令

其中,除了import屬性外,其他的屬性都只能出現一次,否則會編譯失敗。需要注意的是,page指令的屬性名稱都是區分大小寫的。
language取值只有java

案例:jsp錯誤頁面跳轉

源頁面

錯誤頁面:

瀏覽器:

JSP指令:include指令

靜態包含
靜態包含:在include位置上源碼直接替換,然后一起編譯為.class,.java【一個class,java文件】

動態包含:先編譯源碼,再把頁面結果返回當前頁面【兩個class,java文件】
–效果更快

注意事項:
包含站內資源(相對路徑)
頁面請求地址不會發生變化

案例:

JSP隱式對象

JSP容器自動創建的:
在JSP頁面中,有一些對象需要頻繁使用,如果每次都重新創建這些對象則會非常麻煩。為了簡化Web應用程序的開發,JSP2.0規范中提供了9個隱式(內置)對象,它們是JSP默認創建的,可以直接在JSP頁面中使用。

JSP隱式對象:out對象

在JSP頁面中,經常需要向客戶端發送文本內容,這時,可以使用out對象來實現。out對象是javax.servlet.jsp.JspWriter類的實例對象,out對象的類型為JspWriter,它相當于一種帶緩存功能的PrintWriter。

在JSP頁面中,通過out隱式對象寫入數據相當于將數據插入到JspWriter對象的緩沖區中,只有調用了ServletResponse.getWriter()方法,緩沖區中的數據
才能真正寫入到Servlet引擎所提供的緩沖區中。

案例:爆紅不影響

<%@ page contentType="text/html;charset=UTF-8" language="java" buffer="8kb" %> <html> <head><title>out對象:JSPWriter,PrintWriter</title> </head> <body> <% //內置對象JSPWriter /* 1.buffer="8kb"或默認不寫 JSPWriter的緩沖區沒有滿,只有調用了response.getWriter();才會寫入Response緩沖區(放在原來的內容后面) 所以先輸出: PrintWriter Instance 再輸出: JSPWriter Instance2.buffer="none" 寫JSPWriter沒有緩沖區,直接放入Response緩沖區 所以先輸出: JSPWriter Instance 再輸出: PrintWriter Instance3.如果buffer不夠大 輸出的內容可能第一句話在第二句話后面*/out.print("JSPWriter Instance"); %><br> <%//PrintWriter對象PrintWriter printWriter = response.getWriter();printWriter.print("PrintWriter Instance"); %> <br> </body> </html>

JSP隱式對象:pageContext對象

1.一般不使用這個功能
使用pageContext對象可以獲取JSP的其他8個隱式對象。pageContext對象是javax.servlet.jsp.PageContext類的實例對象,它代表當前JSP頁面的運行環境,并提供了一系列用于獲取其他隱式對象的方法。

2.存儲數據的功能
劃分了四個不同的存儲區域,scope默認為1【ageContext.PAGE_SCOPE:表示頁面范圍】
findAttribute:從小到大進行查找,找到就返回結果;找不到就擴大范圍繼續找到,最大范圍找不到就返回NULL


詳情:

案例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>pageContext</title> </head> <body> <%//1 2 3pageContext.setAttribute("str1", "page1", pageContext.PAGE_SCOPE);pageContext.setAttribute("str1", "page2");//同一范圍內同名的會覆蓋pageContext.setAttribute("str1", "request1", pageContext.REQUEST_SCOPE);pageContext.setAttribute("str2", "request2", pageContext.REQUEST_SCOPE);request.setAttribute("str2", "request3");pageContext.setAttribute("session", "session1", pageContext.SESSION_SCOPE);session.setAttribute("session", "session2");%> page=<br> <%=pageContext.getAttribute("str1")%><br> <%=pageContext.getAttribute("str1", 1)%><br> <%-- page2 page2 --%> request=<br> <%=request.getAttribute("str2")%><br> <%=pageContext.getAttribute("str1")%><br> <%=pageContext.getAttribute("str1", 2)%><br> <%--在page內沒有找到str2--%> <%=pageContext.getAttribute("str2")%><br> <%=pageContext.getAttribute("str2", 2)%><br> <%-- request3 page2 request1 null request3 --%> session=<br> <%=pageContext.getAttribute("session", pageContext.SESSION_SCOPE)%><br> <%=session.getAttribute("session")%><br> <%-- session2 session2 --%> </body> </html>

JSP動作元素

JSP的七個動作元素
<jsp:forward>:請求的轉發。相當于request.getRequestDispatcher(“”).foward(request,response);

<jsp:include>:動態包含。相當于request.getRequestDispatcher(“”).include(request,response);

<jsp:param>:參數傳遞。和jsp:forward或jsp:include配合使用用來傳遞參數。

<jsp:useBean>:在頁面上使用JavaBean類的對象。

JavaBean的特點:
是一個public類。
所有屬性都是private的,并提供共有的get、set方法。
只能有默認的無參構造。
必須定義包名。

<jsp:getProperty>:獲取JavaBean中的屬性值,相當于調用get方法

<jsp:setProperty>:向JavaBean的制定屬性設置值,相當于調用set方法

<jsp:plugins>:在頁面上引入java applet組件或javabean組件

<jsp:include>動作元素【動態包含】

動態包含:把其他的頁面內容,合并到當前要包含的頁面,最后一塊輸出。

基本語法格式:

<jsp:include page=“被包含頁面的URL” flush=“true或false”></jsp:include>

動態包含的特點:多個頁面的內容合并輸出,多個jsp頁面生成多個java文件,編譯成多個class文件。

靜態包含的特點:多個頁面的內容合并輸出,多個jsp頁面生成一個java文件,編譯成一個class文件。

<jsp:include>包含的原理是將被包含的頁面編譯處理后將結果包含在頁面中。當瀏覽器第一次請求一個使用<jsp:include>包含其他頁面的頁面時,Web容器首先會編譯被包含的頁面,然后將編譯處理后的返回結果包含在頁面中,之后編譯包含頁面,最后將兩個頁面組合的結果回應給瀏覽器。

案例:
瀏覽器:
5秒之后,輸出了Welcome here!!!

JspInclude1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>JspInclude1</title> </head> <body> 歡迎頁面:<br> <jsp:include page="jspInclude2.jsp" flush="true"/> </body> </html>

JspInclude2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>JspInclude2</title> </head> <body><%Thread.sleep(5000); %> welcome here!!! </body> </html>

<jsp:forward>動作元素

請求轉發:是同一個請求
只能請求站內資源,不能請求百度等資源

請求轉發地址欄不會發生改變,因為只是一次請求;而重定向地址欄會發生改變

案例:
瀏覽器
轉到了jspForward2.jsp

jspForward1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>jsp Forword:請求轉發1</title> </head> <body> 歡迎來到!!!<br> <jsp:forward page="jspForward2.jsp"></jsp:forward> </body> </html>

jspForward2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>jsp Forword:請求轉發2</title> </head> <body>你當前的時間:<br> <%out.write(new Date().toString()); %> </body> </html>

總結

以上是生活随笔為你收集整理的Java web后端5 JSP技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。