码迷,mamicode.com
首页 > 其他好文 > 详细

SSM

时间:2021-02-22 12:00:55      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:api   sch   items   value   视图   tar   实现   text   resolve   

SSM整合

 

1、数据库用表:

 

CREATE DATABASE ssmbuild;
USE ssmbuild;
CREATE TABLE `books`(
`bookID` INT NOT NULL AUTO_INCREMENT COMMENT ‘书id‘,
`bookName` VARCHAR(100) NOT NULL COMMENT ‘书名‘,
`bookCounts` INT 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,‘从进门到进牢‘)

 

2、新建一个maven项目,添加web支持

 

3、添加pom依赖

 

<dependencies>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.11</version>
           <scope>test</scope>
       </dependency>
       <!--servlet依赖-->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>4.0.1</version>
       </dependency>
       <!--jsp依赖-->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>jsp-api</artifactId>
           <version>2.0</version>
       </dependency>
       <!--mysql-jdbc依赖-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.48</version>
       </dependency>
       <!--JSTL表达式依赖-->
       <dependency>
           <groupId>javax.servlet.jsp.jstl</groupId>
           <artifactId>jstl-api</artifactId>
           <version>1.2</version>
       </dependency>
       <!--standard标签库依赖-->
       <dependency>
           <groupId>taglibs</groupId>
           <artifactId>standard</artifactId>
           <version>1.1.2</version>
       </dependency>
       <!--mybatis依赖-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.4.6</version>
       </dependency>
       <!--自动生成set/get等方法的注解-->
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <version>1.18.12</version>
       </dependency>
       <!--spring依赖-->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc</artifactId>
           <version>5.2.12.RELEASE</version>
       </dependency>
       <!--springAOP的包-->
       <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjweaver</artifactId>
           <version>1.9.4</version>
       </dependency>
       <!--ssm整合jdbc依赖-->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>5.2.12.RELEASE</version>
       </dependency>
       <!--mybatis整合依赖-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis-spring</artifactId>
           <version>2.0.5</version>
       </dependency>
       <!--JSON转换-->
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-databind</artifactId>
           <version>2.10.2</version>
       </dependency>
       <!--c3po数据库连接池-->
       <dependency>
           <groupId>com.mchange</groupId>
           <artifactId>c3p0</artifactId>
           <version>0.9.5.2</version>
       </dependency>
?
       <!--阿里巴巴的JSON格式转换-->
       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>fastjson</artifactId>
           <version>1.2.75</version>
       </dependency>
   </dependencies>

 

4、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>

 

5、使用idea测试连接数据库

 

6、建立基本结构包

  1. com/zhixi/pojo -->编写跟数据库对应的实体类

  2. com/zhixi/dao -->数据库持久化层,数据访问对象。他只负责对数据进行访问

  3. com/zhixi/service -->业务逻辑都会放在这里处理,比如用户的增删改查

  4. *com/zhixi/controller -->负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面*

============================================================================================

7、pojo实体类

 

package com.monster.pojo;
?
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
?
/**
* @author monster
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Books {
   private Integer bookID;
   private String bookName;
   private Integer bookCounts;
   private String detail;
}

 

8、dao层

 

package com.monster.dao;
?
import com.monster.pojo.Books;
import org.apache.ibatis.annotations.Param;
?
import java.util.List;
?
/**
* @author monster
*/
public interface BooksMapper {
   // 增加一本书
   int addBook(Books book);
?
   // 删除一本书
   int delBook(@Param("bookId") int id);
?
   // 查询一本书
   Books queryBookById(int id);
?
   // 更新一本书
   int updateBook(Books book);
?
   // 查询所有的书
   List<Books> queryBooks();
?
   // 根据书名查询书籍
   Books queryBookByName(@Param("bookName") String bookName);
}

 

9、service层:与dao层业务方法保持一致

  service层接口:

 

package com.monster.service;
?
import com.monster.pojo.Books;
import org.apache.ibatis.annotations.Param;
?
import java.util.List;
?
/**
* @author monster
*/
public interface BooksService {
   // 增加一本书
   int addBook(Books book);
?
   // 删除一本书
   int delBook(int id);
?
   // 查询一本书
   Books queryBookById(int id);
?
   // 更新一本书
   int updateBook(Books book);
?
   // 查询所有的书
   List<Books> queryBooks();
?
   // 根据书名查询书籍
   Books queryBookByName(String bookName);
}

 

  service层接口实现类:service调dao层(含有dao层接口对象的引用)

 

