对于任何一个页面尤其是首页来说可能存在一个以上的模块。
由于太多图中只能显示产品新闻和招牌信息两个模块。
以前我习惯将首页做为单独的一个模块,不过这样的结果是action
的代码会相当长,维护起来非常麻烦。而且图中“招聘信息”只是“招聘模块”的一小部分,这样也造成了很多重复的代码。
当然我并不知道csdn
的首页是如何实现的,下面我将介绍如何解决这个问题(本人是08
应届毕业生,没有工作经验,如有不妥之处希望赐教)
根据以上两点问题。我们希望讲“招聘信息”在“招聘模块”里面去的这样才是合理的。但是,一个首页并不是只有一个模块,那么如何从多个模块取得数据,然后在首页显示就是关键了。下面我们就谈谈如何做。
代码我将用struts1.x
编写。
首先,为了更好的维护,我们需要为每个出现在首页的小模块(如图中的“招聘信息”)都做一张页面,然后在index.jsp
中在合适的地方包涵此页面:
index.jsp
部分代码:
<
table
>
< tr >
< td >
< jsp:include page ="join.jsp" />
</ td >
< td >
< jsp:include page ="product.jsp" />
</ td >
</ tr >
</ table >
< tr >
< td >
< jsp:include page ="join.jsp" />
</ td >
< td >
< jsp:include page ="product.jsp" />
</ td >
</ tr >
</ table >
对于
jsp
标签这里不多解释。
然后就是
要包含的页面了,此页面主要是判断
request
中是否有相应的数据,如果有则输出内容
join.jsp的部分代码:
< logic:present name ="showjoin" scope ="request" >
<! —- 此处为真正要包含的内容及前面提到的小模块(“招聘信息”) -- >
</ logic:present >
< logic:present name ="showjoin" scope ="request" >
<! —- 此处为真正要包含的内容及前面提到的小模块(“招聘信息”) -- >
</ logic:present >
那么如何取得数据呢?我们知道数据要从
action
中得到,要想通过改写
url
的方式是很困难的,我们可以在
index.jsp
中这样写:
index.jsp的部分代码,在保证语法正确的情况下,应该尽可能的写在上面:
< logic:notPresent name ="showjoin" scope ="request" >
< jsp:forward page ="join.do" />
</ logic:notPresent >
注意:
*在
joinAction
中
获取数据成功后应当转到
index.jsp
页面。
*
整个过程都是用的同一个
request
,所以能正常显示。
*
获取数据的那段代码(代码如下)一定要放到
index.jsp
中的顶部,否则会影响 性能。
<
logic:notPresent
name
="showjoin"
scope
="request"
>
< jsp:forward page ="join.do" />
</ logic:notPresent >
< jsp:forward page ="join.do" />
</ logic:notPresent >
因为如
request
中部存在
show
join
属性,即数据还没有获取,页面就会跳转到
action
中,获取成功后会返回
index.jsp
,这就意味着index.jsp页面将被刷新(重复执行)。所以此代码应
放到
index.jsp
中的顶部。