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

歡迎訪問 生活随笔!

生活随笔

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

javascript

JavaWeb总结(四)—JSP深入解析

發(fā)布時間:2025/4/14 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb总结(四)—JSP深入解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、JSP域對象

1.JSP屬性范圍(域對象范圍)????

JSP提供了四個域對象,分別是pageContextrequestsessionapplication

pageContext: 屬性范圍僅限于當前JSP頁面。一個屬性只能在一個頁面取得,跳轉到其他頁面無法取得。

request: 屬性作用范圍僅限于同一個請求。一個頁面中設置的屬性,只要經過了服務器的跳轉,跳轉之后的頁面都可以繼續(xù)取得。

session: 存儲在session對象中的屬性可以被屬于同一個會話的所有Servlet和JSP頁面訪問。瀏覽器打開到關閉稱作一次會話。

application: 存儲在application對象中的屬性可以被同一個Web應用程序的所有Servlet和JSP頁面訪問。

?

2.域對象的相關方法??

(1)setAttribute()

???? 設置屬性的方法。之前所講解的四種屬性范圍,實際上都是通過pageContext屬性范圍設置上的。打開pageContext所在的說明文檔。

PageContext類繼承了JspContext類,在JspContext類中定義了setAttribute方法,如下:

此方法中存在一個scope的整型變量,此變量就表示一個屬性的保存范圍。

后面有一個int類型的變量,在PageContext中可以發(fā)現有4種。

public static final int PAGE_SCOPE = 1;public static final int REQUEST_SCOPE = 2;public static final int SESSION_SCOPE = 3;public static final int APPLICATION_SCOPE = 4;

????? 這個setAttribute()方法如果不寫后面的int類型的scope參數,則此參數默認為PAGE_SCOPE,則此時setAttribute()方法設置的就是page屬性范圍,如果傳遞過來的int類型參數scope為REQUEST_SCOPE,則此時setAttribute()方法設置的就是request屬性范圍,同理,傳遞的scope參數為SESSION_SCOPE和APPLICATION_SCOPE時,則表示setAttribute()方法設置的就是session屬性范圍和application屬性范圍。

?

(2)getAttribute(String name)

???? 獲取指定的屬性。

?

(3)getAttributeNames()

???? 獲取所有屬性名字組成的Enumeration對象。

?

(2)removeAttribute(String name)

???? 移除指定的屬性。

?

二、請求轉發(fā)和重定向

?

1.用法

<html><head><title>My JSP 'hello.jsp' starting page</title></head><body><form action="ForwardServlet">年齡: <input type="text" name="age"><br><input type="submit" value="提交"></form></body> </html>

?

ForwardServlet.java

public class ForwardServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{String age = req.getParameter("age");System.out.println("ForwardServlet: age = " + age);//請求的轉發(fā)//1.調用HttpServletRequest的getRequestDispatcher()方法獲取RequestDispatcher對象。String path = "TestServlet";RequestDispatcher dispatcher = req.getRequestDispatcher("/" + path);//2.調用RequestDispatcher對象的forward()方法dispatcher.forward(req,resp);}public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{doGet(req,resp);}}

?

TestServlet.java

public class TestServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{String age = req.getParameter("age");System.out.println("TestServlet: age = " + age);}public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{doGet(req,resp);}}

結果:

ForwardServlet: age = 123
TestServlet: age = 123

?

如果把ForwardServlet內部重定向到TestServlet。

