avatar
菜鸟请教jsp和ejb# Java - 爪哇娇娃
m*r
1
jsp半入门,ejb盲,遇到老系统。
每个jsp页面分几块,每块显示几个人的信息,这一组人存在collection里。
jsp1显示成人和孩子,jsp2只显示成人。
jsp1
… />

jsp2

我的任务要把jsp1改成只显示孩子,不知道怎么修改或者新建一个collection。
jsp1里面的people_otherStateBenefitQuestion来自于同文件内的scriptlet
INDIVIDUAL_Custom_Collection)request.getAttribute("PEOPLE_
otherStateBenefitQuestion"); %>
AFBIndividualsTag.java控制ap的jstl,里面有一个StringBuffer buildHTML()生成最
终页面,本身及父类也没有doTag()。buildHTML可以判断element是孩子还是成人,但
只是头像不同,全部都要显示。问题是数据源collection里面的人是哪里来的。
HouseHoldInfoEJBBean.java 包含下列代码(不连续):
Map request = txnBean.getRequest();
Map pageCollection = txnBean.getPageCollection();
Map beforeCollection = (Map) session.get(FwConstants.BEFORE_COLLECTION);
pageCollection.put("PEOPLE_otherStateBenefitQuestion", beforeCollection.get
("PEOPLE_otherStateBenefitQuestion"));
搜了整个项目,好像没有别的文件包含PEOPLE_otherStateBenefitQuestion这个字符串
了。
avatar
z*3
2
jsp1是什么?是最后显示出来的view吗?
也就是最后结果是用jsp1显示,之前有其他的什么查询之类的jsp?
我大概猜测是这样
people_otherStateBenefitQuestion是request里面一个attribute
从request中get这个attribute
那么在发送这个request的时候,肯定有一个地方把这个request给set进去
如果是mvc结构的话,到view一般是最后一步了
一般经过ejb处理之后才到view,所以从ejb中找这个collection
然后从你给出的代码看,它是从session中取得这个collection对象
然后放到pageCollection里面去
我的猜测就是这个pageCollection对应着request
而put到这个pageCollection里面去的所有对象,最后都会变成request的attribute
比如我这么做
pageCollection.put("zhaoce","mitbbs");
那么当我在jsp上写

就会显示mitbbs
你可以试一下
关键是你的web框架是什么?查找相关的文档会容易很多,或者问老员工,一句话的事
搞不好这是你们自己写的web框架
avatar
m*r
3
jsp1就是源码,一个tag,最后会变成一堆html显示一组人。
我没有搜到setAttribute方法。
我怀疑没有mvc框架,大量scriptlet,架构恐怕很烂。 明天我把别人给我画的图发上来。

【在 z*******3 的大作中提到】
: jsp1是什么?是最后显示出来的view吗?
: 也就是最后结果是用jsp1显示,之前有其他的什么查询之类的jsp?
: 我大概猜测是这样
: people_otherStateBenefitQuestion是request里面一个attribute
: 从request中get这个attribute
: 那么在发送这个request的时候,肯定有一个地方把这个request给set进去
: 如果是mvc结构的话,到view一般是最后一步了
: 一般经过ejb处理之后才到view,所以从ejb中找这个collection
: 然后从你给出的代码看,它是从session中取得这个collection对象
: 然后放到pageCollection里面去

avatar
z*3
4
你不能跑起来改改试试?

来。

【在 m*****r 的大作中提到】
: jsp1就是源码,一个tag,最后会变成一堆html显示一组人。
: 我没有搜到setAttribute方法。
: 我怀疑没有mvc框架,大量scriptlet,架构恐怕很烂。 明天我把别人给我画的图发上来。

avatar
a*i
5
Map pageCollection = txnBean.getPageCollection();
Map beforeCollection = (Map) session.get(FwConstants.BEFORE_COLLECTION);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
你找一下什么地方这个session被赋值的,查找FwConstants.BEFORE_COLLECTION
是怎么产生这个值的
pageCollection.put("PEOPLE_otherStateBenefitQuestion", beforeCollection.get
("PEOPLE_otherStateBenefitQuestion"));

【在 m*****r 的大作中提到】
: jsp半入门,ejb盲,遇到老系统。
: 每个jsp页面分几块,每块显示几个人的信息,这一组人存在collection里。
: jsp1显示成人和孩子,jsp2只显示成人。
: jsp1
: : … />
:
: jsp2
:
: 我的任务要把jsp1改成只显示孩子,不知道怎么修改或者新建一个collection。

avatar
m*r
6
本地环境有问题,还没有配置好

【在 z*******3 的大作中提到】
: 你不能跑起来改改试试?
:
: 来。

avatar
m*r
7
There are over ten session.put(FwConstants.BEFORE_COLLECTION, xxxxxx) in
HouseHoldInfoEJBBean.java
Two of them are session.put(FwConstants.BEFORE_COLLECTION, txnBean.
getPageCollection()),
the others are session.put(FwConstants.BEFORE_COLLECTION, beforeColl).

get

【在 a****i 的大作中提到】
: Map pageCollection = txnBean.getPageCollection();
: Map beforeCollection = (Map) session.get(FwConstants.BEFORE_COLLECTION);
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 你找一下什么地方这个session被赋值的,查找FwConstants.BEFORE_COLLECTION
: 是怎么产生这个值的
: pageCollection.put("PEOPLE_otherStateBenefitQuestion", beforeCollection.get
: ("PEOPLE_otherStateBenefitQuestion"));

avatar
m*r
8
当时听的一知半解,完全纸上画,没有结合代码。

【在 z*******3 的大作中提到】
: 你不能跑起来改改试试?
:
: 来。

avatar
a*i
9
肯定有个地方是
beforeCollection.put("PEOPLE_otherStateBenefitQuestion", xxx)
仔细找就好,要不然就问同事
在网上问没什么用,又没有完全的代码

【在 m*****r 的大作中提到】
: There are over ten session.put(FwConstants.BEFORE_COLLECTION, xxxxxx) in
: HouseHoldInfoEJBBean.java
: Two of them are session.put(FwConstants.BEFORE_COLLECTION, txnBean.
: getPageCollection()),
: the others are session.put(FwConstants.BEFORE_COLLECTION, beforeColl).
:
: get

avatar
m*r
10


【在 a****i 的大作中提到】
: 肯定有个地方是
: beforeCollection.put("PEOPLE_otherStateBenefitQuestion", xxx)
: 仔细找就好,要不然就问同事
: 在网上问没什么用,又没有完全的代码

avatar
a*i
11
呃,无语啊,你多问问同事才对
变量名可能会不一样啊,也许是 bcoll,也许是 put ()
但是既然取这个值,就有地方设

【在 m*****r 的大作中提到】

avatar
z*3
12
我估计也是
这种legacy code
要想一下子理解,不是那么容易
毕竟不规范
你这种问题问一下其他老员工
也就是一分钟的事
远比你自己在这里问然后找要容易得多
j2ee就是这样,层与层之间的关联
没有你想得那么容易
往往这些关联是用框架来实现
也就是你光看代码,你是找不到的
你得去看配置文件,所以就很不直观
所以这就是为什么我长期强调规范代码
因为规范的代码查起来有官方文档的帮忙
不规范的代码,除了公司自己的人知道,就没有人知道了
不过你这个还好,图画出来我大概明白了
层次是这样
jsp->servlet(封装pojo,也就是实体,set/get方法)->ejb->bo?->*dao(这里应该是用
上了虚拟类的继承)->db
够原始的系统,ejb1.x版本时候的事,struts什么都没用上
好处是对你基础的提高很有帮助
你断掉的那个逻辑是在servlet到ejb之间
看ejb的配置文件,还有就是这个servlet应该有一个总的dispatcher
就是总的派发servlet的类,找找这个类,大概读一读代码
也许能够领悟,不过这非常不容易,我一般遇到这种就直接问了
问同事会快很多,没事拍拍老员工马屁也蛮好,对你没有坏处
还是问吧,这个结构还是很正规的,没有很奇芭的东西
就是结构老了点,层次还是比较清晰的

【在 m*****r 的大作中提到】
: 当时听的一知半解,完全纸上画,没有结合代码。
avatar
m*r
13
谢谢指教。看到“我一般遇到这种就直接问了”我觉得我自己再看也白搭了,牛人尚且
如此。
带我这人,也不是从头开始做的。
以前还接触过更老的技术,可能比struts还老。

【在 z*******3 的大作中提到】
: 我估计也是
: 这种legacy code
: 要想一下子理解,不是那么容易
: 毕竟不规范
: 你这种问题问一下其他老员工
: 也就是一分钟的事
: 远比你自己在这里问然后找要容易得多
: j2ee就是这样,层与层之间的关联
: 没有你想得那么容易
: 往往这些关联是用框架来实现

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。