JDBC 在 Servlet 中的应用,用法基本等同于在Java SE中的应用;
一般来说实际与数据库交互使用Servlet来处理,之后将结果集转发给JSP生成响应,对于数据库的连接参数,可以储存在一个类中,方便多个Model进行调用,同时方便数据库连接参数的修改;
以下一个简单的示例:
DataAccessConfig.java:储存数据库连接参数,可以将该类实现为一个工厂类,以便分为各套连接参数的灵活调用;
public class DataAccessConfig{
private String dirver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql//localhost/demo";
private String user = "root";
priavte String password = "123";
public String getDriver(){ retrun this.driver};
public String getUrl(){ retrun this.Url};
public String getUser(){ retrun this.user};
public String getPassword(){ retrun this.password};
}
DataAccess.java:处理数据库逻辑的Model Servlet
@WebServlet("/DatabaseAccess")
public class DatabaseAccess extends HttpServlet {
private DataAccessConfig config = null;
public DataAccess(){
super();
config = new DataAccessConfig();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
Connection connection = null;
try{
//执行数据库查询操作
Class.forName(config.getDriver());
connection = DriverManager.getConnection(config.getUrl(),config.getUser(),config.getPassword());
Statement statement = conncection.createStatement();
Resulset resultset = statement.executeQuery("select isbn,author,title,price from books");
//将结果集转发到一个JSP页面生成响应页
request.setAttribute("resultset",resultset);
getServletContext().getRequestDispatcher("/showResultSet.jsp").forward(request,response);
}catch(SQLException ex){
getServletContext.log("SQLException",ex)
}catch(Exception ex){
getServletContext.log("Other Exception",ex)
}finally{
connection.close();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
showResultSet.jsp
:显示数据库结果集
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%! ResultSet resultset = request.getAttribute("resultset"); %>
<html>
<head><title>result set</title></head>
<body>
<% while(resultset.next()){ %>
<p><%= resultset.getString("isbn")%> |
<%= resultset.getString("author")%> |
<%= resultset.getString("title")%> |
<%= resultset.getFloat("price")%>
</p>
<% } %>
</body>
</html>