日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

一、JSP域?qū)ο?/h1>

1.JSP屬性范圍(域?qū)ο蠓秶?????

JSP提供了四個(gè)域?qū)ο?#xff0c;分別是pageContextrequestsessionapplication

pageContext: 屬性范圍僅限于當(dāng)前JSP頁(yè)面。一個(gè)屬性只能在一個(gè)頁(yè)面取得,跳轉(zhuǎn)到其他頁(yè)面無(wú)法取得。

request: 屬性作用范圍僅限于同一個(gè)請(qǐng)求。一個(gè)頁(yè)面中設(shè)置的屬性,只要經(jīng)過(guò)了服務(wù)器的跳轉(zhuǎn),跳轉(zhuǎn)之后的頁(yè)面都可以繼續(xù)取得。

session: 存儲(chǔ)在session對(duì)象中的屬性可以被屬于同一個(gè)會(huì)話的所有Servlet和JSP頁(yè)面訪問(wèn)。瀏覽器打開(kāi)到關(guān)閉稱作一次會(huì)話。

application: 存儲(chǔ)在application對(duì)象中的屬性可以被同一個(gè)Web應(yīng)用程序的所有Servlet和JSP頁(yè)面訪問(wèn)。

?

2.域?qū)ο蟮南嚓P(guān)方法??

(1)setAttribute()

???? 設(shè)置屬性的方法。之前所講解的四種屬性范圍,實(shí)際上都是通過(guò)pageContext屬性范圍設(shè)置上的。打開(kāi)pageContext所在的說(shuō)明文檔。

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

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

后面有一個(gè)int類型的變量,在PageContext中可以發(fā)現(xiàn)有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;

????? 這個(gè)setAttribute()方法如果不寫(xiě)后面的int類型的scope參數(shù),則此參數(shù)默認(rèn)為PAGE_SCOPE,則此時(shí)setAttribute()方法設(shè)置的就是page屬性范圍,如果傳遞過(guò)來(lái)的int類型參數(shù)scope為REQUEST_SCOPE,則此時(shí)setAttribute()方法設(shè)置的就是request屬性范圍,同理,傳遞的scope參數(shù)為SESSION_SCOPE和APPLICATION_SCOPE時(shí),則表示setAttribute()方法設(shè)置的就是session屬性范圍和application屬性范圍。

?

(2)getAttribute(String name)

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

?

(3)getAttributeNames()

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

?

(2)removeAttribute(String name)

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

?

二、請(qǐng)求轉(zhuǎn)發(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);//請(qǐng)求的轉(zhuǎn)發(fā)//1.調(diào)用HttpServletRequest的getRequestDispatcher()方法獲取RequestDispatcher對(duì)象。String path = "TestServlet";RequestDispatcher dispatcher = req.getRequestDispatcher("/" + path);//2.調(diào)用RequestDispatcher對(duì)象的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);}}

結(jié)果:

ForwardServlet: age = 123
TestServlet: age = 123

?

如果把ForwardServlet內(nèi)部重定向到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);//請(qǐng)求的重定向String path = "TestServlet";resp.sendRedirect(path);}public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{doGet(req,resp);}}

結(jié)果:

ForwardServletage = 23
TestServlet: age = null

??? sendRedirect 方法不僅可以重定向到當(dāng)前應(yīng)用程序中的其他資源,它還可以重定向到同一個(gè)站點(diǎn)上的其他應(yīng)用程序中的資源,甚至是使用絕對(duì)URL重定向到其他站點(diǎn)的資源。

???? 如果傳遞給sendRedirect 方法的相對(duì)URL以“/”開(kāi)頭,則是相對(duì)于整個(gè)WEB站點(diǎn)的根目錄,而不是相對(duì)于當(dāng)前WEB應(yīng)用程序的根目錄。

?

2.區(qū)別

(1)請(qǐng)求轉(zhuǎn)發(fā):只向服務(wù)器發(fā)出一次請(qǐng)求。重定向: 向服務(wù)器發(fā)兩次請(qǐng)求。

(2)請(qǐng)求轉(zhuǎn)發(fā): 調(diào)用者與被調(diào)用者之間共享相同的request對(duì)象。重定向: 調(diào)用者與被調(diào)用者使用各自的request和response對(duì)象,它們屬于兩個(gè)獨(dú)立的請(qǐng)求和響應(yīng)過(guò)程。

(3)請(qǐng)求轉(zhuǎn)發(fā):地址欄是初次發(fā)出請(qǐng)求的地址。重定向:地址欄不再是初次發(fā)送的請(qǐng)求地址,地址欄是最后響應(yīng)的地址。

