所谓聚合项目,实际上就是对项目分模块,互联网项目一般来说按照业务分(订单模块、VIP模块、支付模块、CMS模块…),传统的软件项目,大多采用分层的方式(Dao、Serivce、Controller):

一、多模块结构

bobo-parent       pom  管理 |-- bobo-manager   pom 管理|-- bobo-manager-dao     jar|-- bobo-manager-service jar|-- bobo-manager-model   jar|-- bobo-manager-commons jar|-- bobo-manager-controller war

二、创建项目

1.创建bobo-parent

pom文件不需要写代码,只是起管理作用

2.创建bobo-manager项目

指定bobo-parent为其父项目

3.分别创建四个jar项目

项目类型为 maven model

相同的步骤创建其他3个jar项目

4.创建bobo-manager-controller项目

<dependencies> <!-- 因为是web项目所以需要servlet --> <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency></dependencies><build><plugins> <!-- tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration> <!-- 端口号 --><port>8082</port> <!-- /表示访问路径 省略项目名 --><path>/</path> <!-- 设置编码方式 --><uriEncoding>utf-8</uriEncoding></configuration></plugin></plugins></build>

三、设置相互依赖

1.依赖关系介绍

完整依赖关系

#mermaid-svg-DRkZPZH6O6wHU7tY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-DRkZPZH6O6wHU7tY .error-icon{fill:#552222;}#mermaid-svg-DRkZPZH6O6wHU7tY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-DRkZPZH6O6wHU7tY .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-DRkZPZH6O6wHU7tY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-DRkZPZH6O6wHU7tY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-DRkZPZH6O6wHU7tY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-DRkZPZH6O6wHU7tY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-DRkZPZH6O6wHU7tY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-DRkZPZH6O6wHU7tY .marker.cross{stroke:#333333;}#mermaid-svg-DRkZPZH6O6wHU7tY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-DRkZPZH6O6wHU7tY .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-DRkZPZH6O6wHU7tY .cluster-label text{fill:#333;}#mermaid-svg-DRkZPZH6O6wHU7tY .cluster-label span{color:#333;}#mermaid-svg-DRkZPZH6O6wHU7tY .label text,#mermaid-svg-DRkZPZH6O6wHU7tY span{fill:#333;color:#333;}#mermaid-svg-DRkZPZH6O6wHU7tY .node rect,#mermaid-svg-DRkZPZH6O6wHU7tY .node circle,#mermaid-svg-DRkZPZH6O6wHU7tY .node ellipse,#mermaid-svg-DRkZPZH6O6wHU7tY .node polygon,#mermaid-svg-DRkZPZH6O6wHU7tY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-DRkZPZH6O6wHU7tY .node .label{text-align:center;}#mermaid-svg-DRkZPZH6O6wHU7tY .node.clickable{cursor:pointer;}#mermaid-svg-DRkZPZH6O6wHU7tY .arrowheadPath{fill:#333333;}#mermaid-svg-DRkZPZH6O6wHU7tY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-DRkZPZH6O6wHU7tY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-DRkZPZH6O6wHU7tY .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-DRkZPZH6O6wHU7tY .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-DRkZPZH6O6wHU7tY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-DRkZPZH6O6wHU7tY .cluster text{fill:#333;}#mermaid-svg-DRkZPZH6O6wHU7tY .cluster span{color:#333;}#mermaid-svg-DRkZPZH6O6wHU7tY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-DRkZPZH6O6wHU7tY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

依赖
依赖
依赖
依赖
controller
service
dao
model
commons

控制层的依赖关系

#mermaid-svg-G6eYpSJ0ltIRddj3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .error-icon{fill:#552222;}#mermaid-svg-G6eYpSJ0ltIRddj3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-G6eYpSJ0ltIRddj3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .marker.cross{stroke:#333333;}#mermaid-svg-G6eYpSJ0ltIRddj3 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-G6eYpSJ0ltIRddj3 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .cluster-label text{fill:#333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .cluster-label span{color:#333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .label text,#mermaid-svg-G6eYpSJ0ltIRddj3 span{fill:#333;color:#333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .node rect,#mermaid-svg-G6eYpSJ0ltIRddj3 .node circle,#mermaid-svg-G6eYpSJ0ltIRddj3 .node ellipse,#mermaid-svg-G6eYpSJ0ltIRddj3 .node polygon,#mermaid-svg-G6eYpSJ0ltIRddj3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-G6eYpSJ0ltIRddj3 .node .label{text-align:center;}#mermaid-svg-G6eYpSJ0ltIRddj3 .node.clickable{cursor:pointer;}#mermaid-svg-G6eYpSJ0ltIRddj3 .arrowheadPath{fill:#333333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-G6eYpSJ0ltIRddj3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-G6eYpSJ0ltIRddj3 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-G6eYpSJ0ltIRddj3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-G6eYpSJ0ltIRddj3 .cluster text{fill:#333;}#mermaid-svg-G6eYpSJ0ltIRddj3 .cluster span{color:#333;}#mermaid-svg-G6eYpSJ0ltIRddj3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-G6eYpSJ0ltIRddj3 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

