当前位置: 代码迷 >> JavaScript >> 不通过action的话,怎么在jsp中获得数据
  详细解决方案

不通过action的话,怎么在jsp中获得数据

热度:298   发布时间:2012-11-04 10:42:41.0
不通过action的话,如何在jsp中获得数据?
我的问题是:

有一add_user.jsp页面用于添加用户,其中部门下拉列表负责列出当前有效部门,有效部门非固定,需要充数据库中查询,可是我又不想在连接到这个jsp页面之前通过一个action来产生departments列表,有什么其它办法么?

用jsp肯定是能实现的,但我想只用ww而不是jsp代码来做。我觉得应该有个引用某模板的功能,该模板的作用就是根据我的要求产生一些数据,象departments,users等等,当我需要这些数据时,直接引用就可以了。我找了半天没找到,看来ww方面的材料还是太少了些。

知道的请指教一下,谢谢了!
1 楼 robbin 2006-10-17  

webwork的JSP Taglig可以达到你的需求

但我不建议跳过action
2 楼 coocle 2006-10-17  
robbin 写道

webwork的JSP Taglig可以达到你的需求

但我不建议跳过action


谢谢你的答复。不过还是有个疑惑,为什么这类功能不应跳过action呢?

象员工列表,部门列表等,虽然也需要从数据库查询数据,但都是为了给用户在使用时查看或做一个选择而已,本身不涉及业务逻辑,只是显示。如果每次需要用时都要通过一个单独的action来获得它,而这个 action除了获得这么个列表,其它什么功能都没有,是否太浪费资源了?
3 楼 LucasLee 2006-10-17  
coocle 写道

谢谢你的答复。不过还是有个疑惑,为什么这类功能不应跳过action呢?

象员工列表,部门列表等,虽然也需要从数据库查询数据,但都是为了给用户在使用时查看或做一个选择而已,本身不涉及业务逻辑,只是显示。如果每次需要用时都要通过一个单独的action来获得它,而这个 action除了获得这么个列表,其它什么功能都没有,是否太浪费资源了?


浪费资源?这个问题这么问就广了。
这就是性能问题,要提高性能有很多...很多地方都要注意,那就没边儿了。
关键是,获得合理或足够的性能。

浪费...就是生产力。

我们有东西可以浪费,比如你买了个1000块钱的显卡,你是不是每时每刻都在玩那么high的游戏?就算是,你上班的时候,机器是不是闲置的?这么说你的机器要像网吧那么用才算得上不那么浪费。但那省钱,不省心。你花钱不就买个开心么。

我们只需要总体上是得益的,不需要每个局部都得益。在编程里就是,现在的机器环境下,能适应目标负载就可以了,然后怎么方便怎么编码。
4 楼 hasi 2006-10-17  
coocle 写道
robbin 写道

webwork的JSP Taglig可以达到你的需求

但我不建议跳过action


谢谢你的答复。不过还是有个疑惑,为什么这类功能不应跳过action呢?

象员工列表,部门列表等,虽然也需要从数据库查询数据,但都是为了给用户在使用时查看或做一个选择而已,本身不涉及业务逻辑,只是显示。如果每次需要用时都要通过一个单独的action来获得它,而这个 action除了获得这么个列表,其它什么功能都没有,是否太浪费资源了?

浪费资源是什么概念?
通过action结构上良好,层次分明,易于维护扩展
5 楼 Allen 2006-10-17  
coocle 写道
robbin 写道

webwork的JSP Taglig可以达到你的需求

但我不建议跳过action


谢谢你的答复。不过还是有个疑惑,为什么这类功能不应跳过action呢?

象员工列表,部门列表等,虽然也需要从数据库查询数据,但都是为了给用户在使用时查看或做一个选择而已,本身不涉及业务逻辑,只是显示。如果每次需要用时都要通过一个单独的action来获得它,而这个 action除了获得这么个列表,其它什么功能都没有,是否太浪费资源了?


Try DispatchAction.

And according to Struts docs:
引用
Actions must be programmed in a thread-safe manner, because the controller will share the same instance for multiple simultaneous requests.

Which means your Action can only have one single instance at one single time.
6 楼 java虫 2006-10-17  
进一个页面前一般都应该先进一个action准备一些数据呀。
7 楼 coocle 2006-10-17  
java虫 写道
进一个页面前一般都应该先进一个action准备一些数据呀。