(4)請(qǐng)求轉(zhuǎn)發(fā): 只能將請(qǐng)求轉(zhuǎn)發(fā)給同一個(gè)WEB應(yīng)用中的組件。重定向: 可以重定向到同一個(gè)站點(diǎn)上的其他應(yīng)用程序中的資源,甚至是使用絕對(duì)URL重定向到其他站點(diǎn)的資源。

(5)如果請(qǐng)求轉(zhuǎn)發(fā)的相對(duì)URL以“/”開(kāi)頭,它是相對(duì)于整個(gè)WEB站點(diǎn)的根目錄;如果重定向指定的相對(duì)URL以“/”開(kāi)頭,它是相對(duì)于當(dāng)前WEB應(yīng)用程序的根目錄。

?

三、JSP指令

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

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

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

??? 如果要在一個(gè)JSP頁(yè)面設(shè)置同一條指令的多個(gè)屬性,可以使用多條指令語(yǔ)句單獨(dú)設(shè)置每個(gè)屬性,也可以使用同一條語(yǔ)句設(shè)置該指令

第一種方式:

<%@ 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指令的完整語(yǔ)法:

<%@ 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屬性指明出錯(cuò)后跳轉(zhuǎn)的錯(cuò)誤頁(yè)面

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>測(cè)試page指令的errorPage屬性</title></head><body><%//這行代碼肯定會(huì)出錯(cuò),因?yàn)槌龜?shù)是0,一運(yùn)行就會(huì)拋出異常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">對(duì)不起,出錯(cuò)了!!!</font></h1></body> </html>

結(jié)果:

?

(2)在web.xml使用<error-page>標(biāo)簽為整個(gè)web應(yīng)用設(shè)置錯(cuò)誤處理頁(yè)面

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

?

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><!-- 針對(duì)404錯(cuò)誤處理頁(yè)面 --><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>

當(dāng)訪問(wèn)一個(gè)不存在的web資源時(shí),就會(huì)跳轉(zhuǎn)到在web.xml中配置的404錯(cuò)誤處理頁(yè)面

?

2.include指令

? ?? 語(yǔ)法: <%@ include file="相對(duì)URL"%>。路徑以"/"開(kāi)頭,代表當(dāng)前Web應(yīng)用。

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

include指令細(xì)節(jié)注意問(wèn)題:

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

?

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">這是網(wǎng)頁(yè)首部</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">這是網(wǎng)頁(yè)尾部</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">這是網(wǎng)頁(yè)內(nèi)容</font> </h1><%@ include file="/foot.jsp" %></body> </html>

結(jié)果:

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\">這是網(wǎng)頁(yè)首部</font> </h1>\r\n");out.write(" \r\n");out.write("\r\n");out.write(" \t<h1><font color=\"black\">這是網(wǎng)頁(yè)內(nèi)容</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\">這是網(wǎng)頁(yè)尾部</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標(biāo)簽

???? JSP的常用標(biāo)簽有三個(gè): <jsp:include>、<jsp:forward>、<jsp:param>。

?

1.<jsp:include>標(biāo)簽

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

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">這是網(wǎng)頁(yè)內(nèi)容...</font> </h1><jsp:include page="/foot.jsp"/></body> </html>

?

結(jié)果:

注意:

???? 這種動(dòng)態(tài)包含并不像include指令生產(chǎn)一個(gè)Servlet源文件,而是生成兩個(gè)Servlet源文件,然后通過(guò)一個(gè)方法的方式把目標(biāo)頁(yè)面包含起來(lái)。

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\">這是網(wǎng)頁(yè)內(nèi)容...</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>標(biāo)簽

<jsp:forward>: 用于把請(qǐng)求轉(zhuǎn)發(fā)給另外一個(gè)資源。
語(yǔ)法
<jsp:forward page="relativeURL | <%=expression%>" />
page屬性用于指定請(qǐng)求轉(zhuǎn)發(fā)到的資源的相對(duì)路徑,它也可以通過(guò)執(zhí)行一個(gè)表達(dá)式來(lái)獲得。

?

3.<jsp:param>標(biāo)簽

當(dāng)使用<jsp:include>和<jsp:forward>標(biāo)簽引入或?qū)⒄?qǐng)求轉(zhuǎn)發(fā)給其它資源時(shí),可以使用<jsp:param>標(biāo)簽向這個(gè)資源傳遞參數(shù)。
語(yǔ)法1:
?

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

語(yǔ)法2:

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


<jsp:param>標(biāo)簽的name屬性用于指定參數(shù)名,value屬性用于指定參數(shù)值。在<jsp:include>和<jsp:forward>標(biāo)簽中可以使用多個(gè)<jsp:param>標(biāo)簽來(lái)傳遞多個(gè)參數(shù)。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

tempHTML

轉(zhuǎn)載于:https://www.cnblogs.com/yangang2013/p/5376438.html

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。