IDEA集成SSM框架(SpringMVC+Spring+MyBatis)
前言
学习完MyBatis,Spring,SpringMVC之后,我们需要做的就是将这三者联系起来,Spring实现业务对象管理,Spring MVC负责请求的转发和视图管理, MyBatis作为数据对象持久化引擎。这样搭配的优点是:轻量、自由度高、Spring与Spring MVC契合度更好。通过一个图书管理示例完成SSM框架的集成。
本章目标
通过图书管理系统完成SSM框架的集成。
项目构建
一.父模块
1.我们打开idea选择create new project,然后选择Maven项目,我们暂时先不要选择maven骨架,等我们的视图层(WEB-UI层)的时候再选择maven骨架
2.这一步输入组织名,模块名称
Groupld:组织名
artifactId:模块名称
version:版本号
在Maven世界中,每个工程都有它唯一的 组织名、模块名、版本 ,这三个就是maven项目的坐标。一个maven工程可以打包成jar、war、pom等形式,但是它们都是拥有上述三个坐标的。我们在项目过程中导入的jar包就是通过上述坐标值唯一确定的。因此,我们在创建一个maven工程时会要求指定具体的 组织名、模块名、版本、打包方式。
二.子模块(common层)
1.创建子模块common层,然后点击next
三.子模块(Dao层)
1.子模块Dao层和Comon一样,这里就不再做过多的描述了
2.直接完成最后一步
四.子模块(Service层)
1.同理,如上
五.子模块(Entity层)
1.实体层和mmon层一样都是同样的操作步骤,这里我们就不进行截图了,操作步骤都一样
六.子模块(WEB-UI层)
1.子模块web-ui层需要讲一下,因为我们这一层是视图层,所以我们需要选择maven骨架。
2.然后点击next,输入模块名之后finish就可以了,在这里我们需要选择自己本地的中央仓库。自此我们的多模块项目已经搭建好了
3.完整的项目结构如下:
4.在这里我们发现视图层多了webapp这个文件夹,以后的开发过程中我们的视图都是放在WEB_INF目录下的
common模块:通用模块,不依赖其它任何模块,主要有utils、可以在多个不同项目中使用
entitie模块:POJO、VO、DTO
dao模块:数据持久化,访问数据库,这里使用Mybatis
service模块:业务模块,处理业务逻辑
webui模块:B/S结构的表示层,主要用于在浏览器中显示数据,提供用户接口
模块依赖
(1)父模块依赖
1.接下来我们去父模块的pom.xml文件进行统一的模块管理,为了方便管理版本和后续添加依赖不那么繁琐,我们在父模块pom.xml文件中只对依赖进行统一管理起来,而不进行依赖,当我们需要哪一个依赖的时候,我们只需要引入即可。
父模块pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0modelVersion> <groupId>com.ssm.booksystemgroupId> <artifactId>BookSystemartifactId> <packaging>pompackaging> <version>1.0-SNAPSHOTversion> <modules> <module>Book-Commonmodule> <module>Book-Daomodule> <module>Book-Servicemodule> <module>Book-WEBUImodule> <module>Book-Entitymodule> modules> <properties> <Book-Common.version>1.0-SNAPSHOTBook-Common.version> <Book-Dao.version>1.0-SNAPSHOTBook-Dao.version> <Book-Service.version>1.0-SNAPSHOTBook-Service.version> <Book-Entity.version>1.0-SNAPSHOTBook-Entity.version> <Book-WEBUI.version>1.0-SNAPSHOTBook-WEBUI.version> <jackson.version>2.7.4jackson.version> <commons-lang3.version>3.4commons-lang3.version> <log4j.version>2.6.1log4j.version> <junit.version>4.12junit.version> <spring-test.version>4.3.18.RELEASEspring-test.version> <spring.version>4.3.0.RELEASEspring.version> <aspectjweaver.version>1.8.9aspectjweaver.version> <cglib.version>3.2.4cglib.version> <mybatis-spring.version>1.3.0mybatis-spring.version> <mysql-connector-java.version>5.1.38mysql-connector-java.version> <mybatis.version>3.4.1mybatis.version> <c3p0.version>0.9.1.2c3p0.version> <jstl.version>1.2jstl.version> <servlet-api.version>4.0.1servlet-api.version> <jsp-api.version>2.1jsp-api.version> <hibernate.version>5.2.2.Finalhibernate.version> <commons-io.version>2.4commons-io.version> <commons-fileupload.version>1.3.1commons-fileupload.version> <freemarker.version>2.3.23freemarker.version> properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-CommonartifactId> <version>${Book-Common.version}version> dependency> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-DaoartifactId> <version>${Book-Dao.version}version> dependency> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-ServiceartifactId> <version>${Book-Service.version}version> dependency> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-EntityartifactId> <version>${Book-Entity.version}version> dependency> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-WEBUIartifactId> <version>${Book-WEBUI.version}version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-databindartifactId> <version>${jackson.version}version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-coreartifactId> <version>${jackson.version}version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-annotationsartifactId> <version>${jackson.version}version> dependency> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-lang3artifactId> <version>${commons-lang3.version}version> dependency> <dependency> <groupId>org.apache.logging.log4jgroupId> <artifactId>log4j-coreartifactId> <version>${log4j.version}version> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>${junit.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-testartifactId> <version>${spring-test.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-contextartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.aspectjgroupId> <artifactId>aspectjweaverartifactId> <version>${aspectjweaver.version}version> dependency> <dependency> <groupId>cglibgroupId> <artifactId>cglibartifactId> <version>${cglib.version}version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatis-springartifactId> <version>${mybatis-spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-jdbcartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>${mysql-connector-java.version}version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>${mybatis.version}version> dependency> <dependency> <groupId>c3p0groupId> <artifactId>c3p0artifactId> <version>${c3p0.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webmvcartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-context-supportartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>javax.servletgroupId> <artifactId>jstlartifactId> <version>${jstl.version}version> dependency> <dependency> <groupId>javax.servletgroupId> <artifactId>javax.servlet-apiartifactId> <version>${servlet-api.version}version> dependency> <dependency> <groupId>javax.servlet.jspgroupId> <artifactId>jsp-apiartifactId> <version>${jsp-api.version}version> dependency> <dependency> <groupId>org.hibernategroupId> <artifactId>hibernate-validatorartifactId> <version>${hibernate.version}version> dependency> <dependency> <groupId>commons-iogroupId> <artifactId>commons-ioartifactId> <version>${commons-io.version}version> dependency> <dependency> <groupId>commons-fileuploadgroupId> <artifactId>commons-fileuploadartifactId> <version>${commons-fileupload.version}version> dependency> <dependency> <groupId>org.freemarkergroupId> <artifactId>freemarkerartifactId> <version>${freemarker.version}version> dependency> dependencies> dependencyManagement> project>
(2)子模块Comon层模块依赖
common模块中的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>BookSystemartifactId> <groupId>com.ssm.booksystemgroupId> <version>1.0-SNAPSHOTversion> parent> <modelVersion>4.0.0modelVersion> <artifactId>Book-CommonartifactId> <dependencies> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-databindartifactId> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-coreartifactId> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-annotationsartifactId> dependency> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-lang3artifactId> dependency> dependencies> project>
(3)子模块Dao层模块依赖
Dao模块中的pom.xml文件,这一层中我们需要依赖common层和实体层,因为在这一层中我们涉及到和数据库打交道,一张表就对应一个POJO
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>BookSystemartifactId> <groupId>com.ssm.booksystemgroupId> <version>1.0-SNAPSHOTversion> parent> <modelVersion>4.0.0modelVersion> <artifactId>Book-DaoartifactId> <dependencies> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-CommonartifactId> dependency> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-EntityartifactId> dependency> <dependency> <groupId>org.apache.logging.log4jgroupId> <artifactId>log4j-coreartifactId> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-testartifactId> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-contextartifactId> dependency> <dependency> <groupId>org.aspectjgroupId> <artifactId>aspectjweaverartifactId> dependency> <dependency> <groupId>cglibgroupId> <artifactId>cglibartifactId> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatis-springartifactId> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-jdbcartifactId> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> dependency> <dependency> <groupId>c3p0groupId> <artifactId>c3p0artifactId> dependency> dependencies> project>
(4)子模块Service层模块依赖
Service模块中的pom.xml文件,这一层中我们需要依赖dao层
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>BookSystemartifactId> <groupId>com.ssm.booksystemgroupId> <version>1.0-SNAPSHOTversion> parent> <modelVersion>4.0.0modelVersion> <artifactId>Book-ServiceartifactId> <dependencies> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-DaoartifactId> dependency> dependencies> project>
(5)子模块Entity层模块依赖
实体层暂时不需要依赖任何的模块,Entity模块中的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>BookSystemartifactId> <groupId>com.ssm.booksystemgroupId> <version>1.0-SNAPSHOTversion> parent> <modelVersion>4.0.0modelVersion> <artifactId>Book-EntityartifactId> project>
(6)子模块WEB-UI层模块依赖
Service模块中的pom.xml文件,这一层中我们需要依赖service层
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>BookSystemartifactId> <groupId>com.ssm.booksystemgroupId> <version>1.0-SNAPSHOTversion> parent> <modelVersion>4.0.0modelVersion> <artifactId>Book-WEBUIartifactId> <packaging>warpackaging> <name>Book-WEBUI Maven Webappname> <url>http://www.example.comurl> <properties> <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> <maven.compiler.source>1.7maven.compiler.source> <maven.compiler.target>1.7maven.compiler.target> properties> <dependencies> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.11version> <scope>testscope> dependency> <dependency> <groupId>com.ssm.booksystemgroupId> <artifactId>Book-ServiceartifactId> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webmvcartifactId> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-context-supportartifactId> dependency> <dependency> <groupId>javax.servletgroupId> <artifactId>javax.servlet-apiartifactId> dependency> <dependency> <groupId>commons-iogroupId> <artifactId>commons-ioartifactId> dependency> <dependency> <groupId>commons-fileuploadgroupId> <artifactId>commons-fileuploadartifactId> dependency> <dependency> <groupId>javax.servlet.jspgroupId> <artifactId>jsp-apiartifactId> dependency> <dependency> <groupId>javax.servletgroupId> <artifactId>jstlartifactId> dependency> dependencies> <build> <finalName>Book-WEBUIfinalName> <pluginManagement> <plugins> <plugin> <artifactId>maven-clean-pluginartifactId> <version>3.1.0version> plugin> <plugin> <artifactId>maven-resources-pluginartifactId> <version>3.0.2version> plugin> <plugin> <artifactId>maven-compiler-pluginartifactId> <version>3.8.0version> plugin> <plugin> <artifactId>maven-surefire-pluginartifactId> <version>2.22.1version> plugin> <plugin> <artifactId>maven-war-pluginartifactId> <version>3.2.2version> plugin> <plugin> <artifactId>maven-install-pluginartifactId> <version>2.5.2version> plugin> <plugin> <artifactId>maven-deploy-pluginartifactId> <version>2.8.2version> plugin> plugins> pluginManagement> build> project>
(7)最终的依赖效果
这里只展示了common层中的依赖,剩下的依赖也一样
连接数据库
1.这是navicat的操作界面,前面的一些连接配置我在这里就不进行过多的描述了。
2.右键localhost_3306选择新建数据库,输入数据的名称,字符集我们选择倒数第二个,也就是utf-8的然后确定就可了
3.数据库脚本
create table book( bid int auto_increment primary key not null COMMENT'图书编号', bname varchar(50) not null COMMENT'图书名称', bauthor VARCHAR(50) COMMENT'图书作者' ) INSERT into book(bname,bauthor)VALUES ('斗罗大陆','唐家三少'), ('假如给我三天光明','海伦凯勒'), ('斗破苍穹','天蚕土豆'), ('雪鹰领主','我吃西红柿') SELECT * from book
文件配置
文件配置是一项非常繁琐的工作内容,稍有不慎整个项目就废了,所以需要非常的细心才有可能将这一整个项目搭建成功,否则将会一夜之间回到解放前。所以我所操作的每一个不大家都需要谨慎再谨慎。
1.首先我们先移除父模块的src目录,其实移不移除都无所谓,在这里我主要是为了影响干扰,移除之后目录如下
2.我们需要在每一个子模块添加对应的包名和配置文件
子模块common层
R.java
package com.booksystem.common; import java.util.HashMap; import java.util.Map; /** * 返回数据封装 */ public class R extends HashMap{ private static final long serialVersionUID = 1L; public R() { put("code", 1); put("msg", "success"); } //错误时 public static R error() { return error(500, "未知异常,请联系管理员"); } public static R error(String msg) { return error(500, msg); } public static R error(int code, String msg) { R r = new R(); r.put("code", code); r.put("msg", msg); return r; } //成功时 public static R ok(String msg) { R r = new R(); r.put("msg", msg); return r; } public static R ok(Map map) { R r = new R(); r.putAll(map); return r; } public static R ok() { return new R(); } public static R ok(Object data) { return new R().put("data",data); } @Override public R put(String key, Object value) { super.put(key, value); return this; } }
子模块dao层
BookMapper.xml
<?xml version="1.0" encoding="UTF-8"?> DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.booksystem.dao.BookDao"> <select id="getAllBooks" resultMap="bookMap"> select bid,bname,bauthor from book select> <resultMap id="bookMap" type="book"> <id column="bid" property="bid"/> <result property="bname" column="bname"/> <result column="bauthor" property="bauthor"/> resultMap> mapper>
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" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> <context:property-placeholder location="classpath*:db.properties" /> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${mysql.driver}" /> <property name="jdbcUrl" value="${mysql.url}" /> <property name="user" value="${mysql.uid}" /> <property name="password" value="${mysql.password}" /> <property name="acquireIncrement" value="${mysql.acquireIncrement}">property> <property name="initialPoolSize" value="${mysql.initialPoolSize}">property> <property name="minPoolSize" value="${mysql.minPoolSize}">property> <property name="maxPoolSize" value="${mysql.maxPoolSize}">property> bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:mybatis.xml">property> <property name="dataSource" ref="datasource"/> <property name="mapperLocations" value="classpath*:mapper/*Mapper.xml">property> bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <property name="basePackage" value="com.booksystem.dao"/> bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="datasource">property> bean> <tx:annotation-driven transaction-manager="transactionManager" /> <context:component-scan base-package="com.booksystem.dao"/> <aop:aspectj-autoproxy/> beans>
db.properties
##mysql连接字符串 #驱动 mysql.driver=com.mysql.jdbc.Driver #连接字符串 mysql.url=jdbc:mysql://localhost:3306/booksystem?useUnicode=true&characterEncoding=UTF-8 #用户名 mysql.uid=root #密码 mysql.password=123456 mysql.acquireIncrement=5 mysql.initialPoolSize=10 mysql.minPoolSize=5 mysql.maxPoolSize=20
mybatis.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> <properties resource="db.properties">properties> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> settings> <typeAliases> <package name="com.booksystem.entity"/> typeAliases> configuration>
BookDao,java
package com.booksystem.dao; import com.booksystem.entity.Book; import java.util.List; public interface BookDao { //查询全部图书信息 public ListgetAllBooks(); }
子模块entity层
Book.java
package com.booksystem.entity; /* *图书实体类 * */ public class Book { private long bid; //图书编号 private String bname; // 图书名称 private String bauthor; // 图书作者 public long getBid() { return bid; } public void setBid(long bid) { this.bid = bid; } public String getBname() { return bname; } public void setBname(String bname) { this.bname = bname; } public String getBauthor() { return bauthor; } public void setBauthor(String bauthor) { this.bauthor = bauthor; } //无参构造方法 public Book(){} //带参构造方法 public Book(long bid, String bname, String bauthor) { this.bid = bid; this.bname = bname; this.bauthor = bauthor; } @Override public String toString() { return "Book{" + "bid=" + bid + ", bname='" + bname + '\'' + ", bauthor='" + bauthor + '\'' + '}'; } }
写了怎么多的东西,我们需要测试一下,减少错误,现在我们只是在做练习,代码量比较少但是到了真正项目的时候代码量肯定比现在多许多,为了养成这种习惯,我一般写到Dao层的时候就进行测试一下。
BookTest.java
package com.booksystem.dao; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.*; //指定bean注入的配置文件 @ContextConfiguration("/applicationContext.xml") //使用标准的junit @RunWith(SpringJUnit4ClassRunner.class) @Transactional //事务管理 @Rollback(true) //是否回滚 public class BookDaoTest { @Autowired private BookDao bookDao; @Test public void getAllBooks() { System.out.println(bookDao.getAllBooks()); } }
我们看到测试结果已经出来了,如果这一步你成功了的话那么你已经完成了80%了,下一步的话我们就配置service层
子模块service层
BookService
package com.booksystem.service; import com.booksystem.entity.Book; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; public interface BookService { //查询全部图书信息 public ListgetAllBooks(); }
BookImple
package com.booksystem.imple; import com.booksystem.dao.BookDao; import com.booksystem.entity.Book; import com.booksystem.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class BookImple implements BookService { @Autowired public BookDao bookDao; public ListgetAllBooks() { return bookDao.getAllBooks(); } }
子模块webui层
我们发现在这一层中没有存放源代码的文件加,所以我们需要自己添加,选择file,project structure
生成之后的目录
BookController.java
package com.book.controller; import com.booksystem.common.R; import com.booksystem.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("/book") public class BookController { @Autowired public BookService bookService; @GetMapping("/getAllBook") @ResponseBody public R getAllBook(){ return R.ok(bookService.getAllBooks()); } }
springmvc-servlet.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: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-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <context:component-scan base-package="com.booksystem" /> <mvc:default-servlet-handler /> <mvc:annotation-driven enable-matrix-variables="true" /> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> <property name="removeSemicolonContent" value="false" /> bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".html" /> <property name="contentType" value="text/html;charset=UTF-8" /> <property name="order" value="1" /> bean> <bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> bean> <mvc:cors> <mvc:mapping path="/**" allowed-origins="*" allowed-methods="POST,GET, OPTIONS,DELETE,PUT" allowed-headers="Content-Type,ContentType,Access-Control-Allow-Headers, Authorization, X-Requested-With" allow-credentials="true"/> mvc:cors> beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <welcome-file-list> <welcome-file>index.htmlwelcome-file> welcome-file-list> <listener> <description>Spring容器加载监听器description> <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class> listener> <context-param> <description>设置Spring加载时的配置文件位置,默认位置在WEB-INF/lib目录下description> <param-name>contextConfigLocationparam-name> <param-value>classpath*:applicationContext.xmlparam-value> context-param> <servlet> <servlet-name>springmvcservlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class> <init-param> <param-name>contextConfigLocationparam-name> <param-value>classpath*:springmvc-servlet.xmlparam-value> init-param> <load-on-startup>1load-on-startup> <multipart-config> <max-file-size>5242880max-file-size> <max-request-size>20971520max-request-size> <file-size-threshold>0file-size-threshold> multipart-config> servlet> <servlet-mapping> <servlet-name>springmvcservlet-name> <url-pattern>/url-pattern> servlet-mapping> <filter> <filter-name>characterEncodingFilterfilter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class> <init-param> <param-name>encodingparam-name> <param-value>UTF-8param-value> init-param> <init-param> <param-name>forceEncodingparam-name> <param-value>trueparam-value> init-param> filter> <filter-mapping> <filter-name>characterEncodingFilterfilter-name> <url-pattern>/*url-pattern> filter-mapping> web-app>
3.配置tomcat
4.项目部署
在这里我们就将项目进行热部署就可以了,我们在开发阶段就暂时不进行打包,以后我们有服务器的时候就可以打包成war或者jar包
5.启动项目
index.html
="en">
="UTF-8">
图书管理系统
图书管理系统
="myTab" cellpadding="0" cellspacing="0" border="1">
编号
名称
作者