不一定吖,比方说新建用户页面,就一个form,等着使用者填写,那需要准备什么数据么?

现在的问题就是,如果确实有些数据要准备,但这些数据又很少,比方说部门列表,是否一定有必要用一个action来准备这一点点的数据。
8 楼 抛出异常的爱 2006-10-17  
coocle 写道
java虫 写道
进一个页面前一般都应该先进一个action准备一些数据呀。


不一定吖,比方说新建用户页面,就一个form,等着使用者填写,那需要准备什么数据么?

现在的问题就是,如果确实有些数据要准备,但这些数据又很少,比方说部门列表,是否一定有必要用一个action来准备这一点点的数据。
是有必要的
但也不是必须的
看怎么维护的
如果想的话可以用jsp+bean 开发
那样可以节约很多资源
有时还是很方便的说
如果后来接手的人不明白你的想法
浪费的就不止是时间了....
9 楼 风雪涟漪 2006-10-17  
coocle 写道
java虫 写道
进一个页面前一般都应该先进一个action准备一些数据呀。


不一定吖,比方说新建用户页面,就一个form,等着使用者填写,那需要准备什么数据么?

现在的问题就是,如果确实有些数据要准备,但这些数据又很少,比方说部门列表,是否一定有必要用一个action来准备这一点点的数据。

如果加权限处理呢?你不能保证链接的页面不做任何处理啊.比如说添加,我多了个要限制添加权限,总不能把那堆代码添加到JSP页面上吧? 以后难以维护.
10 楼 robbin 2006-10-17  
coocle 写道
java虫 写道
进一个页面前一般都应该先进一个action准备一些数据呀。


不一定吖,比方说新建用户页面,就一个form,等着使用者填写,那需要准备什么数据么?

现在的问题就是,如果确实有些数据要准备,但这些数据又很少,比方说部门列表,是否一定有必要用一个action来准备这一点点的数据。


你不必创建action,直接配置一个com.opensymphony.xwork.ActionSupport去封装就行了。

很少的数据,可以通过Webwork的tag来获取。

不过action封装是必须的,否则享受不到Webwork拦截器的功能了。
11 楼 foxty 2006-10-24  
不想用action倒是有另外一种方法。

以前这么做过,在页面载入的时候通过ajax去获取对应部门列表,动态显示在页面上就即可。

不过这样跳过了action,在权限验证上就力不从心了。
12 楼 coocle 2006-10-24  
JavaVision 写道
coocle 写道
java虫 写道
进一个页面前一般都应该先进一个action准备一些数据呀。


不一定吖,比方说新建用户页面,就一个form,等着使用者填写,那需要准备什么数据么?

现在的问题就是,如果确实有些数据要准备,但这些数据又很少,比方说部门列表,是否一定有必要用一个action来准备这一点点的数据。

那非得又一卡车的数据,你才用action啊。
这理由傻的一塌糊涂啊


很傻么?我自己倒不觉得,这段时间我自己试了下,目前使用过三种方式:
1、在进入jsp页面前经过一个action进行数据准备,但由此引发后面处理逻辑的action中被迫加入了相应的数据保持及传输处理的代码,看着很不清爽。此方法已我个人觉得很不好,已排除在选择之外。

2、在JSP页面中直接调用<ww:action/>来获取数据,只需要定义一个action作为数据载体,再定义不同方法获得具体数据,这个方法看起来很好,定义清晰,使用方便。原来我打算就是这个了……可惜后来发现在进行验证处理时存在一些问题(具体看咱的另一个发问贴),目前先暂且搁置.

3、使用<ww:bean/>,这个和传统的javabean使用方式差不多,由于上面第二种方式行不通,所以只好采用这个方法,需要根据不用的需求生成数据载体类,好像有点不是很理想。

希望有人能提示些新的方法,目前上面三种,我依然觉得不是很好,希望能找到最终最优的解决方案。

谢谢!
13 楼 leobluewing 2006-10-24  
数据存储这些代码应该放到你的业务逻辑层,而不是放在数据传送层的

action只是告诉form,我要传哪些数据给你。

如果你有的数据获得是写在action里传到jsp,而有的数据获得是直接在jsp上用tag体现。这样就显的太乱了。

当然,说实话,具体问题具体分析。 但是能够套在通用框架里的还是尽量的套进去吧。
  相关解决方案