依赖
依赖
依赖
依赖
controller
service
dao
model
commons

service层的依赖关系

#mermaid-svg-WDzOAlfNYdhjQo74 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WDzOAlfNYdhjQo74 .error-icon{fill:#552222;}#mermaid-svg-WDzOAlfNYdhjQo74 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WDzOAlfNYdhjQo74 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-WDzOAlfNYdhjQo74 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WDzOAlfNYdhjQo74 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WDzOAlfNYdhjQo74 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WDzOAlfNYdhjQo74 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WDzOAlfNYdhjQo74 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WDzOAlfNYdhjQo74 .marker.cross{stroke:#333333;}#mermaid-svg-WDzOAlfNYdhjQo74 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WDzOAlfNYdhjQo74 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-WDzOAlfNYdhjQo74 .cluster-label text{fill:#333;}#mermaid-svg-WDzOAlfNYdhjQo74 .cluster-label span{color:#333;}#mermaid-svg-WDzOAlfNYdhjQo74 .label text,#mermaid-svg-WDzOAlfNYdhjQo74 span{fill:#333;color:#333;}#mermaid-svg-WDzOAlfNYdhjQo74 .node rect,#mermaid-svg-WDzOAlfNYdhjQo74 .node circle,#mermaid-svg-WDzOAlfNYdhjQo74 .node ellipse,#mermaid-svg-WDzOAlfNYdhjQo74 .node polygon,#mermaid-svg-WDzOAlfNYdhjQo74 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WDzOAlfNYdhjQo74 .node .label{text-align:center;}#mermaid-svg-WDzOAlfNYdhjQo74 .node.clickable{cursor:pointer;}#mermaid-svg-WDzOAlfNYdhjQo74 .arrowheadPath{fill:#333333;}#mermaid-svg-WDzOAlfNYdhjQo74 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-WDzOAlfNYdhjQo74 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-WDzOAlfNYdhjQo74 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-WDzOAlfNYdhjQo74 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-WDzOAlfNYdhjQo74 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-WDzOAlfNYdhjQo74 .cluster text{fill:#333;}#mermaid-svg-WDzOAlfNYdhjQo74 .cluster span{color:#333;}#mermaid-svg-WDzOAlfNYdhjQo74 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-WDzOAlfNYdhjQo74 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

依赖
依赖
依赖
service
dao
model
commons

dao层的依赖关系

#mermaid-svg-7eDzpy7p80e2PdoS {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7eDzpy7p80e2PdoS .error-icon{fill:#552222;}#mermaid-svg-7eDzpy7p80e2PdoS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7eDzpy7p80e2PdoS .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7eDzpy7p80e2PdoS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7eDzpy7p80e2PdoS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7eDzpy7p80e2PdoS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7eDzpy7p80e2PdoS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7eDzpy7p80e2PdoS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7eDzpy7p80e2PdoS .marker.cross{stroke:#333333;}#mermaid-svg-7eDzpy7p80e2PdoS svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7eDzpy7p80e2PdoS .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7eDzpy7p80e2PdoS .cluster-label text{fill:#333;}#mermaid-svg-7eDzpy7p80e2PdoS .cluster-label span{color:#333;}#mermaid-svg-7eDzpy7p80e2PdoS .label text,#mermaid-svg-7eDzpy7p80e2PdoS span{fill:#333;color:#333;}#mermaid-svg-7eDzpy7p80e2PdoS .node rect,#mermaid-svg-7eDzpy7p80e2PdoS .node circle,#mermaid-svg-7eDzpy7p80e2PdoS .node ellipse,#mermaid-svg-7eDzpy7p80e2PdoS .node polygon,#mermaid-svg-7eDzpy7p80e2PdoS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7eDzpy7p80e2PdoS .node .label{text-align:center;}#mermaid-svg-7eDzpy7p80e2PdoS .node.clickable{cursor:pointer;}#mermaid-svg-7eDzpy7p80e2PdoS .arrowheadPath{fill:#333333;}#mermaid-svg-7eDzpy7p80e2PdoS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7eDzpy7p80e2PdoS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7eDzpy7p80e2PdoS .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-7eDzpy7p80e2PdoS .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-7eDzpy7p80e2PdoS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7eDzpy7p80e2PdoS .cluster text{fill:#333;}#mermaid-svg-7eDzpy7p80e2PdoS .cluster span{color:#333;}#mermaid-svg-7eDzpy7p80e2PdoS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7eDzpy7p80e2PdoS :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

