java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > maven的ssm框架整合

基于maven的ssm框架整合的示例代码

作者:雨点的名字

本篇文章主要介绍了基于maven的ssm框架整合的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

基本概念

1.1、Spring

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、MyBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

第一步:通过maven建立一个web项目。

第二步:pom文件导入jar包

(1) pom.xml

我把我pom文件整个都拷贝来了,有些初始化就有的东西你要去掉,保留你自己pom生成的那份。

<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.test</groupId>
 <artifactId>ssm</artifactId>
 <packaging>war</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>ssm Maven Webapp</name>
 <url>http://maven.apache.org</url>
 
 <properties> 
  <!-- spring版本号 --> 
  <spring.version>4.0.2.RELEASE</spring.version> 
  <!-- mybatis版本号 --> 
  <mybatis.version>3.2.6</mybatis.version> 
  <!-- log4j日志文件管理包版本 --> 
  <slf4j.version>1.7.7</slf4j.version> 
  <log4j.version>1.2.17</log4j.version> 
 </properties> 
 
 <dependencies>
 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
 </dependency>
  <dependency> 
   <groupId>org.springframework</groupId> 
   <artifactId>spring-core</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-oxm</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-jdbc</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-aop</artifactId> 
   <version>${spring.version}</version> 
  </dependency> 
 
  <dependency> 
   <groupId>org.springframework</groupId> 
   <artifactId>spring-context-support</artifactId> 
   <version>${spring.version}</version> 
  </dependency> 
 
  <dependency> 
   <groupId>org.springframework</groupId> 
   <artifactId>spring-test</artifactId> 
   <version>${spring.version}</version> 
  </dependency> 
  <!-- mybatis核心包 --> 
  <dependency> 
   <groupId>org.mybatis</groupId> 
   <artifactId>mybatis</artifactId> 
   <version>${mybatis.version}</version> 
  </dependency> 
  <!-- mybatis/spring包 --> 
  <dependency> 
   <groupId>org.mybatis</groupId> 
   <artifactId>mybatis-spring</artifactId> 
   <version>1.2.2</version> 
  </dependency> 
  <!-- 导入java ee jar 包 --> 
  <dependency> 
   <groupId>javax</groupId> 
   <artifactId>javaee-api</artifactId> 
   <version>7.0</version> 
  </dependency> 
  <!-- 导入Mysql数据库链接jar包 --> 
  <dependency> 
   <groupId>mysql</groupId> 
   <artifactId>mysql-connector-java</artifactId> 
   <version>5.1.30</version> 
  </dependency> 
  <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --> 
  <dependency> 
   <groupId>commons-dbcp</groupId> 
   <artifactId>commons-dbcp</artifactId> 
   <version>1.2.2</version> 
  </dependency> 
  <!-- JSTL标签类 --> 
  <dependency> 
   <groupId>jstl</groupId> 
   <artifactId>jstl</artifactId> 
   <version>1.2</version> 
  </dependency> 
  <!-- 日志文件管理包 --> 
  <!-- log start --> 
  <dependency> 
   <groupId>log4j</groupId> 
   <artifactId>log4j</artifactId> 
   <version>${log4j.version}</version> 
  </dependency> 
   
   
  <!-- 格式化对象,方便输出日志 --> 
  <dependency> 
   <groupId>com.alibaba</groupId> 
   <artifactId>fastjson</artifactId> 
   <version>1.1.41</version> 
  </dependency> 
 
 
  <dependency> 
   <groupId>org.slf4j</groupId> 
   <artifactId>slf4j-api</artifactId> 
   <version>${slf4j.version}</version> 
  </dependency> 
 
  <dependency> 
   <groupId>org.slf4j</groupId> 
   <artifactId>slf4j-log4j12</artifactId> 
   <version>${slf4j.version}</version> 
  </dependency> 
  <!-- log end --> 
  <!-- 映入JSON --> 
  <dependency> 
   <groupId>org.codehaus.jackson</groupId> 
   <artifactId>jackson-mapper-asl</artifactId> 
   <version>1.9.13</version> 
  </dependency> 
  <!-- 上传组件包 --> 
  <dependency> 
   <groupId>commons-fileupload</groupId> 
   <artifactId>commons-fileupload</artifactId> 
   <version>1.3.1</version> 
  </dependency> 
  <dependency> 
   <groupId>commons-io</groupId> 
   <artifactId>commons-io</artifactId> 
   <version>2.4</version> 
  </dependency> 
  <dependency> 
   <groupId>commons-codec</groupId> 
   <artifactId>commons-codec</artifactId> 
   <version>1.9</version> 
  </dependency> 
 </dependencies>
 <build>
 <finalName>ssm</finalName>
 </build>
