SSM的环境配置

环境要求

环境:
  • IDEA
  • MySQL5.5
  • Tomcat 8
  • Maven 3.6
要求:
  • 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识;

 数据库环境

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

基本环境搭建

  • 新建一Maven项目!,project目录上右键 -> Add Frameworks Support -> Web Application

导入相关的pom依赖!(当前项目使用)

  1. <dependencies>
  2. <!--Junit-->
  3. <dependency>
  4. <groupId>junit</groupId>
  5. <artifactId>junit</artifactId>
  6. <version>4.12</version>
  7. </dependency>
  8. <dependency>
  9. <groupId>mysql</groupId>
  10. <artifactId>mysql-connector-java</artifactId>
  11. <version>5.1.47</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>com.mchange</groupId>
  15. <artifactId>c3p0</artifactId>
  16. <version>0.9.5.2</version>
  17. </dependency>
  18. <!--Servlet - JSP -->
  19. <dependency>
  20. <groupId>javax.servlet</groupId>
  21. <artifactId>servlet-api</artifactId>
  22. <version>2.5</version>
  23. </dependency>
  24. <dependency>
  25. <groupId>javax.servlet.jsp</groupId>
  26. <artifactId>jsp-api</artifactId>
  27. <version>2.2</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>javax.servlet</groupId>
  31. <artifactId>jstl</artifactId>
  32. <version>1.2</version>
  33. </dependency>
  34. <!--Mybatis-->
  35. <dependency>
  36. <groupId>org.mybatis</groupId>
  37. <artifactId>mybatis</artifactId>
  38. <version>3.5.2</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.mybatis</groupId>
  42. <artifactId>mybatis-spring</artifactId>
  43. <version>2.0.2</version>
  44. </dependency>
  45. <!--Spring-->
  46. <dependency>
  47. <groupId>org.springframework</groupId>
  48. <artifactId>spring-webmvc</artifactId>
  49. <version>5.1.9.RELEASE</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.springframework</groupId>
  53. <artifactId>spring-jdbc</artifactId>
  54. <version>5.1.9.RELEASE</version>
  55. </dependency>
  56. <dependency>
  57. <groupId>org.projectlombok</groupId>
  58. <artifactId>lombok</artifactId>
  59. <version>RELEASE</version>
  60. <scope>compile</scope>
  61. </dependency>
  62. <dependency>
  63. <groupId>org.aspectj</groupId>
  64. <artifactId>aspectjweaver</artifactId>
  65. <version>1.9.4</version>
  66. </dependency>
  67. <dependency>
  68. <groupId>log4j</groupId>
  69. <artifactId>log4j</artifactId>
  70. <version>1.2.17</version>
  71. </dependency>
  72. </dependencies>