依赖
依赖
dao
model
commons

2.实现依赖关系

2.1项目打包

1.先对bobo-parent项目打包

本地仓库就会生成打包的内容

2.再对bobo-manager项目打包


成功后本地仓库

2.2添加依赖关系

1.controller依赖service

<!-- 配置依赖的service坐标 -->
<dependency><groupId>com.dpb</groupId><artifactId>bobo-manager-service</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>

2.service依赖dao

<!-- 配置依赖的Dao坐标 -->
<dependency><groupId>com.dpb</groupId><artifactId>bobo-manager-dao</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>

同时controller也会依赖dao,间接依赖

3.dao依赖model和Commons

 <dependencies><!-- 配置依赖的model和Commons的坐标 --><dependency><groupId>com.dpb</groupId><artifactId>bobo-manager-model</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.dpb</groupId><artifactId>bobo-manager-commons</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies>

3.Spring和SpringMVC整合

3.1在dao中引入spring

<properties><spirng.version>4.3.3.RELEASE</spirng.version></properties><dependencies><!-- 配置依赖的model和Commons的坐标 --><dependency><groupId>com.dpb</groupId><artifactId>bobo-manager-model</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.dpb</groupId><artifactId>bobo-manager-commons</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 1.spring相关的jar包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spirng.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spirng.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spirng.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spirng.version}</version></dependency><!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.6.2</version></dependency><!-- 数据库驱动包 这个是从私服上关联的--><dependency><groupId>com.dpb.oracle</groupId><artifactId>ojdbc6-dpb</artifactId><version>1.0.0</version></dependency></dependencies>

3.2在controller中引入springmvc

在controller中添加的是其他项目不需要用的jar包,比如servlet。

 <properties><spirng.version>4.3.3.RELEASE</spirng.version></properties><dependencies><!-- 因为是web项目所以需要servlet --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><!-- 配置依赖的service坐标 --><dependency><groupId>com.dpb</groupId><artifactId>bobo-manager-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 2.和springMvc相关的jar包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spirng.version}</version></dependency><!-- https://mvnrepository.com/artifact/jstl/jstl --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies>


spring配置文件

<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:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"><!-- 开启扫描 --><context:component-scan base-package="com.dpb.service.impl,com.dpb.dao.impl"><!-- 扫描的时候显示的排除controller注解 --><context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller" /></context:component-scan><bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"id="ds"><property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /><property name="username" value="pms" /><property name="password" value="pms" /></bean><bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate"><constructor-arg name="dataSource" ref="ds"/></bean>
</beans>

SpringMVC的配置文件

<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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"><!-- 开启注解 --><mvc:annotation-driven ></mvc:annotation-driven><!-- 开启扫描 --><context:component-scan base-package="com.dpb.controller"><!-- 只扫描指定路径下的controller注解 --><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan>
</beans>

3.3在controller中配置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_2_5.xsd"id="WebApp_ID" version="2.5" ><!-- 这里配置Spring配置文件的位置,param-name是固定的, param-value是文件位置 这个配置可以省略,如果省略, 系统默认去/WEB-INF/目录下查找applicationContext.xml作为Spring的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 前端控制器 --><servlet><servlet-name>spring-mvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>spring-mvc</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><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern></servlet-mapping>
</web-app>

3.4实现查询操作

1.在bobo-manager-model中创建User对象

public class User {private int id;private String uname;private String nickname;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}
}

2.在bobo-manager-dao实现数据库操作

public interface IUserDao {public List<User> query();
}
@Repository
public class UserDaoImpl implements IUserDao {@ResourceJdbcTemplate jdbcTemplate;@Overridepublic List<User> query() {String sql = "select * from t_sysuser";return jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));}}

3.在bobo-manager-service中操作Dao

