前面,我们在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>
以上,就是实现具体业务逻辑的全部过程~~~