在struts的模型组件里如何获取DataSource?

CoffeeMachine 2006-06-07 10:41:20
书上说Action侧重于逻辑验证和流程控制,决定用户请求的转发.对实际业务逻辑,如库中数据的增,删,改等操作应由另外的模型组件负责.但模型组件如何获取数据库连接呢?struts-config.xml中配置了数据源后在Action中可以用getDataSource()获取数据源,从而由DataSource.getConnect获取连接对数据操作.而自己定义的模型组件中是没有getDataSource()方法的,如何获取连接?当然用

Class.forName(driverName).newInstance();
connect = DriverManager.getConnection(connStr);

也可以获取数据库连接.事实上书上的例子里模型组件就是这么访问数据库的.但这样直接取connection就和Struts框架脱钩了吧,是不是就丢失了连接池的优越性?访问数据库都通过这种方式的话,struts-config.xml里的DataSource不是没有意义了?

不知道大家都是怎么处理的?当然在Action中先取DataSource,在构造模型组件或调用模型组件的方法的时候把DataSource当参数传进去应该是可以取到DataSource的,但这办法太笨了吧,所有模型组件都要加这参数.而且耦合度也高.书上说模型组件应该相对独立,不应访问Servlet API或Struts API中的类.

不好意思,刚学Struts搞不清楚结构,请知道的点拨一下
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xueguiping 2006-09-27
  • 打赏
  • 举报
回复
struts的思想好象不是在action里得到datasource吧
最好单独写bean来完成
lip009 2006-09-27
  • 打赏
  • 举报
回复
程序启动以后在任何类里使用数据库连接只需要:

DBManager dbManager=new DBManager();
Connection conn=dbManager.getConnection();
wcjmaomao 2006-09-27
  • 打赏
  • 举报
回复
通常情况下在action里面不与数据库打交到,不过在action里面一个方法可以得到datasource
this.getDataSource( request );
lip009 2006-09-27
  • 打赏
  • 举报
回复
因为数据源对于一个应用程序只有一个,所以自己写个数据库管理类,把数据源定义为静态资源,例如:
public class DBManager{
private static DataSource dataSource=null;

/**
* 设置数据源
*/
public static setDataSource(DataSource dataSource){
this.dataSource=dataSource;
}

/**
* 得到数据库连接
*/
public Connection getConnection(){
return this.dataSource.getConnection();
}
}

然后写个Strust的PlugIn插件,在PlugIn的init()方法里,程序刚开始加载的时候遍把数据源DataSource设置到上面的静态资源里,如:
public class DataSourcePlugIn implements PlugIn {

public void destroy() {
}
public void init(ActionServlet parm1, ModuleConfig parm2) throws javax.servlet.ServletException {

ServletContext context=parm1.getServletContext();
DataSource datasource=(DataSource)context.getAttribute(Action.DATA_SOURCE_KEY);
DBManager.setDataSource(datasource);
}
}
林中漫步1982 2006-09-27
  • 打赏
  • 举报
回复
struts-config.xml里有datasouce这项配置吗?

我用struts有三年了, 感觉struts与数据库连接没有关系吧,

struts只是表示层的实现框架, 怎么会与持久层的数据源扯上关系呢?
lmt0121 2006-09-27
  • 打赏
  • 举报
回复
我也刚学Struts和DataSource,楼上提的问题我也想过,希望大侠指点!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