</project>

第三步:看整体的项目架构,先说明下我这里还没有有关springMVC的相关东西,因为我先整合sping-mybatis,在测试是否成功,成功在整合springMVC

第四步:建立model类

public class User {
 private int id;
 private String name;
 private String password;
 private String password2; 
/*提供set和get方法,toString方法*/
}

第五步:创建数据库,UserDao接口和mapper映射文件

(1)建立很简单的一张表

(2)UserDao接口

public interface UserDao {
  User findUserById(User user);
}

(3)UesrMapper.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命名空间,指向UserDao全路径-->
<mapper namespace="com.ssm.dao.UserDao">

 <!-- 根据id查询用户信息 -->
 <!-- 
  id:唯一标识 一个statement,和UserDao方法名一致
  #{}:表示 一个占位符,如果#{}中传入简单类型的参数,#{}中的名称随意
  parameterType:输入 参数的类型,和UserDao()里参数一致
  resultType:输出结果 类型,和UserDao()返回类型一致
  -->
 <select id="findUserById" parameterType="com.ssm.model.User" resultType="com.ssm.model.User">
  SELECT * FROM USER 
  <where>
  <if test="name != null">
   AND Name= #{name}
  </if>
  <if test="password != null">
   AND password= #{password}
  </if>
  </where> 
 </select>
 </mapper>

第五步:创建UserService和UserServiceImpl

(1)UserService

public interface UserService {
  public User getUserById(User user); 
}

(2)UserServiceImpl

import org.springframework.stereotype.Service;
import com.ssm.dao.UserDao;
import com.ssm.model.User;
import com.ssm.service.UserService;
@Service("userService")
public class UserServerImpl implements UserService {
 @Resource
 private UserDao userDao;
 public User getUserById(User user) {
  return this.userDao.findUserById(user);
 }
}

第六步:创建jdbc文件和log日志文件

(1)jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/test?useUnicode=true&&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

(2)log4j.properties

log4j.rootLogger=INFO,Console,File 
#定义日志输出目的地为控制台 
log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.Target=System.out 
#可以灵活地指定日志输出格式,下面一行是指定具体的格式 
log4j.appender.Console.layout = org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n 
 
#文件大小到达指定尺寸的时候产生一个新的文件 
log4j.appender.File = org.apache.log4j.RollingFileAppender 
#指定输出目录 
log4j.appender.File.File = logs/ssm.log 
#定义文件最大大小 
log4j.appender.File.MaxFileSize = 10MB 
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志 
log4j.appender.File.Threshold = ALL 
log4j.appender.File.layout = org.apache.log4j.PatternLayout 
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n 

第七步:整合spring-mybatis.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.1.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.1.xsd 
      http://www.springframework.org/schema/mvc 
      http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 
 <!-- 自动扫描 --> 
 <context:component-scan base-package="com.ssm" /> 
 <!-- 引入实现jdbc配置文件 --> 
 <bean id="propertyConfigurer" 
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
  <property name="location" value="classpath:jdbc.properties" /> 
 </bean> 
 
 <!-- 2.数据库连接池 -->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
  destroy-method="close"> 
  <property name="driverClassName" value="${jdbc.driver}" /> 
  <property name="url" value="${jdbc.url}" /> 
  <property name="username" value="${jdbc.username}" /> 
  <property name="password" value="${jdbc.password}" /> 
 </bean> 
 
  <!-- spring和MyBatis整合,通过spring来管理MyBatis的SqlSessionFactory会话工厂 -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
  <!-- 指定数据库连接池引用 -->
  <property name="dataSource" ref="dataSource" /> 
  <!-- 自动扫描mapping.xml文件 --> 
  <property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"></property> 
 </bean> 
 
 <!-- DAO接口所在包名,Spring会自动查找其下的类 --> 
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
  <property name="basePackage" value="com.ssm.dao" /> 
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> 
 </bean> 
 
 <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> 
 <bean id="transactionManager" 
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
  <property name="dataSource" ref="dataSource" /> 
 </bean> 
</beans>

第八步:建立测试类

经过以上步骤(log4j不配也没影响),我们已经完成了Spring和mybatis的整合,这样我们就可以编写一段测试代码来试试是否成功了。

测试类在src/test/java中建立,如果测试成功,表示Spring和Mybatis已经整合成功了。输出信息使用的是Log4j打印到控制台。

(1)TestMyBatis测试类

