- 通过前面的ssm整合,其实我们的dao层、service层已经搭建好了,所以现在要实现需求就差实现controller层和视图了
- 我们现在实现controller
0.分析
- 首先实现controller调用service获取全部数据的list数据
- 然后controller指定视图名称,并将list一并返回给dispatcherservlet,由dispatcherservlet将它传给视图解析器,视图解析器获取视图名称拼接视图正真的URL即可找到对应的视图
- 视图解析器将视图和数据结合/渲染数据,将渲染结果返回给dispatcherservlet
- 最后dispatcherservlet将渲染好的视图返回给用户
1.代码实现
1.controller
package com.thhh.controller;
import com.thhh.pojo.Books;
import com.thhh.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
@RequestMapping("book")
public class BookController {
//controller层调用service层
@Autowired
@Qualifier("BookServiceImpl") //配合@Autowired使用,用于指定一个id的bean来自动装配这个对象属性
BookService service;
@RequestMapping("/allBook")
public String queryBookList(Model model){
List<Books> bookList = service.queryBookList();
model.addAttribute("list",bookList);
return "allBook";
}
}
上面就写完了查询全部书籍的controller了,接下来就是写对应的视图用于展示数据了
2.视图
- 创建上面controller跳转的视图allBook.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>书籍列表</h3>
</body>
</html>
- 在首页写一个a标签跳转allBook.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/book/allBook">查询所有书籍</a>
</body>
</html>
- 测试一下能不能跳转
- 美化页面
首先美化一下首页<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> <style> h3{ width: 180px; height: 38px; margin: 100px auto;/*外边距上下100,左右自动*/ text-align: center;/*文字左右居中*/ line-height: 38px;/*文字上下居中,直接让字体高度 = 元素高度即可*/ background: cornflowerblue; border-radius: 5px;/*圆角边框*/ } a{ text-decoration: none;/*去掉下划线*/ color: black; font-size: 18px; } </style> </head> <body> <h3><a href="${pageContext.request.contextPath}/book/allBook">查询所有书籍</a></h3> </body> </html>
接下来美化数据展示页面,这里我们直接使用bootstrap来设置样式;要展示的数据后端已经通过model传输过来了,所以我们变量list集合,就是要JSTL标签c:foreach
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<%--bootstrap--%>
<%--直接在线引入css文件--%>
<link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container"><%--栅格系统--%>
<div class="row clearfix">
<div class="col-md-12 column"><%--将屏幕分为12份--%>
<div class="page-header">
<h1>
<small>书籍列表——显示所有书籍数据</small>
</h1>
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>书籍编号</th>
<th>书籍名称</th>
<th>书籍数量</th>
<th>书籍详情</th>
</tr>
</thead>
<tbody>
<c:forEach var="book" items="${list}">
<tr>
<td>${book.bookID}</td>
<td>${book.bookName}</td>
<td>${book.bookCounts}</td>
<td>${book.detail}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
- 数据展示
3.BUG
- 发布的项目没有依赖
- 自定装配失败/web.xml中spring配置文件绑定错误
- spring配置文件中有中文注释
将所有配置文件中的UTF-8改为UTF8,是所有的,包括mybatis核心配置文件