public class ForwardServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{String age = req.getParameter("age");System.out.println("ForwardServletage = " + age);//請求的重定向String path = "TestServlet";resp.sendRedirect(path);}public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{doGet(req,resp);}}

結果:

ForwardServletage = 23
TestServlet: age = null

??? sendRedirect 方法不僅可以重定向到當前應用程序中的其他資源,它還可以重定向到同一個站點上的其他應用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源。

???? 如果傳遞給sendRedirect 方法的相對URL以“/”開頭,則是相對于整個WEB站點的根目錄,而不是相對于當前WEB應用程序的根目錄。

?

2.區(qū)別

(1)請求轉發(fā):只向服務器發(fā)出一次請求。重定向: 向服務器發(fā)兩次請求。

(2)請求轉發(fā): 調用者與被調用者之間共享相同的request對象。重定向: 調用者與被調用者使用各自的request和response對象,它們屬于兩個獨立的請求和響應過程。

(3)請求轉發(fā):地址欄是初次發(fā)出請求的地址。重定向:地址欄不再是初次發(fā)送的請求地址,地址欄是最后響應的地址。

(4)請求轉發(fā): 只能將請求轉發(fā)給同一個WEB應用中的組件。重定向: 可以重定向到同一個站點上的其他應用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源。

(5)如果請求轉發(fā)的相對URL以“/”開頭,它是相對于整個WEB站點的根目錄;如果重定向指定的相對URL以“/”開頭,它是相對于當前WEB應用程序的根目錄。

?

三、JSP指令

?? ? JSP指令的基本語法格式: <%@ 指令 屬性名=屬性值 %>

???? eg: <%@ page contentType="text/html;charset=gb2312"%>

???? 在目前JSP中,定義了pageincludetaglib這三種指令,每種指令有都定義了一些各自的屬性。

??? 如果要在一個JSP頁面設置同一條指令的多個屬性,可以使用多條指令語句單獨設置每個屬性,也可以使用同一條語句設置該指令

第一種方式:

<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.util.Date"%>

第二種方式:

<%@ page contentType="text/html;charset=gb2312" import="java.util.Date"%>

?

1.Page指令

JSP 2.0規(guī)范中定義的page指令的完整語法:

<%@ page [ language="java" ] [ extends="package.class" ] [ import="{package.class | package.*}, ..." ] [ session="true | false" ] [ buffer="none | 8kb | sizekb" ] [ autoFlush="true | false" ] [ isThreadSafe="true | false" ] [ info="text" ] [ errorPage="relative_url" ] [ isErrorPage="true | false" ] [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] [ pageEncoding="characterSet | ISO-8859-1" ] [ isELIgnored="true | false" ] %>

(1)使用errorPage屬性指明出錯后跳轉的錯誤頁面

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page errorPage="/error.jsp" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>測試page指令的errorPage屬性</title></head><body><%//這行代碼肯定會出錯,因為除數是0,一運行就會拋出異常int x = 1 / 0;%></body> </html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>My JSP 'error.jsp' starting page</title></head><body><h1><font color="red">對不起,出錯了!!!</font></h1></body> </html>

結果:

?

(2)在web.xml使用<error-page>標簽為整個web應用設置錯誤處理頁面

