• JSP 技术(二)--详解


    1 JSP指令                                                                                                       

      为了设置JSP页面中的一些信息,Sun公司提供了不提的JSP指令。JSP指令(directive)是为JSP引擎而设计的。它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。

      jap的三个指令:

    • page指令
    • include指令
    • taglib指令

      JSP指令的基本语法格式<%@ 指令 属性名="值" %>。如果一个指令有多个属性,多个属性可以写在一个指令中,也可以分开写。

    1.1 page指令

      page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置。

    语法格式<%@ page 属性名1="值1"  属性名2="值2" ...%>

    JSP指令常用的属性

      (1)language:java。指明解释该JSP文件时采用的语言,默认为java。

      (2)import:任何包名和类名。指定JSP页面翻译称Servlet源文件中导入的包或类。import是唯一可以声明多次的page指令属性。一个import属性可以引用多个类,中间用(,)隔开。

    可以在一条page指令的import属性中引入多个类或包,其中的每个包或类之间使用逗号(,)分隔。例如:以下互相等价

    1 <%@ page import="java.util.*,java.io.*,java.sql.*"%>
    1 <%@ page import="java.util.*"%>
    2 <%@ page import="java.io.*" %>
    3 <%@ page import="java.sql.*" %>

      (3)session:true和false。指明该JSP内是否内置Session对象,如果为true,则说明内置了Session对象,可以直接使用,否则没有内置Session对象。在默认情况下,session属性值为true。

      (4)isErrorPage:true和false。指定该页面是否为错误处理页面,如果为true,则该JSP内置有一个Exception对象的exception,可直接使用。在默认情况下,isErrorPage的值为false。

     例如:将3.jsp页面显式声明为错误处理页面

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" isErrorPage="true"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>错误信息提示</title>
     8 </head>
     9 <body>
    10     输入有误    <%=exception.getMessage() %> //不会报错
    11 </body>
    12 </html>

    3.jsp页面显式声明为错误处理页面后,Jsp引擎在将jsp页面翻译成Servlet的时候,在Servlet的 _jspService方法中会声明一个exception对象,然后将运行jsp出错的异常信息存储到exception对象中。如下所示:

    若没有设置isErrorPage="true",.java 文件如下:

      (5)errorPage:某个JSP页面的相对路径。指定一个出错后跳转的页面,如果该JSP程序抛出一个未捕捉的异常,则转到errorPage指定的页面。errorPage指定页面的isErrorPage属性为true,且内置的exception对象为未捕捉的异常。

    比如1.jsp如下:

     1 <%@ page language="java" errorPage="/2.jsp" pageEncoding="UTF-8" %>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     3 <html>
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     6 <title>测试page指令的errorPage属性</title>
     7 </head>
     8 <body>
     9     This is my first JSP 
    10     <%
    11         int x = 5/0;
    12      %>
    13 </body>
    14 </html>

    在1.jsp中,page指令的errorPage属性指明了出错后跳转到"/2.jsp",error.jsp页面代码如下:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>错误信息提示</title>
     8 </head>
     9 <body>
    10     输入有误    
    11 </body>
    12 </html>

    运行结果如下:

    • errorPage属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前Web应用程序的根目录(注意不是站点根目录),否则,表示相对于当前页面
    • 可以在web.xml文件中使用<error-page>元素为整个Web应用程序设置错误处理页面。
    • <error-page>元素有3个子元素,<error-code>、<exception-type>、<location>
    • <error-code>子元素指定错误的状态码,例如:<error-code>404</error-code>
    • <exception-type>子元素指定异常类的完全限定名,例如:<exception-type>java.lang.ArithmeticException</exception-type>
    • <location>子元素指定以“/”开头的错误处理页面的路径,例如:<location>/ErrorPage/404Error.jsp</location>
    • 如果设置了某个JSP页面的errorPage属性,那么在web.xml文件中设置的错误处理将不对该页面起作用。

    例如:使用<error-page>标签配置针对404错误的处理页面

    web.xml的代码下

     1 <web-app version="2.5" 
     2     xmlns="http://java.sun.com/xml/ns/javaee" 
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     5     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     6   <display-name></display-name>    
     7   <welcome-file-list>
     8     <welcome-file>index.jsp</welcome-file>
     9   </welcome-file-list>
    10  
    11   <!-- 针对404错误的处理页面 -->
    12   <error-page>
    13       <error-code>404</error-code>
    14       <location>/404Error.jsp</location>
    15   </error-page>
    16 </web-app>

    404Error.jsp代码如下:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>404错误友好提示页面</title>
     8 </head>
     9 <body>
    10     <img alt="对不起,你要访问的页面没找到!"
    11     src="${pageContext.request.contextPath}/404.jpg" /></br>
    12     <!-- 对不起,你要访问的页面没找到! -->
    13     3秒钟后自动跳转回首页,如果没跳转请点击<a href="${pageContext.request.contextPath}/2.jsp">这里</a>
    14 </body>
    15 </html>

    ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> 。

    也就是取出部署的应用程序名或者是当前的项目名称

    当访问一个不存在的web资源时,就会跳转到在web.xml中配置的404错误处理页面404Error.jsp,如下图所示:

      (6)contentType:有效的文档类型。客户端浏览器根据该属性判断文档类型,例如,HTML格式为text/html、纯文本格式为text/plain、JPG图像为image/jpeg、GIF图像为image/gif、word文档为application/maword.

      (7)pageEnCoding:当前页面。指定页面编码格式

    1.2 include指令

      静态包含:把其它资源包含到当前页面中。<%@ include file="/include/header.jsp" %>:在翻译时就把两个文件合并

      动态包含<jsp:include page="/include/header.jsp"></jsp:include>:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

    原则:能用静的就不用动的。

    1.3 taglib指令

      作用:在JSP页面中导入JDTL标签库。替换jsp中java代码片段。

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    2 JSP 隐式对象                                                                   

      在JSP页面中,有一些对象需要频繁使用,如果每次都创建这些对象会非常麻烦,为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,他们是JSP默认创建的,可以直接在JSP页面中使用。

    名称 类型 描述
    out javax.servlet.jsp.JspWriter 用于页面输出
    request javax.servlet.http.HttpServletRequest 用于用户请求信息
    response javax.servlet.http.HttpServletResponse 服务端想客户端回应信息
    session javax.servlet.http.HttpSession 用于保存用户信息
    application javax.servlet.ServletContext 所有用户共享信息
    config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数
    pageContext javax.servlet.jsp.PageContext JSP页面容器
    page java.lang.Object 将当前页面转换后的Servlet类实例
    exception java.lang.Throwable 表示JSP页面发生的异常,仅在错误页面中能起作用

    2.1 out对象

      out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。都是用于向客户端发送文本形式的实体内容。不同的是,out对象的类型为JspWriter,它相当于一直带缓存功能的PrintWriter。

      JSP页面的out对象与Servlet引擎提供的缓冲区之间的工作关系如图:

      通过out对象写入数据相当于将数据插入到JspWriter对象的缓冲去区中,只有调用了ServletResponse.getWriter()方法,缓冲区中的数据才能真正的写入到Servlet引擎所提供的缓冲区中。

      只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:

    • 设置page指令的buffer属性关闭了out对象的缓存功能
    • out对象的缓冲区已满
    • 整个JSP页面结束

    例如:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" isErrorPage="true"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>6</title>
     8 </head>
     9 <body>
    10     <%
    11         out.println("First<br/>");
    12         response.getWriter().print("second<br/>");
    13      %>
    14 </body>
    15 </html>

    结果如下图:

      尽管out.println();语句在response.getWriter().print();语句之前,在输出的内容在其后面。说明out对象通过print语句写入数据后,直到整个JSP页面结束,out对象中输入的缓冲区的数据(即First)才真正写入Servlet引擎提供的缓冲区中而response.getWriter().print();语句则直接把内容写入Servlet引擎提供的缓冲区中。Servlet引擎按照缓冲区中的数据存放顺序输出内容。

    2.2 page对象

      page对象表示当前一个JSP页面,可以理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用,了解一下即可

    2.3 pageContext对象

       pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等

    •  Exception getException方法返回exception隐式对象
    • Object getPage方法返回page隐式对象
    • ServletRequest getRequest方法返回request隐式对象
    • ServletResponse getResponse方法返回response隐式对象
    • ServletConfig getServletConfig方法返回config隐式对象
    • ServletContext getServletContext方法返回application隐式对象
    • HttPSession getSession方法返回session隐式对象
    • JspWriter getOut方法返回out隐式对象

    pageContext作为域对象

      pageContext对象可以作为容器来使用,因此可以将一些数据存储在pageContext对象中。

      pageContext对象的常用方法 

    1 void setAttribute(String name,Object value,int scope) //用于设置pageContext对象的属性
    2 Object getAttribute(String name,int scope)            //用于获取pageContext对象的属性
    3 void removeAttribute(String name,int scope)           //删除指定范围内名称为name的属性
    4 void removeAttribute(String name)                     //删除所有范围内名称为name的属性
    5 Object findAttribute(String name)                     //从四个对象中查找名称为name的属性

      scope指定属性的作用范围,pageContext对象的作用范围有四个值

      (1)pageContext.PAGE_SCOPE:表示页面范围

      (2)pageContext.REQYEST_SCOPE:表示请求范围

      (3)pageContext.SESSION_SCOPE:表示会话范围

      (4)pageContext.APPLICATION_SCOPE:表示web应用程序范围

      findAttribute方法,这个方法是用来查找各个域中的属性的,当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。

    例如:使用pageContext的findAttribute方法查找属性值

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" isErrorPage="true"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>7</title>
     8 </head>
     9 <body>
    10     <%
    11     pageContext.setAttribute("name1", "page");
    12     pageContext.setAttribute("name2", "name2_page");
    13     request.setAttribute("name2", "name2_request");
    14     session.setAttribute("name3", "name3_session"); 
    15     application.setAttribute("name3", "name3_application");
    16     application.setAttribute("name4", "name4_application");
    17 %>
    18 <%
    19     //使用pageContext的findAttribute方法查找属性,由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型
    20     //查找name1属性,按照顺序"page→request→session→application"在这四个对象中去查找
    21     String refName1 = (String)pageContext.findAttribute("name1");
    22     String refName2 = (String)pageContext.findAttribute("name2");
    23     String refName3 = (String)pageContext.findAttribute("name3");
    24     String refName4 = (String)pageContext.findAttribute("name4");
    25     String refName5 = (String)pageContext.findAttribute("name5");//查找一个不存在的属性
    26 %>
    27 <h3>pageContext.findAttribute方法查找到的属性值:</h3>
    28 <h5>pageContext对象的name1属性:<%=refName1%></h5>
    29 <h5>request对象的name2属性:<%=refName2%></h5>
    30 <h5>session对象的name3属性:<%=refName3%></h5>
    31 <h5>application对象的name4属性:<%=refName4%></h5>
    32 <h5>查找不存在的name5属性:<%=refName5%></h5>
    33 <hr/>
    34 </body>
    35 </html>

     结果:

    2.4 exception对象

       exception对象只有在错误处理页面才能使用,即page指令中指定了属性<%@page isErrorPage="true"%>的页面。

    例如:3.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" isErrorPage="true" errorPage="/4.jsp"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>3</title>
     8 </head>
     9 <body>
    10     <%=(5/0) %>    
    11 </body>
    12 </html>

    4.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" isErrorPage="true"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>3</title>
     8 </head>
     9 <body>
    10     <%=exception.getMessage() %>
    11 </body>
    12 </html>

    运行结果:

    3 JSP动作元素                                                                                                    

      JSP动作元素用于控制JSP的行为,执行一些常用的JSP页面动作。通过动作元素可以实现使用多行javadiamante才能实现的效果。如包含页面文件和实现请求转发等。

     jsp的常用标签有以下三个

    • <jsp:include>标签  
    • <jsp:forward>标签  
    • <jsp:param>标签

     3.1 <jsp:include>标签

      在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了<jsp:include>动作元素。基本格式语法

     <jsp:include page="relativeURL" fluse="true|faluse" />

    page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
    flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。

      <jsp:include>包含的原理将被包含的页面编译处理后将页面包含在页面中。当浏览器第一次请求一个使用<jsp:include>包含其他页面的页面时,Web容器首先会编译被包含的页面,然后编译处理后返回结果包含在页面中,之后编译包含页面,最后将两个页面组合的结果回应给浏览器。

      include指令和<jsp:include>标签的区别:

      (1)<jsp:include>标签中要引用的资源和当前JSP页面是两个彼此独立的执行实体,即被动态引入的资源必须能够被Web容器独立执行。而include指令智能引入遵循JSP格式的文件,被引入的文件与当前JSP文件需要共同合并才能翻译成一个Servlet源文件。

      (2)<jsp:include>标签中引入的资源在运行时才包含的,而且只包含运行结果。而include指令令引入的资源在编译时包含的,包含的是源代码。

      (3)<jsp:include>标签运行原理与RequestDisoatcher.include()方法类似,即被包含的页面不能改变响应状态码或者设置响应头,而include指令没有这方面的限制。

    示例1: 使用jsp:include标签引入其它JSP页面,8.jsp页面中插入insert1.jsp

    8.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>8</title>
     8 </head>
     9 <body>
    10     网页主体内容:jsp:include<br/>
    11     <jsp:include page="/insert1.jsp"/>
    12 </body>
    13 </html>

    insert1.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>6</title>
    </head>
    <body>
         <%--使用jsp:include标签引入其它JSP页面--%>
          使用jsp:include标签引入其它JSP页面
    </body>
    </html>

    编译时会分别产生.class文件:

    _8_.java

    insert1.java

     

    运行结果:

    示例2: 使用include指令引入其它JSP页面,9.jsp页面中插入insert2.jsp

     9.jsp 

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>9</title>
     8 </head>
     9 <body>
    10     网页主体内容:include指令<br/>
    11     <%@include file="/insert2.jsp"%>
    12 </body>
    13 </html>

     insert2.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" isErrorPage="true"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>6</title>
     8 </head>
     9 <body>
    10     <%--使用include指令引入其它JSP页面--%>
    11       使用include指令引入其它JSP页面
    12 </body>
    13 </html>

    编译时仅产生一个.class文件:

     

    _9_.java

    运行结果:

    3.2  <jsp:forward>标签

      <jsp:forward>动作元素将当前请求转发到其他Web资源(HTML页面,JSP页面和Servlet页面),在执行请求转发后的当前页面不再执行,而是执行该元素指定的目标页面。基本语法格式

     <jsp:forward page="relativeURL | <%=expression%>" />

     page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。

    示例:使用<jsp:forward>标签跳转页面。10.jsp跳转至11.jsp

     10.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>10</title>
     8 </head>
     9 <body>
    10     网页主体内容:jsp:forward<br/>
    11     <jsp:forward page="/11.jsp" />    
    12 </body>
    13 </html>

    11.jsp

     1 <%@page import="java.util.Date"%>
     2 <%@ page language="java" contentType="text/html; charset=UTF-8"
     3     pageEncoding="UTF-8" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     8 <title>11</title>
     9 </head>
    10 <body>
    11     跳转访问时间:
    12     <%
    13         out.print(new Date());
    14      %>
    15 </body>
    16 </html>

    运行结果:

     

    从页面的显示效果来看,页面已经完成了跳转,但地址栏没有变化,地址栏中显示的地址还是10.jsp,但页面显示的内容却是11.jsp中的内容。因为此跳转属于服务器端跳转。只要是服务器端跳转,则地址栏永远没有变化

     3.3 <jsp:param>标签

       当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<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:foeward>
      <jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。

     示例:使用<jsp:param>标签向被包含的页面传递参数

     1.使用语法112.jap包含13.jsp

    12.jap

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>12</title>
     8 </head>
     9 <body>
    10     <jsp:include page="/13.jsp">
    11      <jsp:param name="parm1" value="beautiful" />
    12     <jsp:param name="parm2" value="girl" />
    13     </jsp:include>    
    14 </body>
    15 </html>

    13.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>13</title>
    </head>
    <body>
        接收从12.jsp页面中传递过来的参数:<br/>
        <%=request.getParameter("parm1")%>
        <%=request.getParameter("parm2")%>    
    </body>
    </html>

    运行结果:

     2.使用语法214.jap包含15.jsp

    14.jap

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>14</title>
     8 </head>
     9 <body>
    10     <jsp:forward page="/15.jsp">
    11      <jsp:param name="parm1" value="cool" />
    12     <jsp:param name="parm2" value="boy" />
    13     </jsp:forward>        
    14 </body>
    15 </html>

    15.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>15</title>
     8 </head>
     9 <body>
    10     接收从14.jsp页面中传递过来的参数:<br/>
    11     <%=request.getParameter("parm1")%>
    12     <%=request.getParameter("parm2")%>    
    13 </body>
    14 </html>

    运行结果

    参考:

    https://www.cnblogs.com/xdp-gacl/p/3778993.html2018-10-06

    https://www.cnblogs.com/xdp-gacl/p/3779872.html

    https://www.cnblogs.com/xdp-gacl/p/3788369.html

    2018-10-06 11:25:48

  • 相关阅读:
    安卓使用spinner控件和pull解析实现全国省市县的三级联动(附上xml文件)
    安卓linearlayout布局的一个嵌套实例
    接口回调的例子和安卓中的接口回掉实例
    Android Studio 快捷键
    java比较器 之compareable 和comparato比较
    4.Gradle构建Spring Boot项目
    2.Gradle安装和常用命令
    1.Gradle基础介绍
    6.SpringBoot学习(六)——Spring Boot Banner自定义
    4.SpringBoot学习(四)——Spring Boot Validation校验及原理
  • 原文地址:https://www.cnblogs.com/qqiua/p/9746237.html
Copyright © 2020-2023  润新知