package com.monster.service;
?
import com.monster.dao.BooksMapper;
import com.monster.pojo.Books;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
?
import javax.annotation.Resource;
import java.util.List;
?
@Service
public class BooksServiceImpl implements BooksService {
   // 业务层service调dao层
   private BooksMapper booksMapper;
?
   public void setBooksMapper(BooksMapper booksMapper) {
       this.booksMapper = booksMapper;
  }
?
   public int addBook(Books book) {
       return booksMapper.addBook(book);
  }
?
   public int delBook(int id) {
       return booksMapper.delBook(id);
  }
?
   public Books queryBookById(int id) {
       return booksMapper.queryBookById(id);
  }
?
   public int updateBook(Books book) {
       return booksMapper.updateBook(book);
  }
?
   public List<Books> queryBooks() {
       return booksMapper.queryBooks();
  }
?
   public Books queryBookByName(String bookName) {
       return booksMapper.queryBookByName(bookName);
  }
}

 

Controller层:

 

package com.monster.controller;
?
import com.monster.pojo.Books;
import com.monster.service.BooksService;
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 org.springframework.web.bind.annotation.RequestParam;
?
import java.util.ArrayList;
import java.util.List;
?
/**
* @author monster
*/
@Controller
@RequestMapping("/books")
public class BookController {
?
   // controller调dao层
   @Autowired
   @Qualifier("booksService")
   private BooksService booksService;
?
   // 1、查询全部的书籍,并跳转到书籍展示页面
   @RequestMapping("/allBook")
   public String queryBooks(Model model) {
       List<Books> list = booksService.queryBooks();
?
       model.addAttribute("list", list);
       return "queryAllBookPage";
  }
?
   // 2、添加书籍页面
   @RequestMapping("/toBookPage")
   public String toBookPage() {
       return "addBookPage";
  }
?
   // 2.1、添加书籍
   @RequestMapping("/addBook")
   public String addBook(Books books) {
       // 添加书籍
       booksService.addBook(books);
       // 跳转到查询全部书籍的页面【使用重定向】
       return "redirect:/books/allBook";
  }
?
   // 3、修改书籍页面
   @RequestMapping("/updateBookPage")
   // 这个id是从jsp页面拿到的,可以知道是对哪个用户进行修改数据
   public String updateBook(int id, Model model) {
       Books books = booksService.queryBookById(id);
       model.addAttribute("QUpdate", books);
       return "updateBookPage";
  }
?
   // 3.1、修改书籍
   @RequestMapping("/toUpdate")
   public String toUpdate(Books books) {
       booksService.updateBook(books);
       // 返回书籍首页
       return "redirect:/books/allBook";
  }
?
   // 4、删除书籍,删除完成后跳转到书籍首页
   @RequestMapping("/delBook")
   public String delBook(int id) {
       booksService.delBook(id);
       return "redirect:/books/allBook";
  }
?
?
   // 5、根据id查找书籍
   @RequestMapping("/queryById")
   // RequestParam是为了设置前端过来的请求与参数名不一致的情况
   public String queryBookById(@RequestParam("bookById") int id, Model model) {
       List<Books> list = new ArrayList<Books>();
       // 根据id查询
       Books books = booksService.queryBookById(id);
       list.add(books);
?
       if (books == null) {// 没有查询到书籍,就回到书籍首页并显示错误信息
           list = booksService.queryBooks();
           model.addAttribute("errorById", "没有查询到书籍!");
      }
?
       model.addAttribute("list", list);
       return "queryAllBookPage";
  }
?
   // 6、根据书名查找书籍
   @RequestMapping("/queryByName")
   public String queryBookByName(@RequestParam("bookName") String bookName, Model model) {
       List<Books> list = new ArrayList<Books>();
       Books books = booksService.queryBookByName(bookName);
       list.add(books);
?
       if (books == null) { // 没有查询到书籍,就回到书籍首页并显示错误信息
           list = booksService.queryBooks();
           model.addAttribute("errorByName", "没有查询到书籍!");
      }
?
       model.addAttribute("list", list);
       return "queryAllBookPage";
  }
}

 

10、mybatis-config.xml :mybatis配置文件

  因为是整合项目,都交给spring做了,所以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>
       <setting name="logImpl" value="STDOUT_LOGGING"/>
   </settings>
?
   <!--设置实体类别名-->
   <typeAliases>
       <package name="com.zhixi.pojo"/>
   </typeAliases>
</configuration>

 

11、resources/mapper/BooksMapper.xml :dao层的映射文件-->做mybatis的CRUD

  dao层接口的映射文件,主要是做CRUD操作

