8.创建spring的配置文件 spring-service.xml【】
在这里由四个主要目的: ①链接dao层(目的是为了实现service层可以调用dao层);②扫描service下的包(目的是为了实现注解注入service层);③创建serviceImpl的私有属性的bean并对属性进行赋值(目的是为了让具体的实现类赋值给私有属性);④声明事务(增删改自动提交)
1.serviceImpl的私有属性有两种方式注入到spring-service容器中去 ①利用注解: @Service+@Autowired+@Qualifier(value = "bookMapper") ②利用注解:@Service+@Resource("bookMapper") ③手动创建: <bean class="com.Jsxs.service.BookServiceImpl" id="bookServiceImpl"> <property name="bookMapper" ref="bookMapper"/> </bean>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!-- 导入dao层的配置文件--> <import resource="classpath:spring-dao.xml"/> <!-- 1. 扫描service下的包--> <context:component-scan base-package="com.Jsxs.service"/> <!-- 2.将我们的所有业务类,注入到spring,可以通过配置,或则注解实现 --> <!-- <bean class="com.Jsxs.service.BookServiceImpl" id="bookServiceImpl">--> <!-- <property name="bookMapper" ref="bookMapper"/>--> <!-- </bean>--> <!-- 3.声明式事务 --> <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager"> <!-- 注入数据源--> <property name="dataSource" ref="dataSource"/> </bean> <!-- 4.aop 横切事务支持 --> </beans>
9.添加web框架并配置web.xml文件
```我们这里主要进行两步操作: ①进行创建视图解析器(视图解析器、启动级别、绑定控制层文件、映射);②我们进行编码处理`;③这里的文件路径指向的是总的``
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 配置DispatcherServlet 前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContoller.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 注册过滤器 --> <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
10.创建spring的配置文件 spring-mvc【】
这里主要由四部操作: ①创建注解驱动(目的是为了实现注解);②创建静态资源过滤;③扫描controller包(目的是为了实现注解);④创建视图解析器(添加前缀和后缀)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!--1.注解驱动--> <mvc:annotation-driven/> <!--2.静态资源过滤--> <mvc:default-servlet-handler/> <!-- 3.扫描包--> <context:component-scan base-package="com.Jsxs.controller"/> <!--4.视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
11.创建Spring的汇总文件 applicationController.xml
目的是为了实现: dao层和service层和controller层的汇总
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="spring-dao.xml"/> <import resource="spring-service.xml"/> <import resource="spring-mvc.xml"/> </beans>
(三)、Controller层实现
12.创建controller的实现类
控制类:①创建@Controller(目的是为了bean)②创建@RequestMapping("/book")目的是为了路径映射;③@Resource(目的是为了自动装配)
package com.Jsxs.controller; import com.Jsxs.pojo.Books; import com.Jsxs.service.BookService; import org.apache.ibatis.annotations.Param; 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.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.util.List; @Controller @RequestMapping("/book") public class BookController { // controller 掉 service @Resource private BookService bookService; // 查看所有的书籍 @GetMapping("/allBook") public String list(Model model){ List<Books> books = bookService.selectBook(); model.addAttribute("msg",books); return "allBook"; } // 跳转到添加书籍页面 @GetMapping("/addBook") public String add(){ return "addBook"; } // 开始添加的操作 @GetMapping("/add") public String addBook(Books books){ bookService.addBook(books); return "redirect:/book/allBook"; //重定向到我们到@RequestMapper("/allBook"); 我们这里重定向的是方法不是WEB-INF 所以能够重定向的到 } // 跳转到修改的页面 @GetMapping("/updateBook") public String update(int id,Model model){ //这里的目的是默认值 Books books = bookService.selectBookById(id); model.addAttribute("books",books); return "updateBook"; } // 开始修改的操作 @GetMapping("/update") public String updateBook(Books books){ int i = bookService.updateBook(books); return "redirect:/book/allBook"; } // 跳转到删除的页面 @GetMapping("/delete") public String delete(int id){ bookService.deleteBook(id); return "redirect:/book/allBook"; } }
13.查询全部书籍
①编写前端代码:写一个超链接的标签,跳转的路径就是先经过全部查询的java方法,然后就是方法映射的jsp页面:②编写后端代码:创建一个String的方法,返回的路径是allBook.jsp,并且进行储存查询到的list<Book>;
Index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> <style> h3{ width: 300px; height: 50px; margin: 100px auto; text-align: center; background: burlywood; } a{ color: #13ce60; text-decoration: none; } </style> </head> <body> <h3> <a href="${pageContext.request.contextPath}/book/allBook">跳转到展示全部信息的页面</a> </h3> </body> </html>
controller.java
package com.Jsxs.controller; import com.Jsxs.pojo.Books; import com.Jsxs.service.BookService; import org.apache.ibatis.annotations.Param; 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.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.util.List; @Controller @RequestMapping("/book") public class BookController { // controller 掉 service @Resource private BookService bookService; // 查看所有的书籍 @GetMapping("/allBook") public String list(Model model){ List<Books> books = bookService.selectBook(); model.addAttribute("msg",books); return "allBook"; } }
WEB-INF/jsp/allBook.jsp
利用EL表达式进行获取后端存放的值,然后利用js的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 rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"> <!-- 可选的 Bootstrap 主题文件(一般不用引入) --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css" integrity="sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ" crossorigin="anonymous"> <!-- 最新的 Bootstrap 核心 JavaScript 文件 --> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script> </head> <body> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <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> </tr> </thead> <tbody> <%-- 数据库从数据库中进行查询,从这个list中遍历出来 : foreach : item也可以直接写 ${msg} --%> <c:forEach var="book" items="${msg}"> <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>