前面,我們在IDEA上把SpringMVC框架基本搭建完成,接下來,就要實現核心業務邏輯
我們的業務需求是從MySQL數據庫中取出數據,然後在 jsp 頁面上把數據顯示出來
在實現具體的業務邏輯時,把業務邏輯分爲DAO層、Service層、Controller層、View層
Controller層-->Service層-->DAO層
- Controller層:主要負責具體業務模塊流程的控制,會調用Service層的接口來控制業務邏輯;
- DAO層:主要是負責數據持久層的工作,用來對錶進行增刪改查的操作;
- Service層:主要負責業務邏輯設計,調用已定義的DAO層接口
- View層:主要負責前端 jsp 頁面的實現;
- 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>
以上,就是實現具體業務邏輯的全部過程~~~