博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用IDEA整合SSM框架
阅读量:5024 次
发布时间:2019-06-12

本文共 13858 字,大约阅读时间需要 46 分钟。

一、安装环境和开发工具

在整合Spring,SpringMVCMyBatis 的过程中,很容易遇到一些小问题,因此记录下整合过程。

首先是安装环境和开发工具,如下:

  • Window 7
  • Jdk 1.8
  • MySql 8.0
  • Maven 3.5.4
  • Tomcat 8.5.34
  • IntelliJ IDEA 2018

二、整体项目结构

整个项目在Maven WebApp模板工程的基础上构建,不同类型的文件放置于不同的包或者路径下,全部配置完成后的工程结构如下图所示:

e4eff812gy1fwso417uj6j20ax0kpglm.jpg

不同路径下的文件归类说明如下表(classpath相当于resources文件夹):

包名/路径名 作用
controller 存放控制器
mapper DAO层接口
pojo 实体类
service 业务类(接口+实现)
/com/cr/mapper 对应mapper下接口的xml文件
/spring 与spring相关的配置文件
/webapp/jsp 存放jsp文件
/*.properties 资源文件

三、配置步骤

1、添加Maven依赖

  • 新建一个Maven WebApp工程,在pom.xml添加依赖,主要包括spring、springmvc、 mybatis、mybatis-spring 、servlet 、mysql 等项的jar包。

pom.xml

4.0.0
com.cr
SSMTest
1.0-SNAPSHOT
war
SSMTest Maven Webapp
http://www.example.com
UTF-8
1.8
1.8
5.0.8.RELEASE
2.9.3
org.springframework
spring-webmvc
${spring.version}
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet
jstl
1.2
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
mysql
mysql-connector-java
5.1.46
org.mybatis
mybatis
3.2.6
org.mybatis
mybatis-spring
1.3.0
com.github.pagehelper
pagehelper
5.1.2
joda-time
joda-time
2.9.9
commons-codec
commons-codec
1.10
org.slf4j
slf4j-api
1.7.12
org.slf4j
slf4j-log4j12
1.7.12
log4j
log4j
1.2.17
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
com.fasterxml.jackson.core
jackson-annotations
${jackson.version}
com.fasterxml.jackson.core
jackson-core
${jackson.version}
net.sf.json-lib
json-lib
2.4
jdk15
org.codehaus.jackson
jackson-core-asl
1.9.13
org.codehaus.jackson
jackson-mapper-asl
1.9.13
commons-fileupload
commons-fileupload
1.3.1
com.mchange
c3p0
0.9.2.1
commons-dbcp
commons-dbcp
1.2.2
SSMTest
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.7.0
maven-surefire-plugin
2.20.1
maven-war-plugin
3.2.0
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2

添加完成后的maven依赖如下:

e4eff812gy1fwsrj05xh2j20bv0gfgll.jpg

2、配置web.xml

  • spring上下文文件路径配置

    contextConfigLocation
    classpath:spring/applicationContext.xml

    这里指定了上下文配置文件为spring文件夹下的applicationContext.xml,稍后再配置这个文件。

  • Log4j配置

    log4jRefreshInterval
    60000
  • ContextLoaderListener监听器配置

    org.springframework.web.context.ContextLoaderListener
    org.springframework.web.util.IntrospectorCleanupListener
  • DispatcherServlet前置控制器配置

    springmvc
    org.springframework.web.servlet.DispatcherServlet
    contextConfigLocation
    classpath:spring/springmvc-servlet.xml
    1
    true

    springmvc框架默认自动找到/WEB-INF/[servlet-name]-servlet.xml作为配置文件载入web工程中 这里手动设置位置为spring文件夹下的springmvc-servlet.xml,稍后再配置这个文件。

  • Servlet拦截设置

    springmvc
    /

web.xml

contextConfigLocation
classpath:spring/applicationContext.xml
log4jRefreshInterval
60000
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc-servlet.xml
1
true
springmvc
/

3、applicationContext.xml配置

  • 在spring文件夹下建立applicationContext.xml

applicationContext.xml

  • 这里引入spring和其他整合的配置文件 比如spring-mybatis.xml等,接下来在spring文件夹下新建一个spring-mybatis.xml文件

4、spring-mybatis.xml配置

  • 配置自动扫描,需要扫描到控制层服务层,刚开始我这里写成了com.cr.mapper,结果导致控制器不能注入

  • 新建数据库资源文件jdbc.properties,针对不同的数据库需要修改配置 同时要注意匹配数据库的版本号,比如我安装的是MySQL 8.0,之前由于驱动版本弄错了,所以总是连接数据库失败,后来改成5.1.46才解决了问题

    # 针对不同的数据库需要修改配置 同时要注意匹配数据库的版本号mysql.driver=com.mysql.jdbc.Drivermysql.url=jdbc:mysql://localhost:3306/mybatismysql.username=rootmysql.password=XXXX#定义初始连接数dbcp.initialSize=0#定义最大连接数dbcp.maxActive=20#定义最大空闲dbcp.maxIdle=20#定义最小空闲dbcp.minIdle=1#定义最长等待时间dbcp.maxWait=60000
  • 引入数据库资源文件

  • 配置数据库MySQL

  • 整合Spring和MyBatis,注意路径的书写方式是"/"不是"."

  • 扫描持久层接口

  • 数据库事务管理

spring-mybatis.xml

5、springmvc-servlet.xml配置

springmvc-servlet.xml

6、建立实体类

  • 在pojo包下新建一个实体User类,包含用户名username 和 密码password 字段,alt + insert 生成 setter和getter方法

User.java

package com.cr.pojo;public class User {    private String username;    private String password;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}

7、DAO层建立

  • 创建测试用表t_user,并添加两条数据

    e4eff812gy1fwssxgcy24j20n402cweb.jpg

  • 在mapper包下新建一个UserMapper接口,包含一个select查询方法,可以查询用户是否存在,若不存在返回null

    UserMapper.java

    package com.cr.mapper;import com.cr.pojo.User;public interface UserMapper {    User select(User user);}
  • 创建UserMapper和mybatis映射文件 UserMapper.xml,路径是resource/com/cr/mapper

    UserMapper.xml

8、服务层建立

  • 建立UserService接口,位于service包下

    UserService.java

    package com.cr.service;import com.cr.pojo.User;public interface UserService {    /**     * 根据user信息检查数据库中是否存在该用户     */    User get(User user);}
  • 在service包下建立impl子包,添加实现类UserServiceImpl

    UserServiceImpl.java

    package com.cr.service.impl;import com.cr.mapper.UserMapper;import com.cr.pojo.User;import com.cr.service.UserService;import org.springframework.stereotype.Service;import javax.annotation.Resource;// @Service用于业务层 功能等同于@component@Service("userService")public class UserServiceImpl implements UserService {    @Resource    private UserMapper userMapper;    @Override    public User get(User user) {        // 通过Mapper的select方法查询用户        return userMapper.select(user);    }}

