首页 > 开发 > Java > 正文

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

2024-07-13 10:15:15
字体:
来源:转载
供稿:网友

基本概念

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

maven,ssm框架整合,maven整合ssm框架配置

第四步:建立model类

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

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

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

maven,ssm框架整合,maven整合ssm框架配置

(2)UserDao接口

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

(3)UesrMapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//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.Driverjdbc.url=jdbc/:mysql/://localhost/:3306/test?useUnicode=true&&characterEncoding=UTF-8jdbc.username=rootjdbc.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()); }}

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

maven,ssm框架整合,maven整合ssm框架配置

那接下来我们开始整合springMVC

maven,ssm框架整合,maven整合ssm框架配置

第九步:配置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>

界面:

maven,ssm框架整合,maven整合ssm框架配置

(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;@Controllerpublic 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>

完美!

maven,ssm框架整合,maven整合ssm框架配置

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表