开发中遇到的小问题总结

问题1:后台通过ImageIO.write() 方法向前端发送二进制数据流图片,以struts2的请求为例,前端如何接收?
解决办法:在img标签的src属性直接是调用的获取的图片的方法就可以接收到,
如: <img src=” 项目名/xxx_getCodeImg.action” /> 但是这样不好,加载页面的时候只加载一次,我们可以写在方法中使用ajax请求此方法,这样当执行此方法的时候就可以刷新图片了,现在主要是前端使用ajax如何去接收二进制图片数据呢,如下所示就可以完美的解决这个问题。
//改变后台传过来的二进制流图片进制
function changeCodeImage(){
var url = “wwts/user_getCode.action”;
var xhr = new XMLHttpRequest();
xhr.open(‘GET’, url, true);
xhr.responseType = “blob”;
xhr.onload = function () {
if (this.status == 200) {
var blob = this.response; $("#codeImg").attr(‘src’,window.URL.createObjectURL(blob));
}
}
xhr.send();
}

问题2:ajax中的值如何赋值给js中定义的全局变量呢?
解决办法:将ajax的async属性改为false,因为如果不加此属性的话默认的此属性为true,此时ajax请求为异步请求,则回调函数的数据是不能赋值给全局变量的,这是我们会发现所赋值的全局变量为空,如果将此属性改为false后就可以将回调函数据值赋值给全局变量了。

问题3 微信服务号配置js域名和网页授权域名时所遇到的坑
本周在微信公众号做了一个view菜单结合微信网页授权拉取用户信息绑定的一个案例,在配置服务号域名出现“路径不正确”等相关问题。微信服务号网页授权配置域名的方式如下:

  1. 准备一个ICP备案的域名和服务器
  2. 将配置时提示下载的文件放置在tomcat服务器的webapps下面的Root根目录下,确保访问域名或者IP地址时可以直接访问。
  3. 将你的域名配置好即可。
    出现的问题1:如果你的tomcat配置了访问域名就可以直接访问某个项目的情况下,这时你就需要将下载的文件放到具体微信的项目下确保能够访问,然后授权域名配置你的服务器域名加项目名就可以

出现的问题2:如果你的项目名当中带有特殊符号,则需要修改项目名为全英文,比如我的项目名当时是battery_wechat,这时虽然可以访问到下载的文件,但依然提示路径不正确,后面改成了yxwechat才配置成功。

问题4. 使用JFinal框架的javaBean与Model向前端页面传值的冲突和后端向前端获取数据时出现的问题。

a) 单独使用传统的javaBean在JFinal框架的数据交互中受到的局限问题
以我最近遇到的问题为例,我在Jfinal使用传统的javaBean的时候向session中存值的时候,setSessionAttr(“user”, User); 在前段JSP页面中可以使用sessionScope.user.属性,获取到用户的值,

但是我想把他和数据库表映射起来就不行了,
arp.addMapping(“y_wechat_user”, WechatUser.class);使用的后面的class类型的javaBean必须要继承Model才可以映射。

如果我们编写的javaBean继承了Model类后
我们前端使用“sessionScope.user.属性”获取值就不能获取到所以问题产生了。

解决方式:使用Jfinal官方提供的_JfinalDemoGenerator类可以生成javaBean和Model的结合的一个实体类,使用此方式不仅继承了javaBean传统的set和get方法,还继承了Model类所带的属性。

问题5. 微信获取经纬度后地址逆向解析
首先导入http://map.qq.com/api/js?v=2.exp的js文件
wx.getLocation({
type:“wgs84”,
success: function (res) {
$("#latitude").val(res.latitude);
$("#longitude").val(res.longitude);
let geocoder = new qq.maps.Geocoder({
complete: function (result) {
resolve(result.detail.address)
}
});
var coord = new qq.maps.LatLng(res.latitude, res.longitude);
geocoder.getAddress(coord);
//设置服务请求成功的回调函数
geocoder.setComplete(function(result){
var addr = result.detail.address;
alert();
$("#addr").val(result.detail.address);
});
},
cancel: function (res) {
alert(‘用户拒绝授权获取地理位置’);
}
});

问题6. Javscript的json字符串转换成json对象
JSON.parse(“json字符串”)

问题7. Javscript判断字符串以xx结尾函数
String.prototype.endWith=function(endStr){
var d=this.length-endStr.length;
return (d>=0&&this.lastIndexOf(endStr)==d)
}

用法:”abcde”.endWith(“de”)

问题8. Git 切换分支时遇到
error: The following untracked working tree files would be overwritten by checkout:
原因:因为提交不完全导致切换分支时出错,重新提交一遍,再切换即可

问题9. Lombok使用 @Slf4j 注解的时候发现程序中使用的 log 报错。
原因是开发工具(IDEA)中没有集成lombok插件,集成插件重启开发工具即可解决问题

SpringBoot中
Caused by: java.io.IOException: The temporary upload location [C:\Users\zxm\AppData\Local\Temp\tomcat.8572785615189560421.8080\work\Tomcat\localhost\ROOT] is not valid
解决方式:在启动项目的类中注入下面的bean
  1. @Bean
  2. MultipartConfigElement multipartConfigElement() {
  3. MultipartConfigFactory factory = new MultipartConfigFactory();
  4. factory.setLocation(“d://temp”);
  5. return factory.createMultipartConfig();
  6. }

MySQL将sql语句查询后的数据导出成excel表格
第一步:将对应的查询结果加写入对应的路径
SELECT * from 表名 where 查询条件into outfile ‘/usr/local/mysql/1.sql’;
可能会出现的问题:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
出现的原因是因为在安装MySQL的时候限制了导入与导出的目录权限只能在规定的目录下才能导入我们需要通过下面命令查看 secure-file-priv 当前的值是什么
通过 mysql –u数据库用户名 –p数据库密码 进入mysql命令行
输入show variables like ‘%secure%’;

我们可以查看到 secure-file-priv 为空 将这个值修改成我们要导出的路径即可。
修改方法:在mysql的安装路径下找到(windows系统)my.ini linux系统则为my.cnf,在mysqld 下面添加或修改secure-file-priv = 文件导出路径

修改后查看当前值登录mysql命令行再输入show variables like ‘%secure%’;就可以看到secure-file-priv 的值已经被修改了

这时候重启mysql服务并重新执行第一步的语句 即可成功,若出现
Can’t create/write to file (Errcode: 13 - Permission denied)错误
则是因为对应路径的文件夹权限不够 改变文件夹权限即可 这里以linux为例

修改后再重新执行第一步的语句即可看到我们将查询结果导入到的文件了

第二步:
进入mysql命令行
将对应查询结果的文件在导入相应的字段的表中输入下面的sql语句
load data local infile "/usr/local/mysql/1.sql " into table 表名character set utf8;
最后将表导出成excle格式即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值