maven搭建SSM
文章目录
准备
- eclipse
Eclipse Java EE IDE for Web Developers. Version: Photon Release (4.8.0)
- maven
Apache Maven 3.3.9
eclipse里自带了maven,但是建议使用外部的maven,然后设置maven远程仓库地址为阿里云的(速度快)
- 配置外部maven
window -> preferences -> Maven -> Installation
点击 Add,在"new Maven Runtime"里,点击Directory选择maven安装目录,然后点击Finish,添加成功!
勾选刚刚添加的 apache-maven,然后点击Apply,应用
去maven的安装目录
...\apache-maven..xxx\conf\setting.xml
中,修改settings.xml,将mirrors替换为以下内容
<mirrors>
<!-- 阿里云的maven仓库地址 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
然后选择 User Settings ->Browse,将maven安装目录下的/config/setting.xml选中,点击Apply应用。
步骤
-
新建maven项目
new -> other搜索maven,选则maven Project
点击next
点击 next
在Filter中搜索web,然后选中org.apache.maven.archetypes maven-archetype-webapp
,点击next
填写好Group Id,和 Artifact Id,点击Finish
Group id: 组织id,域名倒写;
Artifact id:项目、模块id;
Version: 版本;
Packaging: 该元素决定了项目的打包方式,有3种,jar,war,pom(比如是一个父模块);
Maven为jar项目调用了maven-jar-plugin,为war项目调用了maven-war-plugin,换言之,packaging直接影响Maven的构建生命周期
生成的项目如下
初次创建可能会比较慢,多等待一会即可。
- 补全 Source Folder:
src/main/resources
src/main/java
src/test/resources
src/test/java
项目上右键-> new ->Source Folder
- 在项目上右键 选择 properties ->java Build Path,选择JRE System Library -> Eidt,更换jre为workspace defautlt jre
- 在项目上右键 选择 properties ->Deployment Assembly,去掉这两项部署(不需要)
最终,如果没有的需要手动填上
maven项目报错
没有找到javax.servlet.http.HttpServlet 的jar包
我们一会在pom.xml中加入即可
-
修改pom.xml 加入依赖,最终如下
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.oracle</groupId> <artifactId>ssm-maven</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>ssm-maven Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- Spring版本号 --> <spring.version>4.3.8.RELEASE</spring.version> </properties> <dependencies> <!-- 添加Servlet支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> <!-- JSP标准标签库 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- Spring相关包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</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-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-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!-- AOP相关包 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.0</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.0</version> </dependency> <!-- MyBatis相关包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <!-- MySQL相关包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency> <!-- 数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.20</version> </dependency> <!-- Spring集成MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.3</version> </dependency> <!-- 日志相关包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dependency> <!-- 单元测试相关包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.3</version> </dependency> </dependencies> <build> <finalName>ssm-maven</finalName> </build> </project>
-
建立如下包结构
配置文件放入 src/main/resources
分别是
- jdbc.properties
- log4j.properties
- spring-application.xml
- spring-datasource.xml
- spring-mvc.xml
#jdbc.properties
jdbc_driver=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/mavenTest?useUnicode=true&characterEncoding=UTF-8
jdbc_user=root
jdbc_password=123456
#log4j.properties
#OFF FATAL ERROR WARN INFO DEBUG ALL
log4j.rootLogger=DEBUG,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%p]%-d{yyyy-MM-dd HH\:mm\:ss}[%c\:%L] %m%n
<!-- spring-application.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:mybatis="http://mybatis.org/schema/mybatis-spring"
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.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
<!-- 注解扫描路径,加载Service -->
<context:component-scan base-package="com.oracle.model.service"/>
</beans>
<!-- spring-datasource.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:context="http://www.springframework.org/schema/context"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
">
<!-- 引用jdbc.properties -->
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc_driver}"/>
<property name="url" value="${jdbc_url}"/>
<property name="username" value="${jdbc_user}"/>
<property name="password" value="${jdbc_password}"/>
</bean>
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
<property name="dataSource" ref="dataSource" ></property>
<!-- entity配置,entity以及entity的配置文件 -->
<property name="mapperLocations" value="classpath:com/oracle/entity/*Mapper.xml" />
</bean>
<!-- 配置扫描报,加载dao对象 -->
<mybatis:scan base-package="com.oracle.model.dao" />
</beans>
<!-- spring-mvc.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: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-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<!-- 打开springmvc映射器和适配器 -->
<mvc:annotation-driven/>
<!-- 扫描控制器 -->
<context:component-scan base-package="com.oracle.controller"/>
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/pages/" p:suffix=".jsp"/>
</beans>
- 在web.xml中配置springmvc(src/main/webapp/WEB-INF/下,在工程里Deploy Resources也映射了)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>sxnd-ssm</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置文件spring-application.xml和spring-datasource.xml -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-application.xml,classpath:spring-datasource.xml</param-value>
</context-param>
<!-- 配置springMVC -->
<servlet>
<servlet-name>springMvc</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>springMvc</servlet-name>
<url-pattern>/</url-pattern> <!-- 配置springMVC处理所有请求 -->
</servlet-mapping>
</web-app>
到这里,ssm环境便搭建完毕
下面测试进行简单测试
在com.oracle.controller下建立HelloWorldController,并且注解@Controller,@RequestMapping(“hello”)
写一个方法注解@RequestMapping(“world”),方法内返回一个视图
package com.oracle.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("hello")
public class HelloWorldController {
@RequestMapping("world")
public ModelAndView helloworld() {
ModelAndView view = new ModelAndView("HelloWorld");
return view;
}
}
我们访问 xxxx/hello/world,就会返回一个HelloWorld视图,在spring-mvc中配置了视图的前缀为"/pages/",后缀为".jsp",所以实际路径是 从网站根目录开始 /pages/HelloWorld.jsp ,我们在HelloWorld中输出一个 你好。
此次的过程为 : 视图发起请求 -》到控制器 -》 控制器返回一个视图
-
运行项目
访问
http://localhost:8080/ssm-maven/hello/world
参考链接
https://blog.csdn.net/kingyxfly/article/details/78942439
https://www.jianshu.com/p/f3c582edca2b
https://blog.csdn.net/qq_39530754/article/details/82561985
https://blog.51cto.com/85608547/2161548
https://blog.csdn.net/Romantic_321/article/details/80752331
https://blog.csdn.net/u010134382/article/details/84745304