<?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.zhixi.dao.BooksMapper">
?
   <!--添加书籍-->
   <insert id="addBook" parameterType="books">
      insert into ssmbuild.books (bookName, bookCounts, detail)
      values (#{bookName}, #{bookCounts}, #{detail})
   </insert>
?
   <!--根据id删除书籍-->
   <delete id="delBook" 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}
          /*这里的bookID需要指定,是因为要与修改的jsp给id起的name保持一致*/
      where bookID = #{bookID}
   </update>
?
   <!--查询所有书籍-->
   <select id="queryBooks" resultType="books">
      select *
      from ssmbuild.books;
   </select>
?
   <!--根据id查询书籍-->
   <select id="queryBookById" resultType="books" parameterType="int">
      select *
      from ssmbuild.books
      where bookID = #{bookById};
   </select>
?
   <!--根据名字查询书籍-->
   <select id="queryBookByName" parameterType="java.lang.String" resultType="books">
      select * from ssmbuild.books where bookName = #{bookName}
   </select>
</mapper>

 

12、spring-dao.xml:主要跟数据连接打交道

  jdbc.properties:数据连接池的基本配置文件:

    需要注意的是如果是mysql8以上的版本需要在后面加上时区serverTimezone=UTC

    因为中国时区比美国早八个小时,所以我们要在mysql中进行设置时区(防止以后的各种bug)

    具体操作可以看我的这篇博客:https://www.cnblogs.com/zhangzhixi/p/14286664.html

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&amp;useUnicode=true&;characterEncoding=UTF-8&;serverTimezone=UTC
jdbc.username=root
jdbc.password=zhixi158

 

<?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:jdbc.properties"/>
?
   <!--2、导入c3p0数据库连接池-->
   <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}"/>
   </bean>
   
   <!--spring提供的数据连接池-->
   <!--   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           <property name="driverClassName" value="${jdbc.driver}"/>
           <property name="url" value="${jdbc.url}"/>
           <property name="username" value="${jdbc.username}"/>
           <property name="password" value="${jdbc.password}"/>
       </bean>-->
?
   <!--3、sqlSessionFactor-->
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource"/>
       <!--4、绑定mybatis配置文件-->
       <property name="configLocation" value="classpath:mybatis-config.xml"/>
       <!--mapper映射器,也可以在mybatis中配置-->
       <property name="mapperLocations" value="classpath:mapper/BooksMapper.xml"/>
   </bean>
?
   <!--5、配置dao层接口扫描包,动态的实现了Dao层接口可以注入到Spring容器中!-->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <!--注入SQLSessionFactory-->
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
       <!--要扫描的dao包-->
       <property name="basePackage" value="com.zhixi.dao"/>
   </bean>
</beans>

 

13、spring-service.xml:做一些事务以及aop的植入

 

<?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/aop
       https://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
">
?
   <!--1、统一管理bean-->
   <context:component-scan base-package="com.zhixi.service"/>
?
   <!--2、将所有业务类,注入到bean-->
   <bean id="booksService" class="com.zhixi.service.BooksServiceImpl">
       <property name="booksMapper" ref="booksMapper"/>
   </bean>
?
   <!--3、声明式事务配置:开启事务-->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource"/>
   </bean>
?
   <!--4、aop事务支持-->
   <tx:advice id="txAdvice" transaction-manager="transactionManager">
       <tx:attributes>
           <tx:method name="*" propagation="REQUIRED"/>
       </tx:attributes>
   </tx:advice>
?
   <!--配置事务切入-->
   <aop:config>
       <!--
           配置切入点表达式:指定哪些包中类, 要使用事务
           id:切入点表达式的名称,唯一值
           expression :切入点表达式, 指定哪些类要使用事务, aspectj会创建代理对象
       -->
       <aop:pointcut id="exPoint" expression="execution(* com.zhixi.dao.*.*(..))"/>
       <!--配置增强类-->
       <aop:advisor advice-ref="txAdvice" pointcut-ref="exPoint"/>
   </aop:config>
?
</beans>

 

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

 

15、applicationContext.xml:spring总的配置文件,为了方便管理所有的spring文件

 

<?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:aop="http://www.springframework.org/schema/aop"
?
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.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">
?
   <!--注解的支持-->
   <context:annotation-config/>
   <import resource="classpath:spring-dao.xml"/>
   <import resource="classpath:spring-service.xml"/>
   <import resource="classpath:spring-mvc.xml"/>
