基于“MVC”框架集设计模式,利用 DBHelper实现查询数据库功能

利用 DBHelper实现查询数据库功能

(1)连接好mysql数据库,如果无法连接,先打开mysql服务。新建一个数据库,名字为text,在新建一个数据表,名字为user,添加三个字段:用户ID、用户名和密码。

                       

(2)新建 web 项目UserManager,根据MVC模型的设计,建立四个包:beans、DAO、DBHelper、servlet。将所需要的DBHelper导入新建Web项目的DBHelper中,注意要使数据库名字保持一致。将mysql-connector-java-5.1.24-bin.jar数据库连接驱动导入到该项目的WEB-INF的lib目录下。如图:

 

 这里提到的 MVC----(Model View Controller)设计模型:

    M:表示业务数据和业务规则。包括DAO(beans)、DBHelper(DBHelper),用于封装数据库连接,业务数据库处理。

    V:是用户看到并与之交互的界面,比如 JSP 经常充当Web应用视图。

    C:接收用户是输入并调用模型和视图去完成用户需求。

(3)在beans包中新建class,名字为User,建好私有实体类,并且要与数据库中的字段名一致,添加需要的get和set方法。

package beans;
public class User{
    private String    userID;
    private String    userName;
    private String    password;

    public void setUserID(String userID){
        this.userID=userID;
    }
    public String getUserID(){
        return userID;
    }
    public void setUserName(String userName){
        this.userName=userName;
    }
    public String getUserName(){
        return userName;
    }
    public void setpassword(String password){
        this.password=password;
    }
    public String getpassword(){
        return password;
    }
}


(4) DAO中需要新建一个类,用于执行SQL语句,并要定义 List 结果集来接收实体的各个属性。 

package DAO;

import java.sql.*;
import java.util.*;

import DBHelper.DBHelper;
import beans.*;

public class userDAO {
    public List getAllUser()
    {
        try
        {
        String SQL="SELECT * FROM user";
        ResultSet rs=DBHelper.getResultSet(SQL);
        List users=new ArrayList();
        while (rs.next()) 
        {
            User u=new User();
            u.setUserID(rs.getString("userID"));
            u.setUserName(rs.getString("userName"));
            u.setpassword(rs.getString("password"));
            users.add(u);
        }
        return users;
    }
        catch (Exception ex) {
            ex.printStackTrace();
            return null;}

     }
}


(5)servlet 中新建的UserServlet将它本身具有的必要的方法定义好,但是由于自己只具备处理事务的特性,不具备显示的功能,所以要把多余的输出语句删除,并且使得doGet方法也执行doPost方法。调试代码时,如果servlet没有响应,可以先将写好的代码注释,在servlet中打印一句话,以便于检测servlet是否有效。 

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import DAO.userDAO;

public class UserServlet extends HttpServlet {

    public UserServlet() {
        super();
    }
    public void destroy() {
        super.destroy(); 
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
           doPost(request, response);
 
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        userDAO dao=new userDAO();
        List users=dao.getAllUser();
        request.getSession().setAttribute("users", users);
        response.sendRedirect("../user.jsp");    

    }
    public void init() throws ServletException {

    }

}


(6)JSP页面:主要是创建一个表单,利用List循环,接收servlet处理好的表单及字段。 

 <body>
<%
    List<User> users= (List<User>)session.getAttribute("users");
    out.print("<table border=1>");
    out.print("<tr><td>用户ID</td><td>用户名</td><td>密码</td></tr>");
    for(User u : users)
    {
        out.print("<tr>");
        out.print("<td>"+u.getUserID()+"</td>");
        out.print("<td>"+u.getUserName()+"</td>");
        out.print("<td>"+u.getpassword()+"</td>");
        out.print("</tr>");
    }
    out.print("</table>");
     %>
     </body>


(7)开始运行(调试)

运行UserServlet,他将自动跳转到user.jsp,如果直接执行user.jsp,结果无法传输,则没有任何内容出现。运行结果如图,与数据库的内容一致,表示成功。

 

转载于:https://www.cnblogs.com/Believer/p/5264343.html

MVC模式的实现数据库的增删改查 部分代码: package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import common.DBConnection; import bean.Contact; public class ContactDAO { public List getAllContact() throws Exception{ Connection conn=DBConnection.getConntion(); PreparedStatement ps=conn.prepareStatement("select * from Contact"); ResultSet rs=ps.executeQuery(); List list = new ArrayList(); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); String phone = rs.getString("phone"); String address = rs.getString("address"); Contact c = new Contact(); c.setId(id); c.setName(name); c.setPhone(phone); c.setAddress(address); list.add(c); } rs.close(); ps.close(); conn.close(); return list; } public void addContact(String name,String phone,String address) throws Exception{ String sql = "insert into contact(id,name,phone,address) values(seq_contact.nextval,?,?,?)"; Connection con = DBConnection.getConntion(); PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, name); pstmt.setString(2, phone); pstmt.setString(3, address); pstmt.executeUpdate(); } public void delContact(int id) throws Exception{ String sql = "delete from contact where id=?"; Connection con = DBConnection.getConntion(); PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, id); pstmt.executeUpdate(); } public Contact getContactById(int id) throws Exception{ String sql = "select * from Contact where id=?"; Connection con = DBConnection.getConntion(); PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, id); ResultSet rs = pstmt.executeQuery(); Contact c = null; while(rs.next()){ // int id = rs.getInt("id"); String name=rs.getString("name"); String p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值