`
talentluke
  • 浏览: 604581 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jsp页面间传递参数

 
阅读更多

我想在几个jsp页面间接力传递一个LinkedList参数,这个参数在经过不同的页面时会发生变化。我在网络上发现了实现这种应用的两种方法,特地把它贴在这里备忘:

第一种方法,使用jsp内置的Session对象来传递:(转自:http://www.7880.com/Info/Article-4616cf60.html

JSP学习笔记(六)—–在多个JSP页面之间传递参数
1.       怎么在多个JSP页面之间进行参数传递?需要使用JSP的内置作用域对象session。利用它的两个方法setAttribute(),getAttribute()

2.       下面的这个实例实现了把第一个JSP页面的参数传递给第三个页面的功能

3.       代码如下:1.jsp

<html>
       <form method=get action=2.jsp>
       what’s your name<input type=text name=username>
       <input type=submit value=submit>
       </form>
</html>

4.       2.jsp
<html>
       <form method=post action=”3.jsp?pass=11″>
       <%
              String name=request.getParameter(”username”);
              session.setAttribute(”username”,name);
       %>
       Your name is:<%=request.getParameter(”username”)%>
       <br>what’s your hobby<input type=text name=hobby>
       <input type=submit value=submit>
       </form>
</html>

5.       3.jsp

<html>
       your name is:<%=session.getAttribute(”username”)%>
       <br>
       your hobby is:<%=request.getParameter(”hobby”)%>
       <br>
       your password is:<%=request.getParameter(”pass”)%>
       <br>
       </form>
</html>

第二种方法,利用JavaBean和JSP技术在Web页面中保存和传递数据,(转自:http://www.cnblogs.com/bjzhanghao/archive/2004/08/07/30950.html

[翻译]JavaBean组件与JSP技术结合

Web架构师Brett McLaughlin向我们展示了怎样利用JavaBean和JSP技术在Web页面中保存和传递数据,以及如何设计可以得到更大的灵活性。

到目前为止,在JSP最佳实践系列里,我们已经讨论了相当一部分基础知识。在前面的两个章节里,你应该学会了如何使用JSP的include机制将网站以外的内容包含在页面或应用程序里。共有两种不同类型的include:静态的include命令和动态的jsp:include标记。

同时,我们还没有涉及到在父页面(在我们的例子中是网站的首页)和被包含内容之间的通信问题。而实际上这种情况是非常普遍的。当你开始建立一个真正的网站或者web应用程序时,通常你会需要这样的通讯机制,举个例子,你的网站可能会在首页产生一些标题一类的小段文字,这些文字要出现在页眉或页脚页面中。在这一部分里,你将学到如何在页面间传递数据,以及如何在被包含的页面中使用这些数据。

注:这部分的全部例子都基于JavaServer Pages技术,为了能运行它们,你需要建立一个JSP兼容的web容器,在你本地计算机或某个用于测试的服务器上都可以。同时,你还要有一个文本编辑器或者集成环境来编写你的JSP页面。

用于保存数据的JavaBean

让我们假想这样的一个网站,在这个网站里每个页面有一小句“口号”(例如“书:装满知识的容器”或者“唱片:值得一听”)和一个标题。父页面(有时也被称作主页面)决定了每一页的口号,但真正产生html输出这个口号的是页眉页面,它是被包含的。要实现这个目的,父页面必须能够把口号传递给页眉页面,页眉页面得到这个口号,将它以页面标题的形式输出。

首先我们需要某种对象来保存被传递的数据,恰好(这并非偶然)JavaBean组件就是这样一个合适的选择,它与JSP技术配合得天衣无缝,简单的使用取值方法和赋值方法就可以控制你要的数据。稍有java编程经验的读者可能已经想到,get()就是一个取值方法,因为它读取数据;而set()是一个赋值方法,因为它改变数据。

列表1展示了我们所需要的一个JavaBean的代码,PageHeaderinfo包含了网站页眉信息。

<![CDATA[

package com.newInstance.site.beans;

import java.io.Serializable;

public class PageHeaderInfo implements Serializable {

     /** The title of the page */

     private String pageTitle;

     /** The slogan of the page */

     private String pageSlogan;

     public String getPageTitle() {

       return pageTitle;

     }

     public void setPageTitle(String pageTitle) {

       this.pageTitle = pageTitle;

     }

     public String getPageSlogan() {

       return pageSlogan;

     }

     public void setPageSlogan(String pageSlogan) {

       this.pageSlogan = pageSlogan;

     }

}

]]>

作为第一个练习,将这个文件保存为PageHeaderInfo.java并编译它。接下来,把得到的class文件PageHeaderInfo.class放在你的web应用程序的WEB-INF/classes目录下。请确保目录包含了包的结构,例如:

$<TOMCAT-ROOT>/webapps/$<WEB-APP-NAME>/WEB-INF/classes/com/newInstance/ site/beans/PageHeaderInfo.class

你可以使用类似这样的路径安排web应用程序中用到的类。按以上步骤做到这里,下面就可以向PageHeaderInfo里存入数据然后在不同的JSP页面中获取了。

传递已保存的数据

在我们的网站里,页眉页面包含向不同页面传递不同口号的代码。查看前面的章节就会发现,页眉页面(header.jsp)是通过jsp:include标记被包含的文件。列表2展示了网站首页如何通过标记把数据传递给header.jsp文件。

<![CDATA[

<%@ page language=”java” contentType=”text/html” %>

<html>

<head>

     <title>newInstance.com</title>

     <meta http-equiv=”Content-Type”

       content=”text/html; charset=iso-8859-1″ />

     <link href=”/styles/default.css” rel=”stylesheet” type=”text/css” />

</head>

<body>

<jsp:include page=”header.jsp” flush=”true”>

     <jsp:param name=”pageTitle” value=”newInstance.com”/>

     <jsp:param name=”pageSlogan”

       value=”Java and XML :: Turning theory into practice” />

</jsp:include>

<%@ include file=”/navigation.jsp” %>

<jsp:include page=”bookshelf.jsp” flush=”true” />

<jsp:include page=”/mt-blogs/index.jsp” flush=”true” />

<%@ include file=”/footer.jsp” %>

</body>

</html>

]]>

可以看出,标题是被传递过去作为口号的。

你可能已经注意到了,在你建立页面的时候,不一定需要JavaBean组件实际存在。我总是先写好JavaBean,有一个很好的理由:JSP参数名必须与JavaBean属性名匹配,先完成JavaBean可以保证你在编写JSP页面时使用合适的参数名称。

获得数据

当你完成了JSP参数和JavaBean属性的编码,一旦数据被传递给header.jsp,这个页面就可以开始获取数据了。列表3展示了header.jsp页面。它的大部分内容是html,请注意里面的JSP脚本,在你研究过这些代码后我会在后面向你解释。

<![CDATA[

<!– Begin header section –>

<%@ page language=”java” contentType=”text/html” %>

<jsp:useBean id=”pageHeaderInfo”class=”com.newInstance.site.beans.PageHeaderInfo”>
     <jsp:setProperty name=”pageHeaderInfo” property=”*” />
</jsp:useBean>

<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>

     <tr>

       <td width=”91″ height=”50″ align=”right” valign=”top”

           bgcolor=”#330066″><font color=”#FFFFFF”><img

           src=”/images/header-lions.gif”

           width=”90″ height=”60″></font></td>

       <td colspan=”3″ align=”left” valign=”top”

           bgcolor=”#000000″><table width=”100%” height=”60″ border=”0″

           cellpadding=”0″ cellspacing=”0″>

           <tr>

             <td width=”261″ rowspan=”2″><img

               src=”/images/header-title.gif” width=”261″ height=”60″></td>

             <td class=”pagetitle” width=”249″ height=”55″ align=”right”

               valign=”bottom”><jsp:getProperty name=”pageHeaderInfo”

               property=”pageSlogan”/></td>

             <td width=”10″ height=”55″> </td>

           </tr>

           <tr>

             <td height=”5″><img src=”/images/spacer.gif” width=”1″

               height=”5″></td>

             <td height=”5″><img src=”/images/spacer.gif” width=”1″

               height=”5″></td>

           </tr>

         </table></td>

       <td width=”141″ bgcolor=”#000000″>

         <font color=”#FFFFFF”> </font>

       </td>

     </tr>

<!– End header section –>

]]>

第一行代码标识了该页面为一个JSP页面,然后通过jsp:useBean标记声明需要访问PageHeaderInfo这个JavaBean,id属性为这个bean指定了一个名称,通过该名称可以在JSP页面中使用bean;class属性指定了JavaBean类的全名。相邻的jsp:setProperty标记说明了JavaBean(通过id属性标识)的所有属性都以请求数据赋值,也就是说,为这个bean里的每个属性(例如pagetitle和pageslogan)寻找名称对应的请求参数来赋值。这些请求参数可以来自客户端的浏览器,也可以来自包含这一页的其他JSP页面。在这种情况下,唯一的请求数据是由父页面创建的。对于我们的网站,首页(index.jsp)发送pagetitle和pageslogan,其值分别为“newinstance.com”和“Java and XML: Turning theory into practice”。

一旦bean的属性被赋值后,页面就可以使用这些数据了。对于header.jsp,在后面的代码里可以看到,通过jsp:getProperty标记使用了这些数据。Jsp;getProperty标记通过name参数标识从哪个对象取数据,通过property参数标识取对象的哪一个属性。取得的数据值自动插入到页面的输出,也就是输出到父页面里,从而得到一个无缝的、动态的页面口号,在JSP页面间传递数据就是这么简单!你可以为一个JSP页面增加任意多的bean,每一个bean都可以有任意多的属性,足以应付任何复杂的请求数据。

处理需求变化

改变是软件开发者最大的烦恼,你写好了你的bean,在JSP页面里也写好了使用它们的代码,这时web应用程序的需求似乎不可避免的会发生变化。如果这个改变要求更多的属性(大多数情况都是如此),你不得不改写你的JavaBean源代码,重新编译它,还要确定JSP页面能够正确访问新生成的bean类。有些情况下,你可以不必对bean进行处理,如果保存或获取属性页面不再使用了(也就是说,即使那个页面还在站点的目录里,但你不再使用该页面),这时你可以不用去管原来的代码即可。实际上,我就遇到过这种情况!

我的个人网站的页眉页面header.jsp用于生成html的头部,以前有一段时间里,这一页向我的其他页面头部里的title标记里插入一个标题,后来我做了修改,在header.jsp里不再使用页面标题了。但我并没有从PageHeaderInfo里把pageTitle移除;实际上,我甚至在大部分JSP页面里连jsp:param标记都没有移除,这个标记的作用本来是为页面设置标题的。我认为花这些工夫不值得,因为我确信保留这些数据不会带来任何坏的影响(也许某一天我还会重新用到呢!)。因此,如果你遇到同样的情况,不用浪费时间了–有处理这些琐事的时间不如用来为你的web应用程序增加些新的、有趣的、实用的功能。

下一次

当你熟练掌握了在JSP页面间传递数据的方法后,试着自己写一些有用的JavaBean并且看看能不能把它们用在你的站点里。通过和这些bean的接触,还有jsp:useBean、jsp:param以及jsp:get/setProperty的使用,你应该能够做出一些很酷的功能了!在下次的最佳实践里,我将向你展示使用JSP向站点增加外部内容的方法,JSTL标记和我们熟悉的include标记差不多,它使得JSP更灵活和更高效。在这之前,请用功准备,到时再见!

分享到:
评论

相关推荐

    JSP几种页面间传递参数实现的方法

    jsp:param可以实现主页面向包含页面传递参数,如下:&lt;jsp:include page="Relative URL"&gt; &lt;jsp:param name="param name" value="paramvalue" /&gt; &lt;/jsp:include&gt; 还可以实现使用jsp:forward动作做页面跳转时传递参数...

    opener实例页面之间传递参数

    总结,`opener`属性提供了一种在JSP页面间传递参数的机制,使得父窗口和子窗口可以共享数据并协同工作。这种方法在处理复杂用户交互和多步骤流程时特别有用。不过,需要注意的是,由于安全限制,不是所有的浏览器都...

    JSP页面间的传值方法总结

    JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧。试着将各种方式总结下来,需要时可以进行权衡利弊选择最合适的方式。下面来一起看看详细的介绍: 1. URL 链接后追加参数 &lt;a&gt;URL 后面追加参数 ...

    韩顺平 jsp页面计算器

    3. **请求转发和重定向**:在不同JSP页面间传递参数,可以使用两种方法:请求转发(`RequestDispatcher.forward()`)和重定向(`response.sendRedirect()`)。请求转发在服务器端完成,保持请求状态;而重定向是...

    在多个页面传递jsp参数

    在多个页面传递jsp参数在多个页面传递jsp参数

    frame之间以及子页面和父页面间参数传递

    ### Frame之间及子页面与父...通过上述介绍,我们可以看到在JSP页面中实现`frame`之间或子页面与父页面之间的参数传递有多种方法,每种方法都有其适用场景。在实际开发过程中,可以根据具体需求选择合适的技术方案。

    jsp参数传递

    ### JSP页面间参数传递详解 #### 一、引言 在Web开发中,Java Server Pages (JSP) 是一种广泛使用的服务器端脚本技术,它允许开发者在HTML页面中嵌入Java代码,从而实现动态内容的生成。JSP页面间参数传递是JSP...

    知识共享-jsp页面中文参数传递get和post方法分析(雷惊风).

    ### 知识点详解:JSP页面中文参数传递GET与POST方法分析 #### 一、引言 在Java Web开发中,特别是在处理JSP页面时,中文参数的正确传递是常见的需求之一。不当的处理可能导致乱码问题,严重影响用户体验和数据的...

    JSP页面从一个页面传递一个参数到另外一个页面的方法

    ### JSP页面从一个页面传递一个参数到另外一个页面的方法 #### 概述 在Web开发中,特别是使用Java Server Pages(JSP)进行网站构建时,经常需要在不同的页面之间传递数据。这些数据可能包括用户的输入、表单提交...

    关于JSP页面间的传参问题

    ### 关于JSP页面间的传参问题 #### JSP页面间传值方法概述 在进行Web开发时,尤其是在使用Java Server Pages(JSP)技术的过程中,页面间的参数传递是一项非常重要的技能。它不仅涉及到基本的HTML知识,还涉及到...

    几种JSP页面传值方式.txt

    该标签可以在当前页面内嵌入另一个JSP页面,同时传递参数。 #### 5. Cookie和Session 除了上述方式外,还可以利用Cookie和Session机制进行跨页面的数据传递。 **Cookie**: - 存储在客户端浏览器中,用于跟踪用户...

    jsp页面间传中文参数示例(页面传参数编码)

    标题中提到的知识点是“jsp页面间传中文参数示例”,这涉及到在JSP页面间传递参数时如何处理中文字符,以避免乱码的问题。在网页中使用URL传递参数时,如果参数中包含中文字符,可能会因为编码不正确而导致在目标...

    cognos和jsp的参数传递

    本文将深入探讨如何在Cognos与JSP之间通过URL传递参数。 1. **URL参数传递基础** URL(Uniform Resource Locator)是互联网上的资源定位符,它可以携带信息以传递给服务器。参数通常以问号(?)分隔,多个参数用&...

    jsp页面中获取servlet请求中的参数的办法详解

    本文将深入探讨如何在JSP页面中获取Servlet请求中的参数,并将其传递到另一个JSP页面。 首先,我们需要配置`web.xml`文件,这是部署描述符,它定义了Servlet的映射和配置。以下是一个示例配置: ```xml ...

    jsp中页面间传汉字参数转码的方法.docx

    1. 在JSP页面中,确保页面的`contentType`设置正确,通常应设置为`charset=UTF-8`,以避免页面显示中文时的乱码问题。 2. 传递参数时,尽可能使用POST方法,因为GET方法的URL长度有限制,且参数会显示在地址栏中,...

    jsp中URL传递中文参数的处理方法

    在页面的url中使用encodeURI(encodeURI(中文)),对中文进行编码,并在服务器的java程序中使用URLDecoder.decode(中文, “UTF-8”)进行解码即可; 如果url中需要传递+、#、?等特殊符号,可以使用encodeURIComponent...

    JAVA-JSP学习笔记.doc

    2. **JSP页面间参数传递**:在多个JSP页面间传递参数,常用的方式是通过请求(request)或会话(session)对象。例如,`&lt;jsp:forward page="newPage.jsp"&gt;&lt;jsp:param name="paramName" value="paramValue"/&gt;&lt;/jsp:...

    Jsp页面在URL中传递参数会出现乱码问题解决

    在Web开发中,尤其是使用Java JSP技术时,我们可能会遇到...通过以上方法,我们可以有效地解决JSP页面在URL中传递参数时出现的乱码问题。在实际开发中,理解字符编码的工作原理和处理方式,对于避免这类问题至关重要。

    jsp页面间传中文参数示例(页面传参数编码).docx

    通过上述介绍可以看出,在JSP页面间正确传递中文参数的关键在于对中文字符进行适当的编码和解码处理。只有遵循正确的步骤,才能避免乱码问题,确保中文数据的正常传输和显示。希望本文能对你有所帮助。

    JSP页面中文参数的传递(get和post方法分析).docx

    在接收参数的页面,我们需要对 URL 中的中文字符进行转换,以便正确地传递参数。 例如,假设我们有一个 URL:website/test1.jsp?act=add&type=苹果param=%20D%20B 在接收参数的页面,我们可以使用以下代码来实现...

Global site tag (gtag.js) - Google Analytics