</beans>

 

16、web.xml:主要是关联spring配置文件以及解决一些乱码跟过滤器

 

<?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">
?
<!--   <error-page>
       <error-code>500</error-code>
       <location>/WEB-INF/error/500.jpg</location>
   </error-page>-->
?
   <!--1、配置spring提供的servlet-->
   <servlet>
       <servlet-name>springmvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <!--2、关联配置文件-->
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:applicationContext.xml</param-value>
       </init-param>
       <!--3、设置启动级别-->
       <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
       <servlet-name>springmvc</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>
   
   <!--4、乱码过滤-->
   <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>
</web-app>

 

17、JSP页面

index.jsp:网站首页-->跳转到书籍展示页面

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>首页</title>
</head>
<body>
<div align="center">
   <a  href="${pageContext.request.contextPath}/books/allBook">跳转到书籍展示页面</a>
</div>
</body>
</html>

 

jsp/queryAllBookPage.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>
</head>
<body>
<center><h1>欢迎来到书籍展示页面</h1></center>
?
<div style="text-align: center">
?
   <div>
      <%--跳转到添加书籍的页面--%>
       <a href="${pageContext.request.contextPath}/books/toBookPage">添加书籍</a>
       &nbsp;&nbsp;&nbsp;
       <a href="${pageContext.request.contextPath}/books/allBook">查询全部书籍</a>
   </div>
?
   <div>
      <%--根据id查询书籍--%>
       <form method="post" action="${pageContext.request.contextPath}/books/queryById">
           <input type="text" name="bookById" placeholder="输入id查询书籍">
           <input type="submit" value="查询"/><span style="color: #ff6659">${errorById}</span>
       </form>
   </div>
?
   <div>
      <%--根据书名查询书籍--%>
       <form method="post" action="${pageContext.request.contextPath}/books/queryByName">
           <input type="text" name="bookName" placeholder="输入书名查询书籍">
           <input type="submit" value="查询"><span style="color: red">${errorByName}</span>
       </form>
   </div>
?
   <table border="1" align="center" style="text-align: center">
       <tr>
           <th>书籍编号</th>
           <th>书籍名称</th>
           <th>书籍数量</th>
           <th>书籍详情</th>
           <th>操作</th>
       </tr>
?
       <c:forEach var="books" items="${list}">
           <tr>
               <td>${books.bookID}</td>
               <td>${books.bookName}</td>
               <td>${books.bookCounts}</td>
               <td>${books.detail}</td>
               <td>
                   <a href="${pageContext.request.contextPath}/books/updateBookPage?id=${books.bookID}">修改</a>
                   &nbsp; | &nbsp;
                   <a href="${pageContext.request.contextPath}/books/delBook?id=${books.bookID}">删除</a>
               </td>
           </tr>
       </c:forEach>
   </table>
?
</div>
?
?
</body>
</html>

 

jsp/addBookPage.jsp:添加书籍页面

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>添加书籍页面</title>
</head>
<body>
<form style="text-align: center" action="${pageContext.request.contextPath}/books/addBook" method="post">
   <div>书籍名称:<input type="text" name="bookName" required/></div>
   <div>书籍数量:<input type="text" name="bookCounts" required/></div>
   <div>书籍描述:<input type="text" name="detail" required/></div>
   <div><input type="submit" value="提交"></div>
</form>
</body>
</html>

 

jsp/updateBookPage.jsp:修改书籍页面

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>修改书籍页面</title>
</head>
<body>
<form style="text-align: center" action="${pageContext.request.contextPath}/books/toUpdate" method="post">
  <%--
       出现的问题:我们提交了修改的SQL请求,但是修改失败,初次考虑,是事务问题,配置完毕事务,依旧失败!
       看一下SQL语句,能否执行成功: SQL执行失败,修改未完成
       前端传递隐藏域
   --%>
   <input type="hidden" name="bookID" value="${QUpdate.bookID}">
?
   <div>书籍名称:<input type="text" name="bookName" value="${QUpdate.bookName}" required/></div>
   <div>书籍数量:<input type="text" name="bookCounts" value="${QUpdate.bookCounts}" required/></div>
   <div>书籍描述:<input type="text" name="detail" value="${QUpdate.detail}" required/></div>
   <div><input type="submit" value="修改"/></div>
</form>
</body>
</html>

 

至此SSM框架整合基本的所有步骤已经完成!

SSM

标签:api   sch   items   value   视图   tar   实现   text   resolve   

原文地址:https://www.cnblogs.com/JMonster/p/14422701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!