maven整合SSM
最终项目目录结构
1.导包
1.1Dependencies导包(本地jar包库中有jar包)
打开pom.xml文件使用Dependencies导入上图所示jar包(需要本地的jar包库中有上图所示jar 包,若没有,可以使用下面的方法。)
1.2直接修改pom.xml文件导包(需要连网下载jar包)
pom.xml文件
<dependencies>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>net.sourceforge.cglib</groupId>
<artifactId>com.springsource.net.sf.cglib</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>com.springsource.org.aspectj.weaver</artifactId>
<version>1.6.8.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
2.配置web.xml文件
web.xml文件
<!-- 配置DispatcherServlet:SpringMVC核心控制器 -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 设置spring-mvc配置问价路径 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- REST风格的编写方式要求路径必须为/ -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 设置spring配置文件的路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 设置统一字符集 -->
<!-- 解决页面和服务器的中文传递乱码问题 -->
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 支持REST风格的过滤器:可以将POST请求转换为PUT或DELETE请求 -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.编写配置文件(放到resources文件夹下)
3.1jdbc数据库连接基础信息配置文件
文件名:jdbc.properties
//用户名
jdbc.username=root
//密码
jdbc.password=root
//driverClass对应不同的数据库使用不同的driverClass
jdbc.driverClass=com.mysql.jdbc.Driver
//路径对应自己的数据库名和路径
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/chtest?characterEncoding=UTF-8
jdbc.initialPoolSize=5
jdbc.minPoolSize=2
jdbc.maxPoolSize=10
3.2log4j配置文件(xml)
文件名:log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT"
class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
3.3springmvc配置文件
文件名: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: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.0.xsd
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.0.xsd">
<!-- 包扫描 -->
<context:component-scan
base-package="com.ch.ssm" use-default-filters="true">
<!-- 只扫描handler -->
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/views/"></property>
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 配置处理静态资源 -->
<mvc:default-servlet-handler />
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
3.4spring整合mybatis配置文件
文件名:spring.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:tx="http://www.springframework.org/schema/tx"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring-1.2.xsd
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.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- 配置包扫描 -->
<context:component-scan
base-package="com.ch.ssm">
<!-- 不扫描handler -->
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 引入外部属性文件 -->
<!-- 指定文件位置 -->
<context:property-placeholder
location="classpath:jdbc.properties" />
<!-- 从properties属性文件中引入属性值 -->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="jdbcUrl" value="${jdbc.jdbcUrl}" />
<property name="driverClass" value="${jdbc.driverClass}" />
<property name="initialPoolSize"
value="${jdbc.initialPoolSize}" />
<property name="minPoolSize" value="${jdbc.minPoolSize}" />
<property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 开启事务注解支持 -->
<tx:annotation-driven />
<!-- 整合mybatis -->
<bean id="sqlSessionFactoryBean"
class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 配置mybatis全局配置文件的路径 -->
<property name="configLocation"
value="classpath:mybatis-config.xml"></property>
<!-- 配置mybatis映射文件的路径 -->
<property name="mapperLocations"
value="classpath:mapping/*.xml"></property>
</bean>
<!-- 扫描mapper接口 -->
<mybatis-spring:scan
base-package="com.ch.ssm.dao" />
</beans>
3.5mybatis配置文件(可以用来放一些mybatis的快捷插件,例如:mybatis的分页插件)
文件名:mybatis-config.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>
</configuration>
注意:在配置插件之前先导入所用插件的jar包,这里不做配置
到此SSM整合完毕,数据库中创建表进行测试
4.测试
4.1新建表(我使用的是mysql数据库,数据库名:chtest,使用的数据库和数据库名有不同的修改jdbc配置文件中的信息。)
表名:person
俩个属性:id,name
向表中添加几条数据
4.2实现查询功能测试
创建实体类
package com.ch.ssm.beans;
public class Person {
private int id;
private String name;
//无参构造方法
//有参构造方法
//get()和set()方法
//toString()方法
}
创建dao层接口
package com.ch.ssm.dao;
import java.util.List;
import com.ch.ssm.beans.Person;
public interface PersonDao {
//查询全部
List<Person> findAll();
}
mapper映射文件(在resources文件夹下创建mapping文件夹)
<?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.ch.ssm.dao.PersonDao">
<select id="findAll" resultType="com.ch.ssm.beans.Person">
select * from person
</select>
</mapper>
service层代码
Service接口
package com.ch.ssm.service;
import java.util.List;
import com.ch.ssm.beans.Person;
public interface PersonService {
//查询全部
List<Person> findAll();
}
Service实现类
package com.ch.ssm.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ch.ssm.beans.Person;
import com.ch.ssm.dao.PersonDao;
import com.ch.ssm.service.PersonService;
@Service("personService")
public class PersonServiceImpl implements PersonService {
@Autowired
PersonDao personDao;
public List<Person> findAll() {
List<Person> persons = personDao.findAll();
return persons;
}
}
Controller层代码
package com.ch.ssm.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.ch.ssm.beans.Person;
import com.ch.ssm.service.PersonService;
@Controller
public class PersonController {
@Autowired
PersonService personService;
@RequestMapping(value = "/persons",method = RequestMethod.GET)
public String findAll(Map<String, Object> map) {
List<Person> persons = personService.findAll();
map.put("persons", persons);
return "list";
}
}
index.jsp(webapp文件夹下),list.jsp(views文件夹下)
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/persons">显示所有</a>
</body>
</html>
注意这里创建jsp文件时可能会报错,是因为没有导入servlet的部分jar包,按照下面的方式操作一下就行
鼠标右击项目–>Properties–>Target Runtimes
勾选服务器,Apply一下就好了
list.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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" cellpadding="10" cellspacing="0"
style="text-align: center;">
<thead>
<tr>
<td>员工ID</td>
<td>姓名</td>
</tr>
</thead>
<tbody>
<c:if test="${not empty requestScope.persons }">
<c:forEach items="${requestScope.persons }" var="person" varStatus="i">
<tr>
<td>${person.id }</td>
<td>${person.name }</td>
</tr>
</c:forEach>
</c:if>
</tbody>
</table>
</body>
</html>
测试工作准备完成部署项目进行测试
地址栏输入:http://localhost:8080/CRUD01/
点击显示所有