zoukankan      html  css  js  c++  java
  • jsp页面间对象传递方法

           严格的来说不能叫做JSP页面间的对象传递,实际应该是页面间对象共享的方法:

          1. 通过servletcontext,也就是application对象了,但这种情况要求在同一个web应用下,
          2. 通过sessioncontext,也就是session对象了,这种情况一般也是要求在同一个web应用下,
          1和2在特定的部署条件下,比如支持对话复制的负载均衡环境下,或者cluster情况下,可以跨服务器。

          3. 通过request对象,也就是在request里设置properties了,但是这种情况要求必须使用request.dispatch方法,也就是在server端重定向
          4. 通过response.redirect方法,这样既可以利用sesseion和application,如果不在同一个web应用下,就要使用url编码来传递参数了
          5.严格来说不算传递对象,但是也是某种意义上的在jsp之间共享对象,就是通过jsp的include指令,server端的include。至于html的server端include,不清楚会怎么样,没有试过,不妨试验一下。

          还有其他意义上的传递对象,比如自定义全局变量/映射/hashtable/map之类的(有一个类似的开元框架),又比如对象序列化,然后post方式 提交到另外一个jsp中,或者放到ldap/jndi结构中,甚至放到公用数据库/路径/文件中等等等等,不一而足,只是可能有点儿偏离jsp本身.

        

          Jsp1要传递对象到Jsp2,可以通过类似代理的方式,比如Jsp1先到Action再到Jsp2等方式.

          追加一些对jsp的理解:

          一:执行时间上: 
    <%@ include file=”relativeURI”%> 是在翻译阶段执行   编译只会产生一个.class文件,这个.class文件包括当前页面和引入页面  先包含,后编译,不会检查所含文件的变化,适用于包含静态页面     使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含<html><body>这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错。  


    <jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行. 编译会产生两个.class文件,分别为当前页面的.class文件,和引入页面的.class文件  被包含文件也要经过jsp引擎编译执行生成一个Servlet,两个Servlet通过request和reponse进行通信    先编译,后包含  会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数.

    由于在主页面被请求时,这些页面还没有被引入到主页面中,所以你可以对page属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个页面.还可以添加一些将被引入的页面读取的请求参数. 
    <jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” > 
    <jsp:param name=”fitstParamer” value=”firstValue”> 
    <jsp:param name=”lastParamer” value=”lastValue”> 
    </jsp:include> 

    二:引入内容的不同: 
    <%@ include file=”relativeURI”%> 
    引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起. 
    <jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本. 
    另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.

  • 相关阅读:
    「七天自制PHP框架」第四天:模型关联
    「七天自制PHP框架」第三天:PHP实现的设计模式
    「七天自制PHP框架」第二天:模型与数据库
    一个例子简要说明include和require的区别
    解读Laravel,看PHP如何实现Facade?
    Laravel是怎么实现autoload的?
    Laravel表单提交
    Laravel的console使用方法
    PHP控制反转(IOC)和依赖注入(DI)
    PHP解耦的三重境界(浅谈服务容器)
  • 原文地址:https://www.cnblogs.com/yedu/p/4397554.html
Copyright © 2011-2022 走看看