导入相关的pom约束其二(黑马总结的比较规范):

  1. <properties>
  2. <spring.version>5.0.2.RELEASE</spring.version>
  3. <slf4j.version>1.6.6</slf4j.version>
  4. <log4j.version>1.2.12</log4j.version>
  5. <oracle.version>11.2.0.1.0</oracle.version>
  6. <mybatis.version>3.4.5</mybatis.version>
  7. <spring.security.version>5.0.1.RELEASE</spring.security.version>
  8. </properties>
  9. <dependencies> <!-- spring -->
  10. <dependency>
  11. <groupId>org.aspectj</groupId>
  12. <artifactId>aspectjweaver</artifactId>
  13. <version>1.6.8</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.springframework</groupId>
  17. <artifactId>spring-aop</artifactId>
  18. <version>${spring.version}</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.springframework</groupId>
  22. <artifactId>spring-context</artifactId>
  23. <version>${spring.version}</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework</groupId>
  27. <artifactId>spring-context-support</artifactId>
  28. <version>${spring.version}</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework</groupId>
  32. <artifactId>spring-web</artifactId>
  33. <version>${spring.version}</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework</groupId>
  37. <artifactId>spring-orm</artifactId>
  38. <version>${spring.version}</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.springframework</groupId>
  42. <artifactId>spring-beans</artifactId>
  43. <version>${spring.version}</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.springframework</groupId>
  47. <artifactId>spring-core</artifactId>
  48. <version>${spring.version}</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework</groupId>
  52. <artifactId>spring-test</artifactId>
  53. <version>${spring.version}</version>
  54. </dependency>
  55. <dependency>
  56. <groupId>org.springframework</groupId>
  57. <artifactId>spring-webmvc</artifactId>
  58. <version>${spring.version}</version>
  59. </dependency>
  60. <dependency>
  61. <groupId>org.springframework</groupId>
  62. <artifactId>spring-tx</artifactId>
  63. <version>${spring.version}</version>
  64. </dependency>
  65. <dependency>
  66. <groupId>junit</groupId>
  67. <artifactId>junit</artifactId>
  68. <version>4.12</version>
  69. <scope>test</scope>
  70. </dependency>
  71. <dependency>
  72. <groupId>javax.servlet</groupId>
  73. <artifactId>javax.servlet-api</artifactId>
  74. <version>3.1.0</version>
  75. <scope>provided</scope>
  76. </dependency>
  77. <dependency>
  78. <groupId>javax.servlet.jsp</groupId>
  79. <artifactId>jsp-api</artifactId>
  80. <version>2.0</version>
  81. <scope>provided</scope>
  82. </dependency>
  83. <dependency>
  84. <groupId>jstl</groupId>
  85. <artifactId>jstl</artifactId>
  86. <version>1.2</version>
  87. </dependency> <!-- log start -->
  88. <dependency>
  89. <groupId>log4j</groupId>
  90. <artifactId>log4j</artifactId>
  91. <version>${log4j.version}</version>
  92. </dependency>
  93. <dependency>
  94. <groupId>org.slf4j</groupId>
  95. <artifactId>slf4j-api</artifactId>
  96. <version>${slf4j.version}</version>
  97. </dependency>
  98. <dependency>
  99. <groupId>org.slf4j</groupId>
  100. <artifactId>slf4j-log4j12</artifactId>
  101. <version>${slf4j.version}</version>
  102. </dependency> <!-- log end -->
  103. <dependency>
  104. <groupId>org.mybatis</groupId>
  105. <artifactId>mybatis</artifactId>
  106. <version>${mybatis.version}</version>
  107. </dependency>
  108. <dependency>
  109. <groupId>org.mybatis</groupId>
  110. <artifactId>mybatis-spring</artifactId>
  111. <version>1.3.0</version>
  112. </dependency>
  113. <dependency>
  114. <groupId>c3p0</groupId>
  115. <artifactId>c3p0</artifactId>
  116. <version>0.9.1.2</version>
  117. <type>jar</type>
  118. <scope>compile</scope>
  119. </dependency>
  120. <dependency>
  121. <groupId>com.github.pagehelper</groupId>
  122. <artifactId>pagehelper</artifactId>
  123. <version>5.1.2</version>
  124. </dependency>
  125. <dependency>
  126. <groupId>org.springframework.security</groupId>
  127. <artifactId>spring-security-web</artifactId>
  128. <version>${spring.security.version}</version>
  129. </dependency>
  130. <dependency>
  131. <groupId>org.springframework.security</groupId>
  132. <artifactId>spring-security-config</artifactId>
  133. <version>${spring.security.version}</version>
  134. </dependency>
  135. <dependency>
  136. <groupId>org.springframework.security</groupId>
  137. <artifactId>spring-security-core</artifactId>
  138. <version>${spring.security.version}</version>
  139. </dependency>
  140. <dependency>
  141. <groupId>org.springframework.security</groupId>
  142. <artifactId>spring-security-taglibs</artifactId>
  143. <version>${spring.security.version}</version>
  144. </dependency>
  145. <dependency>
  146. <groupId>com.oracle</groupId>
  147. <artifactId>ojdbc14</artifactId>
  148. <version>${oracle.version}</version>
  149. </dependency>
  150. <dependency>
  151. <groupId>javax.annotation</groupId>
  152. <artifactId>jsr250-api</artifactId>
  153. <version>1.0</version>
  154. </dependency>
  155. </dependencies>
  156. <build>
  157. <pluginManagement>
  158. <plugins>
  159. <plugin>
  160. <groupId>org.apache.maven.plugins</groupId>
  161. <artifactId>maven-compiler-plugin</artifactId>
  162. <version>3.2</version>
  163. <configuration>
  164. <source>1.8</source>
  165. <target>1.8</target>
  166. <encoding>UTF-8</encoding>
  167. <showWarnings>true</showWarnings>
  168. </configuration>
  169. </plugin>
  170. </plugins>
  171. </pluginManagement>
  172. </build>

