spring-struts2-mybatis-maven 转账开发记录
最近写一个转账需求向外提供接口,用的是spring+struts2+maven 方式,数据库是oracle。我先新建maven类,然后引入spring相关jar包和mybatis包,配置struts.xml、applicationContext.xml、log4j等;
然后写了一个测试action类,测试部署是否正确,遇到的问题大概有jar包冲突,struts中action路径错误,扫描不到dao包等等,这是前期搭建环境时的问题;
正式开发转账逻辑时,遇到的问题大概有mybatis类型不匹配,其中折腾较久的是mybatis查询数据库时,查不到数据,而用DbVisualizer、pqsql等工具可以查到。最开始猜测可能是缓存问题,最新插入的数据只存在数据还没有被缓存;
然后关闭缓存再查询,依然查不到,再猜测可能是事物原因,于是降低数据库隔离级别然后再查,结果依然查不到。 最后打印出sql,发现sql中一个字段与parameterType插入的字段不匹配!因为mybatis不打印sql并且之前测试查询sql时也可以查到,
所以就没有想过是sql原因。。
开发中还有一个折腾比较久的是注入属性,结合spring mvc的经验,我直接在spring配置中加入自动扫描组件<context:component-scan base-package="com.xxx.dao" />,然后使用注解autowired和resource均失败,然后写上被注入类的getter、
setter方法和无惨构造器,依然不行。最后又写一个测试类,一步一步测试,发现注入的类的父类构造参数有问题,加上构造器 ,然后检查applicationContext里的bean引入是否正确,遂解决。
开发后期的主要问题是多线程问题,因为之前一直没用使用多线程,后期加入多线程后,发现获取不到ActionContext,debug前后查看多线程ActionContext的值,发现线程启动前有值,新启线程后无值,然后加入voliate修饰词后便能获取值,
但是又有新问题,voliate只能让变量可见,但是不能保证线程安全,volatile可以保证线程可见性且提供了一定的有序性,但是无法保证原子性,在JVM底层volatile是采用“内存屏障”来实现的。虽然通过它让ActionContext可见,但是当需要返回
http请求时,返回不了,
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response =(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(str);;
response.getWriter().flush();
response.getwriter.flush() 方法报错,猜测是因为新起的线程后,response作用域失效,找不到请求的路径,自然无法返回。
spring-struts2-mybatis-maven 转账开发记录的更多相关文章
- SSM Spring+SpringMVC+mybatis+maven+mysql环境搭建
SSM Spring+SpringMVC+mybatis+maven环境搭建 1.首先右键点击项目区空白处,选择new->other..在弹出框中输入maven,选择Maven Project. ...
- Spring+SpringMVC+MyBatis+Maven框架整合
本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点 一.Maven需要引入的jar包 二.Spring与SpringMVC的配置分离 三.Sprin ...
- 手动配置三大框架整合:Spring+Struts2+mybatis
如今主流的项目框架中,数据库持久层有可能不是hibernate,而是mybatis或者ibatis,事实上它们都是一样的,以下我来把环境搭建一下: [导入相关jar包]新建web项目projectms ...
- spring Boot + MyBatis + Maven 项目,日志开启打印 sql
在 spring Boot + MyBatis + Maven 项目中,日志开启打印 sql 的最简单方法,就是在文件 application.properties 中新增: logging.leve ...
- 整合Spring+Struts2+Mybatis加spring单元测试等
前言 自己是在CentOS7的IntelliJ IDEA里开发的,里面中文输入法有问题经常用不了,所以这里用了很多chinglish,希望不要介意: 一:pom依赖 <?xml version= ...
- Spring+SpringMVC+Mybatis+MAVEN+Eclipse+项目完整环境搭建
1.新建一个Maven项目,创建父项目. 2.创建子项目模块 3.创建javaWeb项目 4.创建后的项目目录结构 5.Maven文件配置 parent父项目pom.xml文件配置 <?xml ...
- Spring+SpringMVC+Mybatis+Maven+CXF+WebService整合之服务端
WebService服务端项目结构: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h ...
- SSM整合+WebUpload使用(spring+springmvc+mybatis+maven)
SSM框架整合以及webupload的集成与使用 在项目中最近用到了webupload.js,也方方面面遇到了不少问题,比如上传文件前对表单参数校验,当校验失败不予提交,及在文件上传成功后,选择同 ...
- SSM(Spring+SpringMVC+MyBatis)框架整合开发流程
回忆了 Spring.SpringMVC.MyBatis 框架整合,完善一个小demo,包括基本的增删改查功能. 开发环境 IDEA MySQL 5.7 Tomcat 9 Maven 3.2.5 需要 ...
随机推荐
- SpringMVC 快速入门
SpringMVC 快速入门 SpringMVC 简介 SpringMVC是 Spring为展示层提供的基于Web MVC设计模式的请求驱动类型的轻量级Web框架,它的功能和Struts2一样.但比S ...
- MySQL错误:2003-Can't connect to MySQL server on 'localhost'(10061 "unknown error")
今天数据库出了一点错误之后决定重装一下,结果卡在了一个问题上,连装了5遍,加上网上各种配置教程都没能结局,错误如下图所示: 最后忽然想到会不会是因为每一次卸载的时候没有彻底卸载干净,然后就彻彻底底卸载 ...
- vscode调试html页面,及配置说明
一.效果目的 1.在VSCode里,直接F5打开html页面,并且可以在编辑器里,进行断点调试js代码: 二.工具准备 1.VSCode 软件 2.一个js项目 3.VSCode 上装一个插件:Deb ...
- C语言之赋值
#include<stdio.h>/*void change(int m,int n){ int t; t=m; m=n; n=t;}*/int main(){//交换两杯水,需要一个空杯 ...
- Windows系统重装
http://www.ishuo.cn/show/76437.htmlhttp://jingyan.baidu.com/article/d8072ac45d4f60ec95cefdaa.html
- 解决微信公众平台IP白名单
微信公众平台,作为自媒体的旗舰级产品,越来越多的人已经投入它的怀抱.正如它的广告词所说:再小的个体,也有品牌 好吧,闲话不多说,今天要说的是它的IP白名单机制. 我们现在安装的大部分的电信的家庭级别的 ...
- AndroidStudio cannot resolve symbol 解决办法 清楚缓存
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu ...
- docker学习(一)
docker的安装 (一)环境要求: 容器需要管理工具.runtime 和操作系统,选择如下: 1.管理工具 - Docker Engine 2.runtime - runc 3.操作系统 (二)安装 ...
- 使用anyproxy 来抓取手机的数据包
简单介绍Anyproxy Anyproxy 是alibaba 前端团队开源的http/https 的代理工具 官网地址:http://anyproxy.io/cn/ 环境要求:需要安装nodejs 提 ...
- PAT 1042. Shuffling Machine (20)
1042. Shuffling Machine (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Shu ...