博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring + SpringMVC + Mybatis + Shiro 整合(上)
阅读量:6705 次
发布时间:2019-06-25

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

  hot3.png

    最近一直用springboot开发,今天突然想用ssm框架开发一下东西,发现有点忘了步骤,懒人工具SpringBoot使用多了还是会让人退化啊,于是准备从头理一遍ssm整合,最后再加上一个Shiro认证和权限框架。

    工具:IDEA 2017.2.1

    框架:Spring 4.3.10RELEASE,Mybatis 3.4.4 ,Shiro 最新版1.3.2,Maven3.3.9

    源码地址:

预备工作

首先新建一个动态的Maven WEB模块(IDEA中的Module【模块】相当于eclipse中的Project)

192735_XRiD_3017023.png

选中如图的选项,点击next

192914_VxpS_3017023.png

一直下一步到最后一步,配置目录

193027_F8mo_3017023.png

点击finish,完成,等待构建完成,如图

193210_xBIV_3017023.png

和标准的maven目录相差目录需要手动补全,点击菜单栏中的File--Project Structure--Module--ssms

将目录补全,我这里先不补test文件夹,需要的时候再添加,我的结构图

193719_DGJ2_3017023.png

新建controller(控制器)、service(业务逻辑层)、dao(数据访问层)、commons(通用工具类)、entity(实体类)包,结构如下

194336_AEVc_3017023.png

好的,结构搭建好了,然后开始动手整合吧,

第一步:导入jar包

1.    首先通过Maven导入Spring和SpringMVC的相关jar包

4.0.0
xin.sunzy
ssms
war
v1.0.0
ssms Maven Webapp
http://maven.apache.org
4.3.10.RELEASE
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-tx
${spring.version}
javax.servlet
jsp-api
LATEST
provided
javax.servlet
servlet-api
LATEST
provided
junit
junit
4.12
test
ssms

2.     配置web.xml文件

Archetype Created Web Application
contextConfigLocation
classpath:config/spring-context.xml
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
CharacterEncodingFilter
/*
org.springframework.web.context.ContextLoaderListener
spring-mvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:config/spring-mvc.xml
1
spring-mvc
/

3.    编写spring-context.xml和spring-mvc.xml文件

第二步:编写一个Controller类和配置tomcat服务器

1.    编写Controller类

在xin.sunzy.ssms.controller包中编写MyController.java

package xin.sunzy.ssms.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class TestController {    @ResponseBody    @RequestMapping("/test")    public String test(){        return "hello world";    }}

2.    配置tomcat

204718_Vf1b_3017023.png

204744_qgbD_3017023.png

配置如上,比较简单,配置好后点击启动,访问返回如下

204922_sHCc_3017023.png

到这里spring和springmvc就整合完成了

第三步:整合Mybatis

    单独的使用mybatis,需要在mybatis-config.xml配置数据源、配置mapper文件的扫描路径等,在spring中集成mybatis就是把这些配置文件集成到spring的配置文件中去。

1.    导入mybatis的jar包

org.mybatis
mybatis
${mybatis.version}
org.mybatis.generator
mybatis-generator-core
1.3.2
jar
test
com.alibaba
druid
1.0.18
org.mybatis
mybatis-spring
1.3.0
mysql
mysql-connector-java
5.1.30
log4j
log4j
${log4j.version}
com.alibaba
fastjson
1.1.41
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
com.fasterxml.jackson.core
jackson-databind
2.8.9

2.    新建一个spring-mybatis.xml

    这个文件就是用来完成spring和mybatis的整合的。这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库。注释也很详细,大家看看就明白了。

spring-mybatis.xml

 数据源的配置文件druid.properties

spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url = jdbc:mysql://127.0.0.1:3306/ssms?useUnicode=true&characterEncoding=utf-8&useSSL=truespring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driver-class-name = com.mysql.jdbc.Driverspring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20spring.datasource.maxWait=60000spring.datasource.timeBetweenEvictionRunsMillis=60000spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=SELECT 1 FROM DUALspring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=falsespring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20spring.datasource.filters=stat,wall,log4jspring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000spring.datasource.useGlobalDataSourceStat=true

    还有别忘了在spring-context.xml文件中引入spring-mybatis.xml文件,否则mybatis整合不进去,怎么引入呢,看图

230119_2nqp_3017023.png

3.    新建mybatis-config.xml文件

    这一步可有可无,这些都可以在spring-mybatis.xml文件中配置完成,为了查找方便,我还是单独拎出来了,个人喜欢模块化的配置。

4.    新建Dao接口和实现类

    首先需要在数据库中建一张表,我建了一张很简单的表valid,仅做测试使用

    224534_R9MM_3017023.png

    然后新建接口IValidDao和实现类ValidDao,这个表太简单了,这里就直接使用注解了,关于使用mapper.xml的使用,在下面的整合shiro中还会用到,对于简单的sql使用注解会非常省时,对于复杂的sql语句使用xml文件会比较方便。

package xin.sunzy.ssms.dao.intf;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;import org.springframework.stereotype.Repository;import xin.sunzy.ssms.entity.po.Valid;@Mapper@Repositorypublic interface IValidDao {    /**     * 由主键获取对象     * @return     * @throws Exception     */    @Select("select * from valid where id = #{id}")    Valid getValidByPrimaryKey(@Param(value = "id") Integer id) throws Exception;    @Select("select * from valid where id = #{id}")    Valid getValidById(int id) throws Exception;}

    再接着就是新建Service层了,接口和实现类