Maven资源过滤设置:pom.xml中添加

  1. <build>
  2. <resources>
  3. <resource>
  4. <directory>src/main/java</directory>
  5. <includes>
  6. <include>**/*.properties</include>
  7. <include>**/*.xml</include>
  8. </includes>
  9. <filtering>false</filtering>
  10. </resource>
  11. <resource>
  12. <directory>src/main/resources</directory>
  13. <includes>
  14. <include>**/*.properties</include>
  15. <include>**/*.xml</include>
  16. </includes>
  17. <filtering>false</filtering>
  18. </resource>
  19. </resources>
  20. </build>

Mybatis与maven不兼容问题:pom.xml中的build中添加(读者无需添加)

  1. <plugins>
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-surefire-plugin</artifactId>
  5. <version>2.22.2</version>
  6. <configuration>
  7. <skipTests>true</skipTests>
  8. </configuration>
  9. </plugin>
  10. </plugins>

注意事项:如果maven项目不是使用骨架创建,需要额外导入依赖的jar包,否则会报找不到class文件异常

导入方式:file->project structure->artifacts->output layout->WEB-INF下创建lib并点击add copy of(一个+号按钮)导入所有jar包

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

  • com.kuang.pojo

  • com.kuang.mapper

  • com.kuang.service

  • com.kuang.controller

mybatis-config.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. </configuration>
applicationContext.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. </beans>
log4j.properties
  1. # Set root category priority to INFO and its only appender to CONSOLE.
  2. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
  3. log4j.rootCategory=debug, CONSOLE, LOGFILE
  4. # Set the enterprise logger category to FATAL and its only appender to CONSOLE.
  5. log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
  6. # CONSOLE is set to be a ConsoleAppender using a PatternLayout.
  7. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  8. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  9. log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
  10. # LOGFILE is set to be a File appender using a PatternLayout.
  11. # log4j.appender.LOGFILE=org.apache.log4j.FileAppender
  12. # log4j.appender.LOGFILE.File=d:\axis.log
  13. # log4j.appender.LOGFILE.Append=true
  14. # log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
  15. # log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

Mybatis层编写

1、数据库配置文件 database.properties
  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
  3. jdbc.username=root
  4. jdbc.password=root
2、IDEA关联数据库
3、编写MyBatis的核心配置文件
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <setting name="logImpl" value="LOG4J"/>
  8. </settings>
  9. <typeAliases>
  10. <package name="com.kuang.pojo"/>
  11. </typeAliases>
  12. <mappers>
  13. <package name="com.kuang.mapper"/>
  14. </mappers>
  15. </configuration>
4、编写数据库对应的实体类 com.kuang.pojo.Books

使用lombok插件!

  1. package com.kuang.pojo;
  2. import lombok.Data;
  3. @Data
  4. public class Books {
  5. private int bookID;
  6. private String bookName;
  7. private int bookCounts;
  8. private String detail;
  9. }
