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

原文地址:https://www.cnblogs.com/qqiua/p/9746237.html