有人研究过lightningboard吗?请进来讨论一下 .do 是不是Struts的东东。你没有改变源代码,或大量代码相同应该算侵权。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to zhangbin_zhang(cat)谈谈你研究的心得好吗?不是你的义务,是你的权利。作者好像不出新版本了 1、getClass().getResourceAsStream("/lightningboard.properties");这种语法请问是怎么用的?答:是读取配置文件的内容,文件里写的....=.....的东西,可以根据键值对应读取配置。2、.do是怎么用的?我看了好像配置文件里有个filter和此有关答:是的,好像是servlet2.2还是2.3提供的新特性,就象Servlet的功能差不多,但不用写dispatch方法。也是以web.xml进行的配置,指定所有的.do请求都经过filter处理。3.notifyAll();不是类中定义的方法吗?我手头上找不到源码了。 总的来说,所有的.do请求都要过filter,在filter里面得到URI,根据相应的uri实例化相应的Action类,每个Action类都实了Action接口,实现了接口中的execute方法,执行相应的操作。在Action类中使用了Factory设计模式,得到相应的DAO实例,再执行DAO的execute()方法,进行数据库操作,并将结果存入bean类中,返回给Action的execute()方法,再将bean类使用request.setAttribute()方法存入request,最后将页面跳转的链接返回,由Filter返回相应的页面,并在页面中得到存有数据的bean,显示页面。 如果不想使用Struts的话,参考一下lightningboard中的模式还是比较好的,lightningboard写得比较小巧,而且非常简明易懂。但是如果项目大了,用struts还是首先啊。 我有源码,但是没有看见notifyAll()的方法定义。 里面用到了ejb的实体bean了吗?‘并将结果存入bean类’,每次操作都这样吗?没有用实体bean保存住结果吗? 不是用的ejb,是普通的javabean啊。<jsp:useBean id="test" scope="request" class="le.test" />不就是用的普通的javabean吗。 本身带的tamcat版本很低,我想移到高版本上,或者移动到jrun或resin上,请问,除了它的包lightningboard.jar外,另外有lightningboard.properties配置文件,再就是几个jsp文件,除了这些,还需要(当然需要)配置server.xml,这些好像还不够,还要什么? 1、getClass().getResourceAsStream("/lightningboard.properties");这种语法请问是怎么用的?答:这是创建一个InputStream的方法,这样可以读配置文件2、.do是怎么用的?我看了好像配置文件里有个filter和此有关答:.do其实是在web.xml里的url映射,你想的话,可以改成.xxx3、连接池管理DBConnectionManager.java中 public synchronized void freeConnection(Connection con) { freeConnections.addElement(con); connNumb--; notifyAll(); }此方法中的 notifyALL();是哪里的方法?答:notifyAll()涉及多线程,看看相关的书籍 我看文件好像没有引入线程包啊package lightningboard.db;import java.util.Vector;import java.sql.DriverManager;import java.sql.Connection;import java.sql.SQLException;import lightningboard.Configuration;/** * Database Connection Manager */public class DBConnectionManager { private final static DBConnectionManager instance=new DBConnectionManager(); private DBConnectionPool pool; public static DBConnectionManager getInstance() { return instance; } public Connection getConnection() throws SQLException{ return pool.getConnection(); } public void freeConnection(Connection con) throws SQLException{ pool.freeConnection(con); } private DBConnectionManager() { init(); } private void init() { Configuration cfg=Configuration.getInstance(); String db_driver=cfg.getValue("DB.DRIVER"); String db_url=cfg.getValue("DB.URL"); String db_user=cfg.getValue("DB.USER"); String db_password=cfg.getValue("DB.PASSWORD"); int db_maxConn=Integer.parseInt(cfg.getValue("DB.MAX_CONNECTIONS")); try { Class.forName(db_driver); } catch (ClassNotFoundException ex) { System.out.println(ex); } pool = new DBConnectionPool(db_url,db_user,db_password,db_maxConn); } class DBConnectionPool { private Vector freeConnections = new Vector(); private int maxConn; private int connNumb; private String URL; private String password; private String user; public DBConnectionPool(String URL, String user, String password,int maxConn) { this.URL = URL; this.user = user; this.password = password; this.maxConn = maxConn; } public synchronized void freeConnection(Connection con) { freeConnections.addElement(con); connNumb--; notifyAll(); } public synchronized Connection getConnection() throws SQLException{ Connection con = null; if (freeConnections.size() > 0) { con = (Connection) freeConnections.firstElement(); freeConnections.removeElementAt(0); try { if (con.isClosed()) { con = getConnection(); } } catch (SQLException e) { con = getConnection(); } } else if (maxConn == 0 || connNumb < maxConn) { con = newConnection(); } if (con != null) { connNumb++; } return con; } private Connection newConnection() throws SQLException{ Connection con =DriverManager.getConnection(URL,user, password); return con; } }} notifyAll();将所有wait();的线程都唤醒。 我加了access数据库 加了sqlserver数据库 在sqlserver下运行时会报一个sql的limit出错,不知道其他人有没有碰到啊我把limit去掉了,应该侵权了把 limit是mysql里的语法,当然要去掉,sqlserver中换作top我想你不当成你的东西出售,应该没有侵权问题吧 这个filter,用.do有什么作用?直接用.jsp不好吗 当然可以用.jsp了,我想使用.do可能是因为习惯吧,因为struts就用的.do。 to zhangbin_zhang(cat):你看了他的数据库连接池吗?是否和我们通常的不一样?我记得通常的是定义一个最大连接数,生成几个连接放在连接池里,有连接请求就拿一个来用,用完放回连接池,但是我记得好像同一个连接还可以供几个请求共用是吗?此例子中是不是这样呢?我看好像不一样。如果你没有源代码了,可以看我上面贴出来的,就是他的连接管理类。 <A href="home.do">高手能告诉我这句话链到哪里去了吗? 前面不是有人说过了吗?用filter,执行action目录下的bean haha, I am the author. xiaoboliu,能不能提供开发文档?!这对学习者可是太重要了!!!我先代表大家感谢你! 还有,notifyAll就是通知所有休眠的线程运行。这个方法在java.lang.Thread中,不用显示包含,编译时自动包含的。相关的方法还有:notify():通知下一个,yield():降低优先级...在默认情况下,消息的发出者就是当前运行的线程 求助 简单的问题 跪求 急~!! poi读取excel文件创建HSSFWorkbook对象时抛出异常 jbuilder的一个基础问题 关于系统启动时多线程的问题,高手进来看看啊! java的编译工具问题(急呀)! 问一个低级问题 线程池的问题求教~大家都进来看看啊~ 配置JDK1.3 高分请教java事件驱动! (奇怪,怎么不能给200分?我可以再开个贴子加分) 有关java使用代理ip访问网站 难题:int整型怎么转换成byte[],要求字节长度不仍为整型的4字节 请教如何编译jasper 文件(用于jasperreport)
这种语法请问是怎么用的?
答:是读取配置文件的内容,文件里写的....=.....的东西,可以根据键值对应读取配置。2、.do是怎么用的?我看了好像配置文件里有个filter和此有关
答:是的,好像是servlet2.2还是2.3提供的新特性,就象Servlet的功能差不多,但不用写dispatch方法。也是以web.xml进行的配置,指定所有的.do请求都经过filter处理。3.notifyAll();不是类中定义的方法吗?我手头上找不到源码了。
但是如果项目大了,用struts还是首先啊。
‘并将结果存入bean类’,每次操作都这样吗?没有用实体bean保存住结果吗?
<jsp:useBean id="test" scope="request" class="le.test" />不就是用的普通的javabean吗。
这种语法请问是怎么用的?
答:这是创建一个InputStream的方法,这样可以读配置文件2、.do是怎么用的?我看了好像配置文件里有个filter和此有关
答:.do其实是在web.xml里的url映射,你想的话,可以改成.xxx3、连接池管理DBConnectionManager.java中
public synchronized void freeConnection(Connection con) {
freeConnections.addElement(con);
connNumb--;
notifyAll();
}
此方法中的 notifyALL();是哪里的方法?
答:notifyAll()涉及多线程,看看相关的书籍
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import lightningboard.Configuration;/**
* Database Connection Manager
*/
public class DBConnectionManager {
private final static DBConnectionManager instance=new DBConnectionManager();
private DBConnectionPool pool; public static DBConnectionManager getInstance() {
return instance;
} public Connection getConnection() throws SQLException{
return pool.getConnection();
} public void freeConnection(Connection con) throws SQLException{
pool.freeConnection(con); }
private DBConnectionManager() {
init();
}
private void init() {
Configuration cfg=Configuration.getInstance();
String db_driver=cfg.getValue("DB.DRIVER");
String db_url=cfg.getValue("DB.URL");
String db_user=cfg.getValue("DB.USER");
String db_password=cfg.getValue("DB.PASSWORD");
int db_maxConn=Integer.parseInt(cfg.getValue("DB.MAX_CONNECTIONS"));
try {
Class.forName(db_driver);
}
catch (ClassNotFoundException ex) {
System.out.println(ex);
}
pool = new DBConnectionPool(db_url,db_user,db_password,db_maxConn);
}
class DBConnectionPool { private Vector freeConnections = new Vector();
private int maxConn;
private int connNumb; private String URL;
private String password;
private String user; public DBConnectionPool(String URL, String user, String password,int maxConn) {
this.URL = URL;
this.user = user;
this.password = password;
this.maxConn = maxConn;
} public synchronized void freeConnection(Connection con) {
freeConnections.addElement(con);
connNumb--;
notifyAll();
} public synchronized Connection getConnection() throws SQLException{
Connection con = null;
if (freeConnections.size() > 0) {
con = (Connection) freeConnections.firstElement();
freeConnections.removeElementAt(0);
try {
if (con.isClosed()) {
con = getConnection();
}
}
catch (SQLException e) {
con = getConnection();
}
}
else if (maxConn == 0 || connNumb < maxConn) {
con = newConnection();
}
if (con != null) {
connNumb++;
}
return con;
} private Connection newConnection() throws SQLException{
Connection con =DriverManager.getConnection(URL,user, password);
return con;
}
}
}
将所有wait();的线程都唤醒。
这个方法在java.lang.Thread中,不用显示包含,编译时自动包含的。
相关的方法还有:notify():通知下一个,yield():降低优先级...
在默认情况下,消息的发出者就是当前运行的线程