5、编写Dao层的 Mapper接口!
  1. package com.kuang.mapper;
  2. import com.kuang.pojo.Books;
  3. import java.util.List;
  4. public interface BookMapper {
  5. //增加一个Book
  6. int addBook(Books book);
  7. //根据id删除一个Book
  8. int deleteBookById(int id);
  9. //更新Book
  10. int updateBook(Books books);
  11. //根据id查询,返回一个Book
  12. Books queryBookById(int id);
  13. //查询全部Book,返回list集合
  14. List<Books> queryAllBook();
  15. }
6、编写接口对应的 BookMapper.xml 文件。需要导入MyBatis的包
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.kuang.mapper.BookMapper">
  6. <!--增加一个Book-->
  7. <insert id="addBook" parameterType="Books">
  8. insert into ssmbuild.books(bookName,bookCounts,detail)
  9. values (#{bookName}, #{bookCounts}, #{detail})
  10. </insert>
  11. <!--根据id删除一个Book-->
  12. <delete id="deleteBookById" parameterType="int">
  13. delete from ssmbuild.books where bookID=#{bookID}
  14. </delete>
  15. <!--更新Book-->
  16. <update id="updateBook" parameterType="Books">
  17. update ssmbuild.books
  18. set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail}
  19. where bookID = #{bookID}
  20. </update>
  21. <!--根据id查询,返回一个Book-->
  22. <select id="queryBookById" resultType="Books">
  23. select * from ssmbuild.books
  24. where bookID = #{bookID}
  25. </select>
  26. <!--查询全部Book-->
  27. <select id="queryAllBook" resultType="Books">
  28. SELECT * from ssmbuild.books
  29. </select>
  30. </mapper>
7、编写Service层的接口和实现类

接口:

  1. package com.kuang.service;
  2. import com.kuang.pojo.Books;
  3. import java.util.List;
  4. public interface BookService {
  5. //增加一个Book
  6. int addBook(Books book);
  7. //根据id删除一个Book
  8. int deleteBookById(int id);
  9. //更新Book
  10. int updateBook(Books books);
  11. //根据id查询,返回一个Book
  12. Books queryBookById(int id);
  13. //查询全部Book,返回list集合
  14. List<Books> queryAllBook();
  15. }

实现类:

  1. package com.kuang.service.impl;
  2. import com.kuang.mapper.BookMapper;
  3. import com.kuang.pojo.Books;
  4. import com.kuang.service.BookService;
  5. import java.util.List;
  6. public class BookServiceImpl implements BookService {
  7. //调用dao层的操作,后面用自动注入
  8. private BookMapper bookMapper;
  9. public int addBook(Books book) {
  10. return bookMapper.addBook(book);
  11. }
  12. public int deleteBookById(int id) {
  13. return bookMapper.deleteBookById(id);
  14. }
  15. public int updateBook(Books books) {
  16. return bookMapper.updateBook(books);
  17. }
  18. public Books queryBookById(int id) {
  19. return bookMapper.queryBookById(id);
  20. }
  21. public List<Books> queryAllBook() {
  22. return bookMapper.queryAllBook();
  23. }
  24. }
OK,到此,底层需求操作编写完毕!

Spring层

