zoukankan      html  css  js  c++  java
  • SSM框架整合

    环境要求

    环境:

    • IDEA
    • MySQL 5.7.19
    • Tomcat 9
    • Maven 3.6

    要求:

    • 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识;

    项目结构图

    java目录

    • pojo
    • dao
    • service
    • controller

    resources目录

    • database.properties
    • mybatis-config.xml
    • spring-dao.xml
    • spring-service.xml
    • spring-mvc.xml
    • applicationContext.xml

    web目录

    • index.jsp
    • WEB-INF
      • jsp目录
      • web.xml

    数据库环境

    创建一个存放书籍数据的数据库表

    CREATE DATABASE `ssmbuild`;
    
    USE `ssmbuild`;
    
    DROP TABLE IF EXISTS `books`;
    
    CREATE TABLE `books` (
    `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
    `bookName` VARCHAR(100) NOT NULL COMMENT '书名',
    `bookCounts` INT(11) NOT NULL COMMENT '数量',
    `detail` VARCHAR(200) NOT NULL COMMENT '描述',
    KEY `bookID` (`bookID`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8
    
    INSERT  INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES 
    (1,'Java',1,'从入门到放弃'),
    (2,'MySQL',10,'从删库到跑路'),
    (3,'Linux',5,'从进门到进牢');
    

    基本环境搭建

    1、新建一Maven项目!ssmbuild , 添加web的支持

    2、导入相关的pom依赖!

    <dependencies>
        <!--Junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!-- 数据库连接池 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
    
        <!--Servlet - JSP -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    
        <!--Mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.2</version>
        </dependency>
    
        <!--Spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>
        <!--Aop-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.13</version>
        </dependency>
    </dependencies>
    

    3、Maven资源过滤设置

    <build>
       <resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>false</filtering>
           </resource>
           <resource>
               <directory>src/main/resources</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>false</filtering>
           </resource>
       </resources>
    </build>
    

    4、建立基本结构和配置框架!

    java目录 下建立四个包

    com.qiu.pojo
    com.qiu.dao
    com.qiu.service
    com.qiu.controller
    

    mybatis-config.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
           PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
           "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
    </configuration>
    

    applicationContext.xml

    <?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">
    
    </beans>
    

    Mybatis层编写

    1、数据库配置文件 database.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=123456
    

    2、IDEA关联数据库

    3、编写MyBatis的核心配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
            <!DOCTYPE configuration
                    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
                    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <settings>
            <!--开启Mybatis日志-->
            <setting name="logImpl" value="STDOUT_LOGGING"/>
        </settings>
        <typeAliases>
            <!--修改对应实体类包-->
            <package name="com.qiu.pojo"/>
        </typeAliases>
        <mappers>
            <mapper resource="com/qiu/dao/BookMapper.xml"/>
        </mappers>
    </configuration>
    

    4、编写数据库对应的实体类 com.qiu.pojo.Books

    使用 lombok 插件!

    package com.qiu.pojo;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    public class Books {
        private int bookID;
        private String bookName;
        private int bookCounts;
        private String detail;
    }
    

    5、编写Dao层的 Mapper 接口!

    package com.qiu.dao;
    import com.qiu.pojo.Books;
    import org.apache.ibatis.annotations.Param;
    import java.util.List;
    public interface BookMapper {
        //增加一本图书
        int addBook(Books books);
        //删除一本图书
        int deleteBook(@Param("bookId") int id);
        //更新一本图书
        int updateBook(Books books);
        //查询一本图书
        Books queryBookById(@Param("bookId") int id);
        //查询全部的图书
        List<Books> queryAllBook();
        //根据书名查询图书
        List<Books> queryBookByName(@Param("bookName") String bookName);
    }
    

    6、编写接口对应的 BookMapper.xml 文件。需要导入 MyBatis 的包;

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.qiu.dao.BookMapper">
        <insert id="addBook" parameterType="Books">
            insert into ssmbuild.books (bookName, bookCounts, detail)
            values (#{bookName}, #{bookCounts}, #{detail});
        </insert>
    
        <delete id="deleteBook" parameterType="int">
            delete from ssmbuild.books where bookID = #{bookId};
        </delete>
    
        <update id="updateBook" parameterType="Books">
            update ssmbuild.books
            set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail}
            where bookID = #{bookID};
        </update>
    
        <select id="queryBookById" parameterType="_int" resultType="Books">
            select * from ssmbuild.books where bookID = #{bookId};
        </select>
    
        <select id="queryAllBook" resultType="Books">
            select * from ssmbuild.books;
        </select>
    
        <select id="queryBookByName" parameterType="java.lang.String" resultType="Books">
            select * from ssmbuild.books where bookName like concat('%',#{bookName},'%')
        </select>
    </mapper>
    

    7、编写 Service 层的接口和实现类

    接口:

    package com.qiu.service;
    import com.qiu.pojo.Books;
    import java.util.List;
    public interface BookService {
        //增加一本图书
        int addBook(Books books);
        //删除一本图书
        int deleteBook(int id);
        //更新一本图书
        int updateBook(Books books);
        //查询一本图书
        Books queryBookById(int id);
        //查询全部的图书
        List<Books> queryAllBook();
        //根据书名查询图书
        List<Books> queryBookByName(String bookName);
    }
    

    实现类:

    package com.qiu.service;
    import com.qiu.dao.BookMapper;
    import com.qiu.pojo.Books;
    import java.util.List;
    public class BookServiceImpl implements BookService {
        //调用dao层的操作,设置一个set接口,方便Spring管理
        private BookMapper bookMapper;
        public void setBookMapper(BookMapper bookMapper) {
            this.bookMapper = bookMapper;
        }
    
        public int addBook(Books books) {
            return bookMapper.addBook(books);
        }
    
        public int deleteBook(int id) {
            return bookMapper.deleteBook(id);
        }
    
        public int updateBook(Books books) {
            return bookMapper.updateBook(books);
        }
    
        public Books queryBookById(int id) {
            return bookMapper.queryBookById(id);
        }
    
        public List<Books> queryAllBook() {
            return bookMapper.queryAllBook();
        }
    
        public List<Books> queryBookByName(String bookName) {
            return bookMapper.queryBookByName(bookName);
        }
    }
    

    底层需求操作编写完毕!

    Spring层编写

    1、配置Spring整合MyBatis,我们这里数据源使用c3p0连接池;

    2、我们去编写Spring整合Mybatis的相关的配置文件;【spring-dao.xml

    <?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 https://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--1.关联数据库配置文件-->
        <context:property-placeholder location="classpath:database.properties"/>
        <!--2.连接池-->
        <!--
            dbcp:半自动化操作,不能自动连接
            c3p0:自动操作(自动化的加载配置文件,并且可以自动设置到对象中!)
            druid
            hikari
        -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driver}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <!--c3p连接池的私有属性-->
            <property name="maxPoolSize" value="30"/>
            <property name="minPoolSize" value="10"/>
            <!--关闭连接后不自动commit-->
            <property name="autoCommitOnClose" value="false"/>
            <!--获取连接超时时间-->
            <property name="checkoutTimeout" value="10000"/>
            <!--当获取连接失败重试次数-->
            <property name="acquireRetryAttempts" value="2"/>
        </bean>
        <!--3.sqlSessionFactory-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!--绑定Mybatis的配置文件-->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
        </bean>
        <!--4.配置dao接口扫描包,动态的实现Dao接口可以注入到Spring容器中-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!--注入 sqlSessionFactory-->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
            <!--要扫描的dao包-->
            <property name="basePackage" value="com.qiu.dao"/>
        </bean>
    </beans>
    

    3、Spring整合service层(配置文件:spring-service.xml

    <?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:tx="http://www.springframework.org/schema/tx"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context
           https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop
            https://www.springframework.org/schema/aop/spring-aop.xsd">
    
        <!--1.自动扫描service 下的包-->
        <context:component-scan base-package="com.qiu.service"/>
    
        <!--2.将我们的所有业务类,注入到Spring,可以通过配置,或者注解实现-->
        <bean id="bookServiceImpl" class="com.qiu.service.BookServiceImpl">
            <property name="bookMapper" ref="bookMapper"/>
        </bean>
    
        <!--3.声明式事务配置-->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!--注入数据源-->
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <!--4.aop事务支持-->
        <!--结合AOP实现事务的织入-->
        <!--配置事务通知:-->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <!--给那些方法配置事务-->
            <!--配置事务的传播特性:new propagation= -->
            <tx:attributes>
                <!--一般只写 * 的即可-->
                <tx:method name="*" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>
        <!--配置事务切入-->
        <aop:config>
            <!--切入点根据自己需要修改-->
            <aop:pointcut id="txPointCut" expression="execution(* com.qiu.service.*.*(..))"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
        </aop:config>
    </beans>
    

    Spring层搞定!

    SpringMVC层编写

    1、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:applicationContext.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>encodingFilter</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>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!--Session-->
        <session-config>
            <!--15分钟过期-->
            <session-timeout>15</session-timeout>
        </session-config>
    </web-app>
    

    2、spring-mvc.xml

    <?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:mvc="http://www.springframework.org/schema/mvc"
           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/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/context
           https://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--1.注解驱动-->
        <mvc:annotation-driven/>
        <!--2.静态资源过滤-->
        <mvc:default-servlet-handler/>
        <!--3.扫描包:controller-->
        <context:component-scan base-package="com.qiu.controller"/>
        <!--4.视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    </beans>
    

    3、Spring配置整合文件,applicationContext.xml

    <?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="classpath:spring-dao.xml"/>
        <import resource="classpath:spring-service.xml"/>
        <import resource="classpath:spring-mvc.xml"/>
    </beans>
    

    配置文件,暂时结束!

    Controller 和 视图层

    1、BookController 类编写 ,方法一:查询全部书籍

    import com.qiu.pojo.Books;
    import com.qiu.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")
        private BookService bookService;
    
        //查询全部的书籍,并且返回到一个书籍展示页面
        @RequestMapping("/allBook")
        public String list(Model model){
            List<Books> books = bookService.queryAllBook();
            model.addAttribute("list",books);
            return "allBook";
        }
    }
    

    2、编写首页 index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>主页</title>
        <style>
          a{
            text-decoration: none;
            color:black;
            font-size: 18px;
          }
          h3{
            180px;
            height: 38px;
            margin: 100px auto;
            text-align: center;
            line-height: 38px;
            background: deepskyblue;
            border-radius:5px;
          }
        </style>
      </head>
      <body>
        <h3>
          <a href="${pageContext.request.contextPath}/book/allBook">进入书籍展示页面</a>
        </h3>
      </body>
    </html>
    

    3、书籍列表页面 allBook.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>书籍展示</title>
        <%--BootStrap 美化界面--%>
        <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">
                        <div class="page-header">
                            <h1>
                                <small>书籍列表 ———— 显示所有书籍</small>
                            </h1>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-8 column">
                            <%--查询书籍--%>
                            <form action="${pageContext.request.contextPath}/book/queryBook" method="post" style="float:right" class="form-inline">
                                <span style="color:red;font-weight: bolder">${error}</span>
                                <input type="text" name="queryBookName" class="form-control" placeholder="请输入要查询的书籍名称"/>
                                <input type="submit" value="查询" class="btn btn-primary"/>
                            </form>
                        </div>
                        <div class="col-md-4 column">
                            <%--toAddBook--%>
                            <a class="btn btn-primary" style="float:right" href="${pageContext.request.contextPath}/book/toAddBook" >新增书籍</a>
                        </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>
                                    <th>操作</th>
                                </tr>
                            </thead>
                            <%--书籍从数据库中查询出来,从这个list中遍历出来:foreach--%>
                            <tbody>
                                <c:forEach var="book" items="${list}">
                                    <tr>
                                        <td>${book.bookID}</td>
                                        <td>${book.bookName}</td>
                                        <td>${book.bookCounts}</td>
                                        <td>${book.detail}</td>
                                        <td>
                                            <a href="${pageContext.request.contextPath}/book/toUpdateBook/${book.bookID}">修改</a>
                                            &nbsp; | &nbsp;
                                            <a href="${pageContext.request.contextPath}/book/deleteBook/${book.bookID}">删除</a>
                                        </td>
                                    </tr>
                                </c:forEach>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </body>
    </html>
    

    4、BookController 类编写 , 方法二:添加书籍

    //跳转到增加书籍页面
    @RequestMapping("/toAddBook")
    public String toAddPaper(){
        return "addBook";
    }
    
    //添加书籍的请求
    @RequestMapping("/addBook")
    public String addBook(Books books){
        System.out.println("addBook=>" + books);
        bookService.addBook(books);
        return "redirect:/book/allBook";    //重定向到我们的allBook
    }
    

    5、添加书籍页面:addBook.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>新增图书</title>
        <%--BootStrap 美化界面--%>
        <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">
                <div class="page-header">
                    <h1>
                        <small>新增书籍</small>
                    </h1>
                </div>
            </div>
        </div>
        <form action="${pageContext.request.contextPath}/book/addBook" method="post">
            <div class="form-group">
                <label>书籍名称:</label>
                <input type="text" name="bookName" class="form-control" required>
            </div>
            <div class="form-group">
                <label>书籍数量:</label>
                <input type="text" name="bookCounts" class="form-control" required>
            </div>
            <div class="form-group">
                <label>书籍描述:</label>
                <input type="text" name="detail" class="form-control" required>
            </div>
            <div class="form-group">
                <input type="submit" class="form-control" value="添加">
            </div>
        </form>
    </div>
    </body>
    </html>
    

    6、BookController 类编写 , 方法三:修改书籍

    //跳转到修改书籍页面
    @RequestMapping("/toUpdateBook/{bookId}")
    public String toUpdatePaper(@PathVariable ("bookId") int id,Model model){
        Books book = bookService.queryBookById(id);
        model.addAttribute("QBook",book);
        return "updateBook";
    }
    
    //修改书籍的请求
    @RequestMapping("/updateBook")
    public String updateBook(Books books){
        System.out.println("updateBook=>" + books);
        bookService.updateBook(books);
        return "redirect:/book/allBook";
    }
    

    7、修改书籍页面 updateBook.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>修改图书</title>
        <%--BootStrap 美化界面--%>
        <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">
                <div class="page-header">
                    <h1>
                        <small>修改书籍</small>
                    </h1>
                </div>
            </div>
        </div>
        <form action="${pageContext.request.contextPath}/book/updateBook" method="post">
            <input type="hidden" name="bookID" value="${QBook.bookID}">
            <div class="form-group">
                <label>书籍名称:</label>
                <input type="text" name="bookName" class="form-control" value="${QBook.bookName}" required>
            </div>
            <div class="form-group">
                <label>书籍数量:</label>
                <input type="text" name="bookCounts" class="form-control" value="${QBook.bookCounts}"  required>
            </div>
            <div class="form-group">
                <label>书籍描述:</label>
                <input type="text" name="detail" class="form-control" value="${QBook.detail}" required>
            </div>
            <div class="form-group">
                <input type="submit" class="form-control" value="修改">
            </div>
        </form>
    </div>
    </body>
    </html>
    

    8、BookController 类编写 , 方法四:删除书籍

    //删除书籍
    @RequestMapping("/deleteBook/{bookId}")
    public String deleteBook(@PathVariable ("bookId") int id){
        bookService.deleteBook(id);
        return "redirect:/book/allBook";
    }
    

    9、BookController 类编写 , 方法五:根据书名模糊查询书籍

    //查询书籍
    @RequestMapping("/queryBook")
    public String queryBook(String queryBookName,Model model){
        List<Books> books = bookService.queryBookByName(queryBookName);
        if(books.size()==0){
            books=bookService.queryAllBook();
            model.addAttribute("error","未查到");
        }
        model.addAttribute("list",books);
        return "allBook";
    }
    

    配置Tomcat,进行运行!

    到目前为止,这个SSM项目整合已经完全的OK了,可以直接运行进行测试!

    image-20200619135551072

    本篇总结参考 B站狂神说Javahttps://space.bilibili.com/95256449

  • 相关阅读:
    shell进行mysql统计
    java I/O总结
    Hbase源码分析:Hbase UI中Requests Per Second的具体含义
    ASP.NET Session State Overview
    What is an ISAPI Extension?
    innerxml and outerxml
    postman
    FileZilla文件下载的目录
    how to use webpart container in kentico
    Consider using EXISTS instead of IN
  • 原文地址:https://www.cnblogs.com/qiu-m/p/13178840.html
Copyright © 2011-2022 走看看