- 重新编译指令
点击两下ctrl +mvn clean compile - 清理字节码
clean - 编译
compile - 打包
package - 打包然后安装到本地仓库
install - 常用指令:
mvn clean package -Dmaven.test.skip=true
1.创建maven 并配置 聚合项目
- File->New->Module 选择maven-archetype-site 创建聚合项目
在pom.xml文件中 添加
<packaging>pom</packaging>
-
删除 src文件夹中的site文件夹
-
创建crm-domain 和 crm-dao ,crm-service子项目 选择quickstart java 项目
- 创建crm-webapp 子项目 选择 webapp javaweb项目
- 项目创建完毕后效果图:
- 完成项目配置
- 配置项目依赖关系 去这个网站搜索: https://mvnrepository.com/artifact
- 删除pom(crm).xml中的无用配置项 删除后效果图:
配置pom.xml主配置文件
-
父配置项
<packaging>pom</packaging>
-
子配置项
<packaging>jar</packaging>
-
添加:
<packaging>pom</packaging>
-
父项目需要指定packaging 子类modules名称
-
规范各依赖版本号:
spring相关依赖: spring-beans,spring-core,spring-context,spring-aop,spring-aspects,spring-expression,spring-jdbc,spring-tx,spring-test,spring-web,spring-webmvc
mybatis相关依赖:mybatis,mybatis-spring
mysql相关依赖:mysql-conneteor-java
数据库连接池druid组件:druid
servlet相关组件:servlet-api,jstl,junit
配置各种插件:
配置tomcat插件:tomcat7-maven-plugin
指定jdk版本插件:maven-compiler-plugin
各个子模块使用依赖:
crm-domain:junit
crm-dao:mysql-connector-java,mybatis,mybatis-spring,druid,crm-domain,junit,spring-context
crm-service:spring-aop,spring-aspects,spring-tx,spring-jdbc,crm-dao,junit
crm-web:spring-webmvc,servlet-api,jstl,junit,spring-test,crm-service -
主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.0</modelVersion>
<groupId>com.xdl</groupId>
<artifactId>crm</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>crm-domain</module>
<module>crm-dao</module>
<module>crm-service</module>
<module>crm-web</module>
</modules>
<packaging>pom</packaging>
<properties>
<spring.version>4.3.3.RELEASE</spring.version>
<mybatis.version>3.4.4</mybatis.version>
<mybatis.spring.version>1.3.0</mybatis.spring.version>
<druid.version>1.1.7</druid.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<!--spring相关版本锁定-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--mybatis相关版本锁定-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<!--mysql相关版本锁定-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<!--数据库连接池druid配置-->
<!-- <dependency>-->
<!-- <groupId>com.alibaba</groupId>-->
<!-- <artifactId>druid</artifactId>-->
<!-- <version>1.1.7</version>-->
<!-- </dependency>-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!--配置tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8888</port>
<server>tomcat7</server>
<path>/crm</path>
</configuration>
</plugin>
<!-- 指定项目jdk版本插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
- 配置pom.xml(crm-domain配置文件)
crm-domain:junit
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 配置pom.xml(crm-dao 配置文件)
crm-dao:mysql-connector-java,mybatis,mybatis-spring,druid,crm-domain,junit,spring-context
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<!-- 配置数据库连接池druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.7</version>
</dependency>
<!--让dao 依赖domain 才能找到domain里面的类-->
<dependency>
<groupId>com.xdl</groupId>
<artifactId>crm-domain</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
</dependencies>
- 配置pom.xml(crm-service配置文件)
crm-service:spring-aop,spring-aspects,spring-tx,spring-jdbc,crm-dao,junit
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>com.xdl</groupId>
<artifactId>crm-dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- 添加一个spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
- 配置pom.xml(crm-web 配置文件)
crm-web:spring-webmvc,servlet-api,jstl,junit,spring-test,crm-service
<artifactId>crm-web</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>com.xdl</groupId>
<artifactId>crm-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<finalName>crm-web</finalName>
</build>
</dependencies>
- .在crm-domain子项目下编写 Customer实体类
public class Customer implements Serializable {
private int id;
private String name;
private String gender;
private int age;
- .在crm-dao子项目下编写mapper接口和mapper映射器文件
需要在main下创建相同层级的目录写xml配置文件
- 因为编写接口需要使用crm-domain子项目下的实体 所以需要导入依赖关系
<dependency>
<groupId>com.xdl</groupId>
<artifactId>crm-domain</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
- mapper接口:
public interface CustomerMapper {
public void addCustomer(Customer customer);
}
- mapper映射器文件: CustomerMapper.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">
<!-- namespace指定和哪个Mapper映射器接口对应 -->
<mapper namespace="com.xdl.mapper.CustomerMapper">
<!-- 定义SQL语句 -->
<insert id="addCustomer" parameterType="com.xdl.Customer">
insert into test.t_customer (name,gender,age)values(#{name},#{gender},#{age})
</insert>
</mapper>
- .在crm-service子项目pom.xml中配置 crm-dao 依赖项
<!-- 在crm-service中 引入crm-dao -->
<dependency>
<groupId>com.xdl</groupId>
<artifactId>crm-dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
-
在crm-web子项目中加入applicationContext.xml文件和数据库配置 文件和spring-mvc.xml 加入配置文件到main/resources下
-
并且在pom.xml(crm-web)中添加crm-service依赖项
<dependency>
<groupId>com.xdl</groupId>
<artifactId>crm-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
- 在crm-web中创建测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class CustomerMapperTest {
@Autowired
private CustomerMapper customerMapper;
@Test
public void testSave(){
Customer customer = new Customer();
customer.setName("eric");
customer.setGender("男");
customer.setAge(20);
customerMapper.addCustomer(customer);
}
}
- 编写web.xml配置文件:启动spring,启动springmvc(创建dispatcherservlet),编码过滤器
<?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"
version="2.5">
<!--解决乱码过滤器-->
<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>
<!--启动spring-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--启动springmvc -->
<servlet>
<servlet-name>DispatcherServlet</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>DispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
- 编写controller控制器:
@Controller
@RequestMapping("/customer")
public class CustomerController {
public CustomerController(){
System.out.println("1111");
}
@Autowired
private CustomerService customerService;
/**
* 跳转到input.jsp
*/
@RequestMapping("/input")
public String input(){
System.out.println("哈哈哈");
return "input";
}
/**
* 保存
*/
@RequestMapping("/save")
public String save(Customer customer){
customerService.addCoustomer(customer);
return "succ";
}
}
9.启动服务器 输入:http://localhost:8888/crm/customer/input.action
源代码:https://github.com/xuyudong102/crm