1、配置Spring整合MyBatis,我们这里数据源使用c3p0连接池;
2、我们去编写Spring整合Mybatis的相关的配置文件;spring-dao.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. https://www.springframework.org/schema/context/spring-context.xsd">
  9. <!-- 配置整合mybatis -->
  10. <!-- 1.关联数据库文件 -->
  11. <context:property-placeholder location="classpath:database.properties"/>
  12. <!-- 2.数据库连接池 -->
  13. <!--数据库连接池
  14. dbcp 半自动化操作 不能自动连接
  15. c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)
  16. -->
  17. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  18. <!-- 配置连接池属性 -->
  19. <property name="driverClass" value="${jdbc.driver}"/>
  20. <property name="jdbcUrl" value="${jdbc.url}"/>
  21. <property name="user" value="${jdbc.username}"/>
  22. <property name="password" value="${jdbc.password}"/>
  23. <!-- c3p0连接池的私有属性 -->
  24. <property name="maxPoolSize" value="30"/>
  25. <property name="minPoolSize" value="10"/>
  26. <!-- 关闭连接后不自动commit -->
  27. <property name="autoCommitOnClose" value="false"/>
  28. <!-- 获取连接超时时间 -->
  29. <property name="checkoutTimeout" value="10000"/>
  30. <!-- 当获取连接失败重试次数 -->
  31. <property name="acquireRetryAttempts" value="2"/>
  32. </bean>
  33. <!-- 3.配置SqlSessionFactory对象 -->
  34. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  35. <!-- 注入数据库连接池 -->
  36. <property name="dataSource" ref="dataSource"/>
  37. <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
  38. <property name="configLocation" value="classpath:mybatis-config.xml"/>
  39. </bean>
  40. <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->
  41. <!--解释 https://www.cnblogs.com/jpfss/p/7799806.html-->
  42. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  43. <!-- 注入sqlSessionFactory -->
  44. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  45. <!-- 给出需要扫描mapper接口包 -->
  46. <property name="basePackage" value="com.kuang.mapper"/>
  47. </bean>
  48. </beans>
3、Spring整合service层
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xmlns:mvc="http://www.springframework.org/schema/mvc"
  8. xsi:schemaLocation="http://www.springframework.org/schema/beans
  9. http://www.springframework.org/schema/beans/spring-beans.xsd
  10. http://www.springframework.org/schema/context
  11. http://www.springframework.org/schema/context/spring-context.xsd
  12. http://www.springframework.org/schema/aop
  13. http://www.springframework.org/schema/aop/spring-aop.xsd
  14. http://www.springframework.org/schema/tx
  15. http://www.springframework.org/schema/tx/spring-tx.xsd
  16. http://www.springframework.org/schema/mvc
  17. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  18. <!-- 扫描service相关的bean -->
  19. <context:component-scan base-package="com.kuang.service.impl" />
  20. <!-- 配置事务管理器 -->
  21. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  22. <!-- 注入数据库连接池 -->
  23. <property name="dataSource" ref="dataSource" />
  24. </bean>
  25. <!--结合aop实现事务织入-->
  26. <!--配置事务的通知类-->
  27. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  28. <!--给哪些方法配置事务-->
  29. <!--新东西:配置事务的传播特性 propagation-->
  30. <tx:attributes>
  31. <tx:method name="add*" propagation="REQUIRED"/>
  32. <tx:method name="delete*" propagation="REQUIRED"/>
  33. <tx:method name="update*" propagation="REQUIRED"/>
  34. <tx:method name="query*" read-only="true"/>
  35. <!-- *号包含上面4个方法:
  36. <tx:method name="*" propagation="REQUIRED"/> -->
  37. </tx:attributes>
  38. </tx:advice>
  39. <!--配置事务切入-->
  40. <aop:config>
  41. <aop:pointcut id="txpointcut" expression="execution(* com.kuang.service.impl.*.*(..))"/>
  42. <aop:advisor advice-ref="txAdvice" pointcut-ref="txpointcut"/>
  43. </aop:config>
  44. </beans>
Spring和mybatis的自动注入和依赖都加上

SpringMVC层