package xin.sunzy.ssms.service.intf;import xin.sunzy.ssms.entity.po.Valid;public interface IValidService {    Valid getValidByPrimaryKey(Integer id) throws Exception;    Valid getValidById(Integer id) throws Exception;}
package xin.sunzy.ssms.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import xin.sunzy.ssms.dao.intf.IValidDao;import xin.sunzy.ssms.entity.po.Valid;import xin.sunzy.ssms.service.intf.IValidService;@Service("validService")public class ValidService implements IValidService {    @Autowired    private IValidDao validDao;    @Override    public Valid getValidByPrimaryKey(Integer id) throws Exception {        return validDao.getValidByPrimaryKey(id);    }    @Override    public Valid getValidById(Integer id) throws Exception {        return validDao.getValidById(id);    }}

接着就是Controller层,新建一个MyController类

package xin.sunzy.ssms.controller;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.UsernamePasswordToken;import org.apache.shiro.subject.Subject;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.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import xin.sunzy.ssms.entity.po.Valid;import xin.sunzy.ssms.service.intf.IValidService;@Controllerpublic class MyController {    @Autowired    private IValidService validService;    @ResponseBody    @RequestMapping("/test")    public Object test(){        return "

hello world

"; } @ResponseBody @RequestMapping("/valid") public Object valid(){ try { return validService.getValidById(1); } catch (Exception e) { return new Valid("404","失败"); } }}

    好的这时候,启动你的tomcat,在浏览器中访问  ,返回如下的字符串,就是整合完成了,如果返回{"code":"404","content":"失败"},那就没有部署成功,如果遇到了bug,那么就慢慢的排除吧,程序员就是一步一步爬坑的过程。

225609_snDF_3017023.png

源码在下篇(Spring + SpringMVC + Mybatis + Shiro 整合(下)):

 

 

 

转载于:https://my.oschina.net/GinkGo/blog/1511374

你可能感兴趣的文章
商品详情页上拉查看详情
查看>>
Kubernetes DNS服务简介
查看>>
「压缩」会是机器学习的下一个杀手级应用吗?
查看>>
IIS应用程序池_缓存回收
查看>>
使用Docker镜像和仓库
查看>>
二叉树
查看>>
springcloud(一):大话Spring Cloud
查看>>
Linux之父道歉后,Linux社区颁布开发人员行为准则
查看>>
map 遍历
查看>>
当人工智能遇到数字营销,阿里妈妈在云栖大会亮出了Ad Tech的名片
查看>>
导入依赖导致的重复引用不同版本的相通类的问题
查看>>
Android 单例模式的正确姿势
查看>>
SD-CORE ——如何在没有MPLS的情况下构建全球企业级SD-WAN
查看>>
Linux Debug tools
查看>>
“重要的事情说三遍”,你真的会说吗?
查看>>
Spring Boot 使用 Zuul 开发 API Gateway
查看>>
8.1 Spring Boot集成Groovy混合Java开发
查看>>
Grafana 6.1.4 发布,系统指标监控与分析平台
查看>>
Java 编译器代码定义的 Token 保留字
查看>>
Java 生成随机手机号,并写入数据库
查看>>