JSP页面中如何将某个action生成的另一个JSP页面包含进来

打个比方,现在我有一个a.jsp页面,还有一个b.action,
如果主动请求b.action会转向b.jsp页面,并且b.jsp中的内容由b.action动态生成,我想在a.jsp中包含b.jsp中的内容,但是如果请求a.jsp页面,只会将b.jsp中的静态内容给包含进来,现在的问题是如何在请求a.jsp页面时将由b.action动态生成的b.jsp页面内容都包含进来?
用的是struts2的框架,不知道说的够不够清楚~
望高人指点~

<jsp:include page="a.jsp" />
<jsp:include page="b.jsp" />

别以为上面只是两行代码,其实上面是一个页面的所有代码,我们把它看成结构页并命名为g.jsp
然后我们看代码,第一句就是引入a页面,a页面是静态的吧?所以引入完全没有问题,然后第二句,要引入b页面了,但是action还没有调用,怎办?很简单,我们去修改struts-config.xml,找到b.action的配置代码,假如本来是<forward name="success" path="/b.jsp" />
我们现在改为
<forward name="success" path="/g.jsp" />这样到时候就能显示两个页面了
那么还有一个问题,如果我们要单独显示a页面怎办?也很简单
我们在b.action中添加些代码,当action执行成功时,也就是return mapping.findForward("%%%%");前,我们可以生成一个request,具体代码比如:
request.setAttribute("show_b_jsp","*");
然后在g.jsp里修改为
<jsp:include page="a.jsp" />
<logic:present name="show_b_jsp" scope="request">
<jsp:include page="a.jsp" />
</logic:present>
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-11
试下:
----------------------------------------------------
<jsp:include page="b.action" />
----------------------------------------------------
如果 直接跳转到了 b.jsp页面的话
没办法了 给它来硬的;
我们可以在action 里得到 request

----------------------------------------------------
HttpServletRequest request = ServletActionContext.getRequest();
----------------------------------------------------

在使用request 的RequestDispatcher.forward();跳转到b.jsp

----------------------------------------------------
request.getRequestDispatcher("b.jsp").include(request, response);
----------------------------------------------------

这样我们的<jsp:include page="b.action" /> 就好用了

什么出异常。。。

return null; OK本回答被提问者采纳
第2个回答  2016-05-20
一般来说,在JSP页面中包含文件有两种方式,即<%@include file=”uri”%>和<jsp:include page=”uri”></jsp:include>,但要注意它们的区别:
1、 前者路径中不能传参数,也不能用表达式,后者可以。例如:
<jsp:include page=”<%=path%>” flush=”true”>
<jsp:param name=”参数名” value=”参数值”/>
</jsp:include>
传递的参数可以用request.getParameter(“参数名”)来获取。
2、 二者处理方式不同。前者会将被包含文件原封不动地插入到包含文件中,然后再编译,是一个文件;而后者是在执行到<jsp:include>标签后,转向被包含文件,并先执行,然后再继续执行原页面上后面的代码,也就是说会对两个文件分别编译。因此,两页面间的变量如ID、NAME等不能共享。
前者对包含文件和被包含文件的属性要求一致,如不能在这两个页面设置不同的contentType内容(例如一个设置为charset=”GBK”,另一个设置为charset=”gb2312”),否则会抱错;而使用后者,不会有这样的问题。
第3个回答  2016-01-26
在一个JSP页面中包含另一个JSP页面的三种方式。
(1)include指令
include指令告诉容器:复制被包含文件汇总的所有内容,再把它粘贴到这个文件中。
<%@ include file="Header.jsp"%>
(2)include标准动作
<jsp:include page=“Header.jsp”/>
(3)采用JSTL
<c:import url=".sina.com/index.html">
注意:(1)include指令在转换时插入“Header.jsp”的源代码,而<jsp:include>标准动作在运行时插入“Header.jsp"的响应。
(2)采用前两种方式,只能包含当前web应用的界面, 不过,《c:import》可以包含容器之外的内容。
第4个回答  2016-03-29
采用内嵌页的方式
1, 直接请求a.jsp 但是在a.jsp中添加一个内嵌页<iframe></iframe>
2,内嵌页的写法为 <iframe src="b.action"></iframe>
这样,在打开a.jsp时,也能对b.action进行请求了.
相似回答