1、web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--DispatcherServlet-->
  7. <servlet>
  8. <servlet-name>DispatcherServlet</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. <init-param>
  11. <param-name>contextConfigLocation</param-name>
  12. <!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!-->
  13. <param-value>classpath:applicationContext.xml</param-value>
  14. </init-param>
  15. <load-on-startup>1</load-on-startup>
  16. </servlet>
  17. <servlet-mapping>
  18. <servlet-name>DispatcherServlet</servlet-name>
  19. <url-pattern>/</url-pattern>
  20. </servlet-mapping>
  21. <!--encodingFilter-->
  22. <filter>
  23. <filter-name>encodingFilter</filter-name>
  24. <filter-class>
  25. org.springframework.web.filter.CharacterEncodingFilter
  26. </filter-class>
  27. <init-param>
  28. <param-name>encoding</param-name>
  29. <param-value>utf-8</param-value>
  30. </init-param>
  31. </filter>
  32. <filter-mapping>
  33. <filter-name>encodingFilter</filter-name>
  34. <url-pattern>/*</url-pattern>
  35. </filter-mapping>
  36. <!--Session过期时间-->
  37. <session-config>
  38. <session-timeout>15</session-timeout>
  39. </session-config>
  40. </web-app>
2、spring-mvc.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc
  11. https://www.springframework.org/schema/mvc/spring-mvc.xsd">
  12. <!-- 配置SpringMVC -->
  13. <!-- 1.开启SpringMVC注解驱动 -->
  14. <mvc:annotation-driven />
  15. <!-- 2.静态资源默认servlet配置-->
  16. <mvc:default-servlet-handler/>
  17. <!-- 3.配置jsp 显示ViewResolver视图解析器 -->
  18. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  19. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  20. <property name="prefix" value="/WEB-INF/jsp/" />
  21. <property name="suffix" value=".jsp" />
  22. </bean>
  23. <!-- 4.扫描web相关的bean -->
  24. <context:component-scan base-package="com.kuang.controller" />
  25. </beans>
Spring配置整合文件,applicationContext.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <import resource="spring-dao.xml"/>
  7. <import resource="spring-service.xml"/>
  8. <import resource="spring-mvc.xml"/>
  9. </beans>

配置文件,暂时结束!Controller 和 视图层编写

1、BookController 类编写 , 方法一:查询全部书籍
  1. package com.kuang.controller;
  2. import com.kuang.pojo.Books;
  3. import com.kuang.service.BookService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.Model;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import java.util.List;
  9. @Controller
  10. @RequestMapping("/book")
  11. public class BookController {
  12. @Autowired
  13. private BookService bookService;
  14. @RequestMapping("/allBook")
  15. public String list(Model model) {
  16. List<Books> list = bookService.queryAllBook();
  17. model.addAttribute("list", list);
  18. return "allBook";
  19. }
  20. }
2、编写首页 index.jsp
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
  2. <!DOCTYPE HTML>
  3. <html>
  4. <head>
  5. <title>首页</title>
  6. <style type="text/css">
  7. a {
  8. text-decoration: none;
  9. color: black;
  10. font-size: 18px;
  11. }
  12. h3 {
  13. width: 180px;
  14. height: 38px;
  15. margin: 100px auto;
  16. text-align: center;
  17. line-height: 38px;
  18. background: deepskyblue;
  19. border-radius: 4px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <h3>
  25. <a href="${pageContext.request.contextPath}/book/allBook">点击进入列表页</a>
  26. </h3>
  27. </body>
  28. </html>
3、书籍列表页面 allbook.jsp
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>书籍列表</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <!-- 引入 Bootstrap -->
  8. <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
  9. </head>
  10. <body>
  11. <div class="container">
  12. <div class="row clearfix">
  13. <div class="col-md-12 column">
  14. <div class="page-header">
  15. <h1>
  16. <small>书籍列表 —— 显示所有书籍</small>
  17. </h1>
  18. </div>
  19. </div>
  20. </div>
  21. <div class="row">
  22. <div class="col-md-4 column">
  23. <a class="btn btn-primary" href="${pageContext.request.contextPath}/book/toAddBook">新增</a>
  24. </div>
  25. </div>
  26. <div class="row clearfix">
  27. <div class="col-md-12 column">
  28. <table class="table table-hover table-striped">
  29. <thead>
  30. <tr>
  31. <th>书籍编号</th>
  32. <th>书籍名字</th>
  33. <th>书籍数量</th>
  34. <th>书籍详情</th>
  35. <th>操作</th>
  36. </tr>
  37. </thead>
  38. <tbody>
  39. <c:forEach var="book" items="${requestScope.get('list')}">
  40. <tr>
  41. <td>${book.getBookID()}</td>
  42. <td>${book.getBookName()}</td>
  43. <td>${book.getBookCounts()}</td>
  44. <td>${book.getDetail()}</td>
  45. <td>
  46. <a href="${pageContext.request.contextPath}/book/toUpdateBook?id=${book.getBookID()}">更改</a> |
  47. <a href="${pageContext.request.contextPath}/book/del/${book.getBookID()}">删除</a>
  48. </td>
  49. </tr>
  50. </c:forEach>
  51. </tbody>
  52. </table>
  53. </div>
  54. </div>
  55. </div>
4、BookController 类编写 , 方法二:添加书籍
  1. @RequestMapping("/toAddBook")
  2. public String toAddPaper() {
  3. return "addBook";
  4. }
  5. @RequestMapping("/addBook")
  6. public String addPaper(Books books) {
  7. System.out.println(books);
  8. bookService.addBook(books);
  9. return "redirect:/book/allBook";
  10. }
5、添加书籍页面:addBook.jsp
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>新增书籍</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <!-- 引入 Bootstrap -->
  8. <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
  9. </head>
  10. <body>
  11. <div class="container">
  12. <div class="row clearfix">
  13. <div class="col-md-12 column">
  14. <div class="page-header">
  15. <h1>
  16. <small>新增书籍</small>
  17. </h1>
  18. </div>
  19. </div>
  20. </div>
  21. <form action="${pageContext.request.contextPath}/book/addBook" method="post">
  22. 书籍名称:<input type="text" name="bookName"><br><br><br>
  23. 书籍数量:<input type="text" name="bookCounts"><br><br><br>
  24. 书籍详情:<input type="text" name="detail"><br><br><br>
  25. <input type="submit" value="添加">
  26. </form>
  27. </div>
6、BookController 类编写 , 方法三:修改书籍
  1. @RequestMapping("/toUpdateBook")
  2. public String toUpdateBook(Model model, int id) {
  3. Books books = bookService.queryBookById(id);
  4. System.out.println(books);
  5. model.addAttribute("book",books );
  6. return "updateBook";
  7. }
  8. @RequestMapping("/updateBook")
  9. public String updateBook(Model model, Books book) {
  10. System.out.println(book);
  11. bookService.updateBook(book);
  12. Books books = bookService.queryBookById(book.getBookID());
  13. model.addAttribute("books", books);
  14. return "redirect:/book/allBook";
  15. }
7、修改书籍页面 updateBook.jsp
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>修改信息</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <!-- 引入 Bootstrap -->
  8. <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
  9. </head>
  10. <body>
  11. <div class="container">
  12. <div class="row clearfix">
  13. <div class="col-md-12 column">
  14. <div class="page-header">
  15. <h1>
  16. <small>修改信息</small>
  17. </h1>
  18. </div>
  19. </div>
  20. </div>
  21. <form action="${pageContext.request.contextPath}/book/updateBook" method="post">
  22. <input type="hidden" name="bookID" value="${book.getBookID()}"/>
  23. 书籍名称:<input type="text" name="bookName" value="${book.getBookName()}"/>
  24. 书籍数量:<input type="text" name="bookCounts" value="${book.getBookCounts()}"/>
  25. 书籍详情:<input type="text" name="detail" value="${book.getDetail() }"/>
  26. <input type="submit" value="提交"/>
  27. </form>
  28. </div>
8、BookController 类编写 , 方法四:删除书籍
  1. @RequestMapping("/del/{bookId}")
  2. public String deleteBook(@PathVariable("bookId") int id) {
  3. bookService.deleteBookById(id);
  4. return "redirect:/book/allBook";
  5. }

配置Tomcat,进行运行!

标签:springmybatisidea
 
转载的文章
 
 

 

posted @ 2021-02-28 15:30  小明日记  阅读(179)  评论(0)    收藏  举报