SSM框架的搭建(Spring+SpringMVC+Mybatis+DB2)
来源:互联网 发布:linux操作系统入门 编辑:程序博客网 时间:2024/06/01 09:40
近两天一直想自己搭建一个SSM框架来练练手,按照网上的教程始终无法调通,总是报错,经过资料的翻阅和查找终于调通了测试案例。
将测试成功后的代码粘贴如下:
代码的结构,项目报红叉不影响使用,可以自行解决
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.cn</groupId> <artifactId>myProject</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>myProject Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 单元测试 --> <!-- <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> --> <!-- 1.日志 --> <!-- 实现slf4j接口并整合 --> <!-- <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version> </dependency> --> <!-- 日志文件管理包 --> <!-- log start --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</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>1.7.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <!-- log end --> <!-- 2.数据库 --> <!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> <scope>runtime</scope> </dependency> --> <dependency> <groupId>com.ibm.db2</groupId> <artifactId>db2jcc</artifactId> <version>9.7.0.4</version> </dependency> <!-- <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.1</version> </dependency> --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- DAO: MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- 3.Servlet web --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.9</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency> <!-- 4.Spring --> <!-- 1)Spring核心 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!-- 2)Spring DAO层 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!-- 3)Spring web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!-- 4)Spring test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!-- redis客户端:Jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version>1.0.0</version> </dependency> <!-- Map工具类 --> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> <finalName>myProject</finalName> </build></project>
spring-dao.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" 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"> <!-- 扫描service包下所有使用注解的类型 --> <context:component-scan base-package="com.soecode.lyf.dao" /> <!-- 配置整合mybatis过程 --> <!-- 1.配置数据库相关参数properties的属性:${url} --> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- 2.数据库连接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- 3.配置SqlSessionFactory对象 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource" /> <!-- 配置MyBaties全局配置文件:mybatis-config.xml --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 扫描entity包 使用别名 --> <property name="typeAliasesPackage" value="com.soecode.lyf.entity" /> <!-- 扫描sql配置文件:mapper需要的xml文件 --> <property name="mapperLocations" value="classpath:com/soecode/lyf/mapper/*.xml" /> </bean> <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <!-- 给出需要扫描Dao接口包 --> <property name="basePackage" value="com.soecode.lyf.dao" /> </bean></beans>
spring-service.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" 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://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" default-autowire="byName"> <!-- 扫描service包下所有使用注解的类型 --> <context:component-scan base-package="com.soecode.lyf.service" /> <context:component-scan base-package="com.soecode.lyf.service.impl" /> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置基于注解的声明式事务 --> <tx:annotation-driven transaction-manager="transactionManager" /></beans>
spring-web.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/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://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" default-autowire="byName"> <!-- 配置SpringMVC --> <!-- 1.开启SpringMVC注解模式 --> <!-- 简化配置: (1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter (2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持 --> <mvc:annotation-driven /> <!-- 2.静态资源默认servlet配置 (1)加入对静态资源的处理:js,gif,png (2)允许使用"/"做整体映射 --> <mvc:default-servlet-handler/> <!-- 3.配置jsp 显示ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 4.扫描web相关的bean --> <context:component-scan base-package="com.soecode.lyf.web" /></beans>
jdbc.properties配置如下:
jdbc.driverClassName=com.ibm.db2.jcc.DB2Driverjdbc.url=jdbc:db2://XX.XX.XX.XXX:60004/TESTDBjdbc.username=suerjdbc.password=a123
log4j.properties配置如下:
log4j.rootLogger=DEBUG,INFO,Console,File #\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u5730\u4E3A\u63A7\u5236\u53F0 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out #\u53EF\u4EE5\u7075\u6D3B\u5730\u6307\u5B9A\u65E5\u5FD7\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0B\u9762\u4E00\u884C\u662F\u6307\u5B9A\u5177\u4F53\u7684\u683C\u5F0F log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n #\u6587\u4EF6\u5927\u5C0F\u5230\u8FBE\u6307\u5B9A\u5C3A\u5BF8\u7684\u65F6\u5019\u4EA7\u751F\u4E00\u4E2A\u65B0\u7684\u6587\u4EF6 log4j.appender.File = org.apache.log4j.RollingFileAppender #\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55 log4j.appender.File.File = logs/ssm.log #\u5B9A\u4E49\u6587\u4EF6\u6700\u5927\u5927\u5C0F log4j.appender.File.MaxFileSize = 10MB # \u8F93\u51FA\u6240\u4EE5\u65E5\u5FD7\uFF0C\u5982\u679C\u6362\u6210DEBUG\u8868\u793A\u8F93\u51FADEBUG\u4EE5\u4E0A\u7EA7\u522B\u65E5\u5FD7 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
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> <!-- 配置全局属性 --> <settings> <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 --> <setting name="useGeneratedKeys" value="true" /> <!-- 使用列别名替换列名 默认:true --> <setting name="useColumnLabel" value="true" /> <!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} --> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings></configuration>
web.xml配置如下:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <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/spring-*.xml</param-value > </init-param> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name > <url-pattern>/</url-pattern> </servlet-mapping></web-app>
IUser代码如下(表格自己创建):
package com.soecode.lyf.entity;public class IUser { private int id; private String userName; private String userAge; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserAge() { return userAge; } public void setUserAge(String userAge) { this.userAge = userAge; } @Override public String toString() { return "IUser [id=" + id + ", userName=" + userName + ", userAge=" + userAge + "]"; }}
IUserDao代码如下:
package com.soecode.lyf.dao;import com.soecode.lyf.entity.IUser;public interface IUserDao { IUser queryById(int id);}
IUserDao.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"><mapper namespace="com.soecode.lyf.dao.IUserDao"> <select id="queryById" resultType="com.soecode.lyf.entity.IUser" parameterType="int"> SELECT id, username, userage FROM IUSER WHERE id = #{id} </select></mapper>
IUserDaoTest的代码如下:
package com.soecode.lyf.dao;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.soecode.lyf.entity.IUser;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(value="classpath:spring/spring-dao.xml")public class IUserDaoTest { @Autowired private IUserDao iUserDao; @Test public void testQueryById() throws Exception { int bookId = 1; System.out.println("开始查询"); IUser iUser = iUserDao.queryById(bookId); System.out.println("查询结束"); System.out.println(iUser); }}
运行的结果:
开始查询14:31:22.815 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession14:31:22.815 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@617f7b42] was not registered for synchronization because synchronization is not active14:31:26.075 [main] DEBUG o.m.s.t.SpringManagedTransaction - JDBC Connection [jdbc:db2://10.27.90.7:60004/SECDB, UserName=secusr, IBM DB2 JDBC Universal Driver Architecture] will not be managed by Spring14:31:26.091 [main] DEBUG c.soecode.lyf.dao.IUserDao.queryById - ==> Preparing: SELECT id, username, userage FROM IUSER WHERE id = ? 14:31:26.170 [main] DEBUG c.soecode.lyf.dao.IUserDao.queryById - ==> Parameters: 1(Integer)14:31:26.232 [main] DEBUG c.soecode.lyf.dao.IUserDao.queryById - <== Total: 114:31:26.232 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@617f7b42]查询结束IUser [id=1, userName=小名, userAge=10]
IUserDaoTest测试日志代码如下:
package com.soecode.lyf.dao;import org.apache.log4j.Logger;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.soecode.lyf.entity.IUser;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(value="classpath:spring/spring-dao.xml")public class IUserDaoTest { private static Logger logger = Logger.getLogger(IUserDaoTest.class); @Autowired private IUserDao iUserDao; @Test public void testQueryById() throws Exception { int bookId = 1; System.out.println("开始查询"); IUser iUser = iUserDao.queryById(bookId); logger.debug("asasasa"); logger.info("afdasd"); logger.error("121122"); System.out.println("查询结束"); System.out.println(iUser); }}
IUserController的代码如下:
package com.soecode.lyf.web;import javax.annotation.Resource;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.soecode.lyf.entity.IUser;import com.soecode.lyf.service.IUserService;@Controller@RequestMapping("/main")public class IUserController { private static final String main_page="main"; @Resource private IUserService iUserService; @RequestMapping("/queryById") public ModelAndView queryById(){ System.out.println("进入方法、、、、、、、、、、、、、"); ModelAndView mv = new ModelAndView(); IUser user = iUserService.queryById(1); mv.addObject("user", user); mv.setViewName(main_page); return mv; }}
WEB-INF/jsp/main.jsp界面代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><h1>这里是首页</h1></body></html>
运行结果是:
阅读全文
0 0
- SSM框架的搭建(Spring+SpringMVC+Mybatis+DB2)
- Spring,SpringMVC,Mybatis (SSM)框架的搭建
- SSM框架搭建(Spring+SpringMVC+MyBatis)
- 整合Spring SpringMvc Mybatis,搭建SSM框架
- 搭建ssm框架:Spring SpringMVC Mybatis
- Spring + SpringMvc + Mybatis 搭建SSM框架
- 搭建SSM框架:SpringMVC + Spring + MyBatis
- SSM(spring +springmvc +mybatis)框架搭建
- SSM框架搭建(SpringMVC+Spring+Mybatis)
- SSM(Spring+SpringMVC+Mybatis)框架搭建
- 使用Spring、SpringMvc、MyBatis搭建SSM框架
- SSM(SpringMVC+Spring+Mybatis)框架搭建
- 使用Spring、SpringMvc、MyBatis搭建SSM框架
- 使用Spring、SpringMvc、MyBatis搭建SSM框架
- 基于Maven的SSM框架的搭建(Spring+SpringMVC+MyBatis)
- java开发SSM框架的搭建(SpringMVC+Spring+MyBatis)
- SSM(Spring+SpringMVC+MyBatis)开发框架的搭建个人总结
- ssm(springmvc+spring+mybatis)框架的搭建
- 文章标题
- 二叉树 二叉树带虚结点表示的先序遍历可以确定唯一一颗二叉树
- window配置hosts
- js 三级联动篇
- 结构体与函数
- SSM框架的搭建(Spring+SpringMVC+Mybatis+DB2)
- Apache Kylin在百度地图的实践
- GBDT和RF
- mybatis批量修改 (update的值也是动态的)
- 使用kindeditor和Struts开发时遇到错误
- 第九章作业
- git rebase 使用详解
- 部署 ShowDoc 到自己的服务器
- HTTP中的一些属性的用法