在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain/bean(域模型层)、dao/mapper(数据库访问层)、service(业务逻辑层)、web/controller(表现层),这样分层之后,各个层之间的职责会比较明确,后期维护起来也相对比较容易,今天我们就是使用Maven来构建以上的各个层。
项目结构如下:
Maven-ssm-base
|---- pom.xml
|---- Maven-ssm-bean
|---- pom.xml
|---- Maven-ssm-mapper
|---- pom.xml
|---- Maven-ssm-service
|---- pom.xml
|---- Maven-ssm-web
|---- pom.xml
一、创建父项目,在父项目中加入依赖
● 新建一个maven项目,选择存储位置,并选择创建一个简单的maven工程
● 输入Group Id、Artifact Id、Packaging,packaging选择pom包
● 生成父级工程
● 在base父项目pom.xml中建立依赖管理
4.0.0
cn.alin
maven-ssm-base
0.0.1-SNAPSHOT
pom
5.0.8.RELEASE
3.4.6
1.3.2
5.1.46
12.1.0.2.0
1.0.16
1.0
1.6.4.RELEASE
1.1.1
1.2
1.2.16
1.6.1
1.6.4
1.3.1
2.9.6
8.5.32
8.5.32
3.8.0
2.2
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.mybatis
mybatis
${mybais.version}
org.mybatis
mybatis-spring
${mybatis-spring.version}
com.fasterxml.jackson.core
jackson-core
${jackson.version}
com.fasterxml.jackson.core
jackson-annotations
${jackson.version}
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
org.springframework
spring-core
org.springframework
spring-web
org.springframework
spring-tx
org.springframework
spring-jdbc
org.springframework
spring-webmvc
org.springframework
spring-aop
org.springframework
spring-context-support
org.springframework
spring-test
org.mybatis
mybatis
org.mybatis
mybatis-spring
mysql
mysql-connector-java
${mysql-connector.version}
cn.easyproject
ojdbc7
${ojdbc7.version}
com.alibaba
druid
${druid.version}
aopalliance
aopalliance
${aopalliance.version}
org.aspectj
com.springsource.org.aspectj.weaver
${aspectj.weaver.version}
org.apache.commons
com.springsource.org.apache.commons.logging
${commons.logging.version}
javax.servlet
jstl
${jstl.version}
log4j
log4j
${log4j.version}
org.slf4j
slf4j-api
${slf4j-api.version}
org.slf4j
slf4j-nop
${slf4j-nop.version}
org.slf4j
slf4j-api
commons-fileupload
commons-fileupload
${fileupload.version}
com.fasterxml.jackson.core
jackson-databind
org.apache.tomcat
tomcat-servlet-api
${servlet-api.version}
provided
org.apache.tomcat
tomcat-jsp-api
${jsp-api.version}
provided
junit
junit
4.12
test
org.apache.maven.plugins
maven-compiler-plugin
${maven-compiler-plugin.version}
1.8
1.8
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
${tomcat7-maven-plugin.version}
http://localhost:8080/manager/text
alin
123123
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
**/*.properties
**/*.xml
false
releases
http://localhost:8081/repository/maven-releases/
alin-snapshot
http://localhost:8081/repository/alin-snapshot/
mavem-ssm-mapper
maven-ssm-bean
maven-ssm-service
maven-ssm-controller
pom.xml
二、创建子模块
● 右击父工程名 -> New -> Project,然后选择新建一个Maven Module工程,【Next】
● 设置子工程名以及父工程,勾选不使用模板创建,【Finish】
● 选择子项目打包方式为jar(一般非web层为jar包,web层为war包),然后点击【Finish】
● 依次创建bean、mapper、service、controller子模块,并根据子模块所需创建配置文件
● 子项目创建完成 - 完成之后可以看到在父级目录中生成了子模块,里面包含src目录和pom.xml文件
● bean
4.0.0
cn.alin
maven-ssm-base
0.0.1-SNAPSHOT
maven-ssm-bean
pom.xml
packagecn.alin.bean;public classUser {privateString username;privateString password;publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}
@OverridepublicString toString() {return "User [username=" + username + ", password=" + password + "]";
}
}
User.java
packagecn.alin.bean;public classItemInfo {//id
privateString item_id;//name
privateString item_name;//type
privateString item_type;//price
privateDouble item_price;publicString getItem_id() {returnitem_id;
}public voidsetItem_id(String item_id) {this.item_id =item_id;
}publicString getItem_name() {returnitem_name;
}public voidsetItem_name(String item_name) {this.item_name =item_name;
}publicString getItem_type() {returnitem_type;
}public voidsetItem_type(String item_type) {this.item_type =item_type;
}publicDouble getItem_price() {returnitem_price;
}public voidsetItem_price(Double item_price) {this.item_price =item_price;
}
@OverridepublicString toString() {return "ItemInfo [item_id=" + item_id + ", item_name=" + item_name + ", item_type=" +item_type+ ", item_price=" + item_price + "]";
}
}
ItemInfo.java
● mapper
4.0.0
cn.alin
maven-ssm-base
0.0.1-SNAPSHOT
mavem-ssm-mapper
cn.alin
maven-ssm-bean
0.0.1-SNAPSHOT
pom.xml
packagecn.alin.mapper;importjava.util.List;importcn.alin.bean.ItemInfo;public interfaceItemMapper {
ListgetAllList();
}
ItemMapper.java
/p>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT item_id,item_name,item_type,item_price
FROM item_info
ItemMapper.xml
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_springmvc?useUnicode=true&characterEncoding=utf-8&useSSL=true
jdbc.user=root
jdbc.password=123456
db.properties
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
applicationContext_mapper.xml
● service
4.0.0
cn.alin
maven-ssm-base
0.0.1-SNAPSHOT
maven-ssm-service
0.0.1
cn.alin
mavem-ssm-mapper
0.0.1-SNAPSHOT
pom.xml
packagecn.alin.service;importjava.util.List;importcn.alin.bean.ItemInfo;public interfaceItemService {
ListgetAllList();
}
ItemService.java
packagecn.alin.service;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importcn.alin.bean.ItemInfo;importcn.alin.mapper.ItemMapper;
@Servicepublic class ItemServiceImpl implementsItemService {
@AutowiredprivateItemMapper itemMapper;
@Overridepublic ListgetAllList() {returnitemMapper.getAllList();
}
}
ItemServiceImpl.java
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
applicationContext_service.xml
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">
applicationContext_transaction.xml
● controller - web层的打包方式是war
4.0.0
cn.alin
maven-ssm-base
0.0.1-SNAPSHOT
cn.alin.maven-ssm
maven-ssm-controller
war
cn.alin
maven-ssm-service
0.0.1
pom.xml
packagecn.alin.controller;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importcn.alin.bean.ItemInfo;importcn.alin.bean.User;importcn.alin.service.ItemService;
@Controllerpublic classUserConteoller {
@AutowiredprivateItemService itemService;
@RequestMapping("/login2")publicString login(User user, Model model) {
System.err.println("user = " +user);
model.addAttribute("User", user);return "list";
}
@RequestMapping("/list2")publicString list(Model model) {
List itemList =itemService.getAllList();for(ItemInfo itemInfo : itemList) {
System.out.println("itemInfo = " +itemInfo);
}
model.addAttribute("itemList", itemList);return "item_list";
}
}
UserConteoller.java
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">
springmvc.xml
三、打包和发布
● 右击父工程名 -> Run As -> Maven build... -> clean tomcat7:deploy 或 clean tomcat7:redeploy
【run】部署项目
● 部署成功 - 访问http://localhost:8080/maven-ssm-controller测试