基於IDEA搭建SpringMVC項目詳細過程(三)

前面,我們在IDEA上把SpringMVC框架基本搭建完成,接下來,就要實現核心業務邏輯

我們的業務需求是從MySQL數據庫中取出數據,然後在 jsp 頁面上把數據顯示出來 

 在實現具體的業務邏輯時,把業務邏輯分爲DAO層、Service層、Controller層、View層

      Controller層-->Service層-->DAO層

  1. Controller層:主要負責具體業務模塊流程的控制,會調用Service層的接口來控制業務邏輯;
  2. DAO層:主要是負責數據持久層的工作,用來對錶進行增刪改查的操作;
  3. Service層:主要負責業務邏輯設計,調用已定義的DAO層接口
  4. View層:主要負責前端 jsp 頁面的實現;
  5. vo層:視圖對象,是根據表抽象出來的業務對象;

 

 1)根據表設計vo層視圖對象

public class Student {

    private int stuId;

    private String stuName;

    private int stuAge;

    private String stuAddr;

    private int stuSex;

    public Student() {

    }

    public int getStuId() {
        return stuId;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getStuAge() {
        return stuAge;
    }

    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }

    public String getStuAddr() {
        return stuAddr;
    }

    public void setStuAddr(String stuAddr) {
        this.stuAddr = stuAddr;
    }

    public int getStuSex() {
        return stuSex;
    }

    public void setStuSex(int stuSex) {
        this.stuSex = stuSex;
    }


    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", stuAge=" + stuAge +
                ", stuAddr='" + stuAddr + '\'' +
                ", stuSex=" + stuSex +
                '}';
    }
}

2)編寫dbManager類,用來進行數據庫的連接和關閉

public class DbManager {

    public Connection conn = null;
    public Statement state = null;
    public ResultSet rs = null;

    public String driver = "com.mysql.jdbc.Driver";
    public String url = "jdbc:mysql://localhost:3308/demon";
    public String username = "root";
    public String password = "123456";

    public DbManager(){

    }

    public Connection getConnection(){
        try{
            Class.forName(driver);

            conn = DriverManager.getConnection(url,username,password);
            
            return conn;
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return conn;
    }


    public ResultSet queryExecute(String strSql){
        try{
            conn = this.getConnection();
            state = conn.createStatement();
            rs = state.executeQuery(strSql);
            return rs;
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rs;
    }

    public void closeDb() {
        try {
            if (rs != null) rs.close();
            if (state != null) state.close();
            if(conn != null) conn.close();
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

3)實現DAO層

由於在Service層調用了DAO,在DAO類上應加上Component註解

@Component
public class StudentDAO {

    public List<Student> queryAllOfStudent(){
        List<Student> studentList = null;
        try{
            String strSql = "select * from student";
            ResultSet rs = new DbManager().queryExecute(strSql);
            studentList = new ArrayList<Student>();
            while(rs.next()){
                Student student = new Student();
                student.setStuId(rs.getInt("stuId"));
                student.setStuName(rs.getString("stuName"));
                student.setStuAge(rs.getInt("stuAge"));
                student.setStuAddr(rs.getString("stuAddr"));
                student.setStuSex(rs.getInt("stuSex"));
                studentList.add(student);
            }
            return studentList;
        }catch (Exception ex){
            ex.printStackTrace();
        }
        return studentList;
    }
}

4)實現Service層

@Service
public class StudentServiceImpl implements StudentService {

    
   @Autowired
    public StudentDAO studentDAO;

    public List<Student> queryStudentService() throws Exception {
        return studentDAO.queryAllOfStudent();
    }
}

5)實現Controller層

這裏我們使用了註解配置了處理器,並且將創建service實例的工作交給Spring容器來處理;

@Controller
public class ShowStudentHandler {


    @Autowired
    public StudentService studentService;

    @RequestMapping(value = "/queryStudent")
    public ModelAndView queryStudent() throws Exception{

        List<Student> studentList =  studentService.queryStudentService();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("studentListKey",studentList);
        modelAndView.setViewName("studentslist");
        return modelAndView;
    }
}

6)實現View層,編寫jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table width="100%" align="center" border="1">
    <tr>
        <td>stuid</td>
        <td>stuname</td>
        <td>stuage</td>
        <td>stuaddr</td>
        <td>stusex</td>
    </tr>

    <c:forEach items="${studentListKey}" var="stus">
        <tr>
            <td>${stus.stuId}</td>
            <td>${stus.stuName}</td>
            <td>${stus.stuAge}</td>
            <td>${stus.stuAddr}</td>
            <td>${stus.stuSex}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

以上,就是實現具體業務邏輯的全部過程~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章