public interface IUserService {public List<User> query();}
@Service
public class UserServiceImpl implements IUserService {@Resourceprivate IUserDao dao;@Overridepublic List<User> query() {// TODO Auto-generated method stubreturn dao.query();}}

4.在bobo-manager-controller中处理请求响应

@Controller
public class UserController {@Resourceprivate IUserService userService;@RequestMapping("/query")public String query(Model m){m.addAttribute("list", userService.query());return "/user.jsp";}
}

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><c:forEach items="${list }" var="u">${u.id } --${u.uname }--${u.nickname }<br></c:forEach>
</body>
</html>

5.测试

对bobo-manager打包

然后启动 bobo-manager-controller项目

成功!!!

【第五篇】Maven系列教程-聚合工程相关推荐

  1. EWSTM8系列教程06_工程节点选项配置(一)

    IAR最新全套教程: 1.EWSTM8系列教程01_IAR介绍.下载.安装和注册 2.EWSTM8系列教程02_新建基础软件工程 3.EWSTM8系列教程03_主窗口.工具栏的概述 4.EWSTM8系 ...

  2. DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在

    DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在 问题描述 springboot 项目打包(package)或安装到仓库(install)的时候报错:程序包com.fu ...

  3. keil查看程序运行时间_Keil系列教程05_工程目标选项配置(一)

    说明: 本文原创作者『strongerHuang』 首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop 标签:Keil. MDK-ARM. µVision 该教程 ...

  4. c语言-命令行选项_EWSTM8系列教程06_工程节点选项配置(一)

    说明: 本文原创作者『strongerHuang』 首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop 该教程基于EWSTM8,大部分内容也适用于IAR其它产品( ...

  5. (五)Maven中的聚合和继承

    一.为什么要聚合? 定义:我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可以独立的编译和测试运行每个模块,但是随着项目的不断变大和复杂化,我 ...

  6. spring boot 跨域请求_SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition...

    191222-SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition 在 spring mvc 中,我们知道用户发起的请求可以通过 url 匹配到我们通过@R ...

  7. ES6系列教程第三篇--Generator 详解

    一.什么是Generator 函数 先看下面的Generator函数, function* helloGenerator() {console.log("this is generator& ...

  8. EWSTM8系列教程04_菜单概述(一)

    IAR最新全套教程: 1.EWSTM8系列教程01_IAR介绍.下载.安装和注册 2.EWSTM8系列教程02_新建基础软件工程 3.EWSTM8系列教程03_主窗口.工具栏的概述 4.EWSTM8系 ...

  9. gradle新建工程,多项目依赖,聚合工程

    感谢gradle完全的文档.开始完全没想过新建项目会弄我一天时间,都说gradle构建项目简单,我现在回复他们呵呵. gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二. ...

最新文章

  1. xmindcore.java_求解Xmind问题
  2. linux中sqlplus不能用_装修中不能用海沙,但是海沙已经偷偷走进了你的家
  3. php中mysql自增_MySQL的自增字段
  4. python绘制正态分布曲线
  5. 【知识星球】softmax损失相关的小问题
  6. Ollydbg中断方法浅探
  7. Windows7 Xp Mode部署与讲解
  8. 我的JavaWeb学习1
  9. Mysql-Windows下重置密码/修改密码
  10. 中国双氢青蒿素市场趋势报告、技术动态创新及市场预测
  11. 【LeetCode】162-寻找峰值
  12. r710 linux网卡驱动,Dell R710更换网卡驱动linux
  13. android使用tcpdump抓包
  14. μC/OS源码官网下载链接
  15. 送男孩子情人节礼物送什么?情人节必备礼物合集
  16. pg_buffercache
  17. 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!
  18. 用友文件服务器恢复,用友U8账套数据恢复及备份.doc
  19. Git “强制“提交代码
  20. LoadRunner教程(27)-LoadRunner测试java代码

热门文章

  1. htcm7刷linux,htc one m7刷官方zip包的教程
  2. 应用系统报错:com.highgo.jdbc.util.PSQLException:bad value for long
  3. linux服务器之间文件传输scp
  4. ACwing166数独与183靶形数独
  5. 从核酸检测平台崩盘看性能工程的范围
  6. bestCoder 2015 百度之星程序设计大赛 资格赛-1003-IP聚合
  7. mac软件卸载不干净?你没用对工具!!试试这款mac卸载神器!
  8. 春天里的一封战地日记
  9. [iOS] MUI-WebView模式集成到iOS应用
  10. 每页多张幻灯片密集打印的设置技巧