  • 可以在web.xml文件中使用<error-page>元素為整個Web應用程序設置錯誤處理頁面。
  • <error-page>元素有3個子元素,<error-code>、<exception-type>、<location>
  • <error-code>: 指定錯誤的狀態(tài)碼,例如:<error-code>404</error-code>
  • <exception-type>: 指定異常類的完全限定名,例如:<exception-type>java.lang.ArithmeticException</exception-type>
  • <location>: 指定以“/”開頭的錯誤處理頁面的路徑例如:<location>/ErrorPage/404Error.jsp</location>
  • 如果設置了某個JSP頁面的errorPage屬性,那么在web.xml文件中設置的錯誤處理將不對該頁面起作用。

?

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 針對404錯誤處理頁面 --><error-page><error-code>404</error-code><location>/error404.jsp</location></error-page></web-app>

error404.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>My JSP 'error.jsp' starting page</title></head><body><h1><font color="red">各位看官,404喲</font></h1></body> </html>

當訪問一個不存在的web資源時,就會跳轉到在web.xml中配置的404錯誤處理頁面

?

2.include指令

? ?? 語法: <%@ include file="相對URL"%>。路徑以"/"開頭,代表當前Web應用。

???? include指令用于引入其它JSP頁面,如果使用include指令引入了其它JSP頁面,那么JSP引擎將把這兩個JSP翻譯成一個servlet。所以include指令引入通常也稱之為靜態(tài)引入。

include指令細節(jié)注意問題:

(1)被引入的文件必須遵循JSP語法。
(2)被引入的文件可以使用任意的擴展名,即使其擴展名是html,JSP引擎也會按照處理jsp頁面的方式處理它里面的內容,為了見明知意,JSP規(guī)范建議使用.jspf(JSP fragments(片段))作為靜態(tài)引入文件的擴展名。
(3)由于使用include指令將會涉及到2個JSP頁面,并會把2個JSP翻譯成一個servlet,所以這2個JSP頁面的指令不能沖突(除了pageEncoding和導包除外)。

?

head.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>My JSP 'head.jsp' starting page</title></head><body><h1><font color="red">這是網頁首部</font> </h1></body> </html>

foot.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>My JSP 'head.jsp' starting page</title></head><body><h1><font color="blue">這是網頁尾部</font> </h1></body> </html>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>test</title></head><body><%@ include file="/head.jsp" %><h1><font color="black">這是網頁內容</font> </h1><%@ include file="/foot.jsp" %></body> </html>

結果:

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports {private static final javax.servlet.jsp.JspFactory _jspxFactory =javax.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;static {_jspx_dependants = new java.util.HashMap<java.lang.String,java.lang.Long>(2);_jspx_dependants.put("/head.jsp", Long.valueOf(1460347479277L));_jspx_dependants.put("/foot.jsp", Long.valueOf(1460347481392L));}private static final java.util.Set<java.lang.String> _jspx_imports_packages;private static final java.util.Set<java.lang.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.HashSet<>();_jspx_imports_packages.add("javax.servlet");_jspx_imports_packages.add("java.util");_jspx_imports_packages.add("javax.servlet.http");_jspx_imports_packages.add("javax.servlet.jsp");_jspx_imports_classes = null;}private volatile javax.el.ExpressionFactory _el_expressionfactory;private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;public java.util.Map<java.lang.String,java.lang.Long> getDependants() {return _jspx_dependants;}public java.util.Set<java.lang.String> getPackageImports() {return _jspx_imports_packages;}public java.util.Set<java.lang.String> getClassImports() {return _jspx_imports_classes;}public javax.el.ExpressionFactory _jsp_getExpressionFactory() {if (_el_expressionfactory == null) {synchronized (this) {if (_el_expressionfactory == null) {_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();}}}return _el_expressionfactory;}public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {if (_jsp_instancemanager == null) {synchronized (this) {if (_jsp_instancemanager == null) {_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());}}}return _jsp_instancemanager;}public void _jspInit() {}public void _jspDestroy() {}public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)throws java.io.IOException, javax.servlet.ServletException {final java.lang.String _jspx_method = request.getMethod();if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");return;}final javax.servlet.jsp.PageContext pageContext;javax.servlet.http.HttpSession session = null;final javax.servlet.ServletContext application;final javax.servlet.ServletConfig config;javax.servlet.jsp.JspWriter out = null;final java.lang.Object page = this;javax.servlet.jsp.JspWriter _jspx_out = null;javax.servlet.jsp.PageContext _jspx_page_context = null;try {response.setContentType("text/html;charset=UTF-8");pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();_jspx_out = out;out.write("\r\n");out.write("\r\n");out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");out.write("<html>\r\n");out.write(" <head>\r\n");out.write(" <title>test</title>\r\n");out.write(" </head>\r\n");out.write(" <body>\r\n");out.write(" \r\n");out.write(" \t");out.write("\r\n");out.write("\r\n");out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");out.write("<html>\r\n");out.write(" <head>\r\n");out.write(" <title>My JSP 'head.jsp' starting page</title>\r\n");out.write(" </head>\r\n");out.write(" \r\n");out.write(" <body>\r\n");out.write(" \r\n");out.write(" <h1><font color=\"red\">這是網頁首部</font> </h1>\r\n");out.write(" \r\n");out.write("\r\n");out.write(" \t<h1><font color=\"black\">這是網頁內容</font> </h1>\r\n");out.write(" ");out.write("\r\n");out.write("\r\n");out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");out.write("<html>\r\n");out.write(" <head>\r\n");out.write(" <title>My JSP 'head.jsp' starting page</title>\r\n");out.write(" </head>\r\n");out.write(" \r\n");out.write(" <body>\r\n");out.write(" \r\n");out.write(" <h1><font color=\"blue\">這是網頁尾部</font> </h1>\r\n");out.write(" \r\n");out.write(" </body>\r\n");out.write("</html>\r\n");out.write("\r\n");out.write(" </body>\r\n");out.write("</html>\r\n");} catch (java.lang.Throwable t) {if (!(t instanceof javax.servlet.jsp.SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {if (response.isCommitted()) {out.flush();} else {out.clearBuffer();}} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}} }

?

四、JSP標簽

???? JSP的常用標簽有三個: <jsp:include>、<jsp:forward>、<jsp:param>。

?

1.<jsp:include>標簽

<jsp:include>標簽用于把另外一個資源的輸出內容插入進當前JSP頁面的輸出內容之中,這種在JSP頁面執(zhí)行時的引入方式稱之為動態(tài)引入。
語法:<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
page屬性用于指定被引入資源的相對路徑,它也可以通過執(zhí)行一個表達式來獲得。
flush屬性指定在插入其他資源的輸出內容時,是否先將當前JSP頁面的已輸出的內容刷新到客戶端。

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>test</title></head><body><jsp:include page="/head.jsp"/><h1><font color="black">這是網頁內容...</font> </h1><jsp:include page="/foot.jsp"/></body> </html>

