2010-11-10 137 views
1

我想通过使用NetBeans IDE使用jsp servlet和bean来创建Web应用程序。jdbc mysql连接

我想知道应该在哪里放置数据库连接代码,以便我可以在每个servlet中使用我的数据库代码,这意味着我不想在每个需要使用数据库的页面中编写连接代码。

请帮我找到,我应该如何移动?

+4

接受一些答案。 16个问题,没有被接受。 – Bozho 2010-11-10 12:58:32

回答

0

如果您从servlet的连接,您可以创建一个扩展HttpServlet的BaseServlet类,而不是实际的服务器必须扩展BaseServlet而不是HttpServlet。 现在,您只需在BaseServlet中编写连接代码,并将其用于伪servlet(扩展BaseServlet)即可。

1

这里有一个想法如何做到这一点:

  1. 做一个使用静态工厂方法getNewDBConnection
  2. 在应用程序启动名为DBConnection类,验证您的数据库连接是有效的,并且使用ServletContextListener,设立DBConnection类,所以上述方法将始终返回一个新的连接
  3. 在整个代码中使用DBConnection.getNewDBConnection()

我会留下您的样板和异常处理。有更优雅的方式来做到这一点,例如使用JPA,但这不在这个答案的范围之内。

小心以上的想法。我只写了它;但没有尝试过,并证明它是正确的。

2

只需把所有的JDBC东西放在它自己的类中,然后在servlet中导入/调用/使用它。

E.g.

public class UserDAO { 
    public User find(String username, String password) { 
     User user = new User(); 
     // Put your JDBC code here to fill the user (if found). 
     return user; 
    } 
} 

随着

import com.example.dao.UserDAO; 
import com.example.model.User; 

public class LoginServlet extends HttpServlet { 
    private UserDAO userDAO; 

    public void init() throws ServletException { 
     userDAO = new UserDAO(); // Or obtain by factory. 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) { 
     String username = request.getParameter("username"); 
     String password = request.getParameter("password"); 
     User user = userDAO.find(username, password); 
     if (user != null) { 
      // Login. 
     } else { 
      // Error: unknown user. 
     } 
    } 
}