package ssm;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.ssm.model.User;
import com.ssm.service.UserService;

/*让测试运行于Spring测试环境*/
@RunWith(SpringJUnit4ClassRunner.class) 

/*用来指定加载的Spring配置文件的位置,会加载默认配置文件*/
@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })

public class TestMyBatis {

 @Resource(name = "userService") 
 private UserService userService;

 @Test
 public void test1() {
  User user=new User();
  user.setName("张三");
  user.setPassword("123");
  User user1 = userService.getUserById(user);
  System.out.println(user1.toString());
 }
}

最后!关键看后台输出,也是见证奇迹的时候,如果输出对象那说明你配置整合成功!

那接下来我们开始整合springMVC

第九步:配置springmvc.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.1.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.1.xsd 
      http://www.springframework.org/schema/mvc 
      http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 
 <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> 
 <context:component-scan base-package="com.ssm.controller" /> 
 <!--避免IE执行AJAX时,返回JSON出现下载文件 --> 
 <bean id="mappingJacksonHttpMessageConverter" 
  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
  <property name="supportedMediaTypes"> 
   <list> 
    <value>text/html;charset=UTF-8</value> 
   </list> 
  </property> 
 </bean> 
 <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> 
 <bean 
  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
  <property name="messageConverters"> 
   <list> 
    <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 --> 
   </list> 
  </property> 
 </bean> 
 <!-- 定义跳转的文件的前后缀 ,视图模式配置--> 
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
  <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> 
  <property name="prefix" value="/WEB-INF/jsp/" /> 
  <property name="suffix" value=".jsp" /> 
 </bean> 
  
 <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> 
 <bean id="multipartResolver" 
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
  <!-- 默认编码 --> 
  <property name="defaultEncoding" value="utf-8" /> 
  <!-- 文件大小最大值 --> 
  <property name="maxUploadSize" value="10485760000" /> 
  <!-- 内存中的最大值 --> 
  <property name="maxInMemorySize" value="40960" /> 
 </bean> 
 
</beans>

第十步:配置web.xml文件

这里面对spring-mybatis.xml的引入以及配置的spring-mvc的Servlet就是为了完成SSM整合,之前2框架整合不需要在此处进行任何配置。

<?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_3_0.xsd" 
 version="3.0"> 
 <display-name>Archetype Created Web Application</display-name> 
 <!-- Spring和mybatis的配置文件 --> 
 <context-param> 
  <param-name>contextConfigLocation</param-name> 
  <param-value>classpath:spring-mybatis.xml</param-value> 
 </context-param> 
 <!-- 编码过滤器 --> 
 <filter> 
  <filter-name>encodingFilter</filter-name> 
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
  <async-supported>true</async-supported> 
  <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> 
 <!-- 防止Spring内存溢出监听器 --> 
 <listener> 
  <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> 
 </listener> 
 
 <!-- Spring MVC servlet --> 
 <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:springmvc.xml</param-value> 
  </init-param> 
  <load-on-startup>1</load-on-startup> 
  <async-supported>true</async-supported> 
 </servlet> 
 <servlet-mapping> 
  <servlet-name>SpringMVC</servlet-name> 
  <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> 
  <url-pattern>/</url-pattern> 
 </servlet-mapping> 
 <welcome-file-list> 
  <welcome-file>/index.jsp</welcome-file> 
 </welcome-file-list> 
 
</web-app>

第十一步最后测试:

(1) 先写login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<html>
<head>
<title>用户登录:</title>
</head>
<body>
<form action="login">
<label>用户名:</label>
<input type="text" id="username" name="username"></input><br><br>
<label>密码:</label>
<input type="text" id="password" name="password"></input><br><br>
<input type="submit" value="登录"/>
</form>
</body>
</html>

界面:

(2)在写UserController

import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.ssm.dao.UserDao;
import com.ssm.model.User;
@Controller
public class UserController {
 @Resource
 private UserDao userDao;  
@RequestMapping("/jsp/login") 
public String login(HttpServletRequest request){
 String username=request.getParameter("username");
 String password=request.getParameter("password");
 User user=new User();
 //根据用户名和学生查询数据库
 user.setName(username);
 user.setPassword(password);
  User users=userDao.findUserById(user);
 //如果有学生就说明登录成功
 if(users!=null){
  return "susscss";
 }
 //这个jsp我没有写,大家知道就好,你们可以自己写
 return "err";
} 
}

(3)最后susscss.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<html>
<body>
<P>用户账号密码正确,登录成功</P>
</body>
</html>

完美!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文