?

結果:

注意:

???? 這種動態(tài)包含并不像include指令生產一個Servlet源文件,而是生成兩個Servlet源文件,然后通過一個方法的方式把目標頁面包含起來。

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports {private static final javax.servlet.jsp.JspFactory _jspxFactory =javax.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;private static final java.util.Set<java.lang.String> _jspx_imports_packages;private static final java.util.Set<java.lang.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.HashSet<>();_jspx_imports_packages.add("javax.servlet");_jspx_imports_packages.add("java.util");_jspx_imports_packages.add("javax.servlet.http");_jspx_imports_packages.add("javax.servlet.jsp");_jspx_imports_classes = null;}private volatile javax.el.ExpressionFactory _el_expressionfactory;private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;public java.util.Map<java.lang.String,java.lang.Long> getDependants() {return _jspx_dependants;}public java.util.Set<java.lang.String> getPackageImports() {return _jspx_imports_packages;}public java.util.Set<java.lang.String> getClassImports() {return _jspx_imports_classes;}public javax.el.ExpressionFactory _jsp_getExpressionFactory() {if (_el_expressionfactory == null) {synchronized (this) {if (_el_expressionfactory == null) {_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();}}}return _el_expressionfactory;}public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {if (_jsp_instancemanager == null) {synchronized (this) {if (_jsp_instancemanager == null) {_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());}}}return _jsp_instancemanager;}public void _jspInit() {}public void _jspDestroy() {}public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)throws java.io.IOException, javax.servlet.ServletException {final java.lang.String _jspx_method = request.getMethod();if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");return;}final javax.servlet.jsp.PageContext pageContext;javax.servlet.http.HttpSession session = null;final javax.servlet.ServletContext application;final javax.servlet.ServletConfig config;javax.servlet.jsp.JspWriter out = null;final java.lang.Object page = this;javax.servlet.jsp.JspWriter _jspx_out = null;javax.servlet.jsp.PageContext _jspx_page_context = null;try {response.setContentType("text/html;charset=UTF-8");pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();_jspx_out = out;out.write("\r\n");out.write("\r\n");out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");out.write("<html>\r\n");out.write(" <head>\r\n");out.write(" <title>test</title>\r\n");out.write(" </head>\r\n");out.write(" <body>\r\n");out.write(" \r\n");out.write(" \t");org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/head.jsp", out, false);out.write("\r\n");out.write(" \t<h1><font color=\"black\">這是網頁內容...</font> </h1>\r\n");out.write(" \t");org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/foot.jsp", out, false);out.write("\r\n");out.write(" </body>\r\n");out.write("</html>\r\n");} catch (java.lang.Throwable t) {if (!(t instanceof javax.servlet.jsp.SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {if (response.isCommitted()) {out.flush();} else {out.clearBuffer();}} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}} }

?

2.<jsp:forward>標簽

<jsp:forward>: 用于把請求轉發(fā)給另外一個資源。
語法
<jsp:forward page="relativeURL | <%=expression%>" />
page屬性用于指定請求轉發(fā)到的資源的相對路徑,它也可以通過執(zhí)行一個表達式來獲得。

?

3.<jsp:param>標簽

當使用<jsp:include>和<jsp:forward>標簽引入或將請求轉發(fā)給其它資源時,可以使用<jsp:param>標簽向這個資源傳遞參數。
語法1:
?

<jsp:include page="relativeURL | <%=expression%>"><jsp:param name="parameterName" value="parameterValue|<%= expression %>" /></jsp:include>

語法2:

< jsp:forward page="relativeURL | <%=expression%>"><jsp:param name="parameterName" value="parameterValue|<%= expression %>" /> </jsp:forward >


<jsp:param>標簽的name屬性用于指定參數名,value屬性用于指定參數值。在<jsp:include>和<jsp:forward>標簽中可以使用多個<jsp:param>標簽來傳遞多個參數。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

tempHTML

轉載于:https://www.cnblogs.com/yangang2013/p/5376438.html

總結

以上是生活随笔為你收集整理的JavaWeb总结(四)—JSP深入解析的全部內容,希望文章能夠幫你解決所遇到的問題。

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