9、建立控制器

  • 在controller包下建立控制器UserController,根据表单的用户名和密码,在数据中匹配,如果存在该用户,则跳转到登录成功界面user.jsp,如果用户不存在则返回null,重定向回登录界面,以便于重新登录。

UserController.java

package com.cr.controller;import com.cr.pojo.User;import com.cr.service.UserService;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import javax.annotation.Resource;// spring-mybatis.xml和springmvc-servlet.xml都配置了扫描控制层@Controllerpublic class UserController {    // 注入UserService    @Resource    private UserService userService;    @RequestMapping(value = "/login")    public String login(User user) {        ModelAndView mv = new ModelAndView();        System.out.println("开始查询---");        user = userService.get(user);        if (user != null) {            System.out.println("查到的User: " + user.getUsername());            mv.addObject("user", user);            // 转到user.jsp用户界面            return "user";        } else {            System.out.println("未查到此用户");            // 查不到用户信息,则重定向回登录界面            System.out.println("重定向回登录界面---");            return "login";        }    }}

10、建立Jsp页面

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    login

用户登录界面

用户信息

Tom 123

Jack 456

用户名
密码

user.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    User

用户登录成功

欢迎您: ${user}

四、部署项目

1、Tomcat配置

e4eff812gy1fwsukh27f2j20tc0j7t95.jpg

e4eff812gy1fwsumk20pxj20tn0jnmx7.jpg

2、启动服务器

  • 浏览器访问http://localhost:8080/login

    e4eff812gy1fwsutuj71zj207409wjr7.jpg

  • 填写错误的用户名或者密码,浏览器将重新返回登录界面,控制台显示如下:

    e4eff812gy1fwsuspm2ubj20e904qmwy.jpg

  • 填写正确的用户名Tom和密码123,跳转到登录成功界面user.jsp,显示如下:

    e4eff812gy1fwsuvok07jj20dq064glg.jpg

  • 以上说明SSM框架整合成功,项目地址:https://github.com/wychencr/SSM-Test

五、一些注意事项

  • MySQL的驱动要匹配本机安装的版本

  • resources文件夹要被标记为Resource Root

  • xml配置文件中的classpath相当于/resources

  • IDEA可能会提示上下文配置文件没有添加,只要打开工程结构选项,把当前xml文件添加到工程中即可

  • 注意各个xml配置文件中扫描包的位置,如果有遗漏就会报错

  • 注意各个jar包的版本问题,我原来使用最新的Mybatis 3.4.6就会出现报错

    java.lang.IllegalAccessError: org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()

    修改版本为3.2.6后解决问题

欢迎访问我的个人博客: https://chenran.tk/

转载于:https://www.cnblogs.com/Ran-Chen/p/9892700.html

你可能感兴趣的文章
Nodejs学习总结 -Express入门(一)
查看>>
web前端优化
查看>>
ssh 连接原理及ssh-keygen
查看>>
vs2013编译qt程序后中文出现乱码
查看>>
【转】IOS数据库操作SQLite3使用详解
查看>>
Android官方技术文档翻译——ApplicationId 与 PackageName
查看>>
设计网站大全
查看>>
JVM CUP占用率过高排除方法,windows环境
查看>>
【转】JAVA字符串格式化-String.format()的使用
查看>>
【转】ButterKnife基本使用--不错
查看>>
【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”...
查看>>
函数中关于const关键字使用的注意事项
查看>>
微信架构(转)
查看>>
Web项目中的路径问题
查看>>
js随机数的取整
查看>>
关于解析漏洞
查看>>
十大经典预测算法(六)---集成学习(模型融合算法)
查看>>
用php做一个简单的注册用户功能
查看>>
一款基于css3的3D图片翻页切换特效
查看>>
Feign使用Hystrix无效原因及解决方法
查看>>