工作中遇到的问题总结
1.reset方法在IE8会清空hidden下的值,而其他版本不会,在做表单序列化的时候发现hidden的值是空的,以为是序列化在不同版本下不能序列化hidden,后面排查后发现是reset将hideen的值清空导致序列化上传表单的时候没有值。
2.在做版本兼容的时候,css要在js前面,特别是IE8等等
3.#$在mybatis中的区别,一个是会带引号一个不会带引号,在做参数设置的时候想写通用的sql语句,在使用#的时候一直失败,后来发现是多了引号,改用$解决了问题,两者的区别在于,#更好的防止sql注入,另一方面使用了预编译的话,可以减少编译时间。
4.在IE的edge下,百度地图的Bmap.Autocomplete使用的时候会与flash版本的uploadify冲突,导致文件上传按钮变成双击才可以出现文件选择框。目前解决方法是销毁掉了Bmap.Autocomplete,因为两者不会同时使用,在使用uploadify时候就去注销Bmap.Autocomplete,使用完成后就重新初始化。
5.在百度地图中使用聚合的时候,需要map定位使用具体的坐标而不是文字来。
6.sql语句查询的时候可以做一些改修,使得查出的数据可以直接使用而不需要做业务逻辑
7.在做查id的max时候一个需要注意字段的类型,另一个,因为使用mybatis通过XML映射,返回类型为int 以为返回null的时候为默认为0,结果是直接报错,所以在做返回int如果为空的话,要注意是否给一个0的初始值
8.在百度地图使用中,如果使用聚合的话,聚合后的点其实也是一个marker,在进行一些取值操作的时候,容易出现null的情况,需要注意,对null进行判空,防止出现null指针的错误。
9.在bootstrap中使用col-xs 划分为12个然后用标签进行设置百分比,所以在使用的时候要注意取都是以百分比来划分的
10.mybatis存储null到oracle报错问题
11.js如果一个函数中有两个ajax,因为JS是单线程异步的,就会造成两个ajax先后顺序不一定,这时候如果要顺序的需要可以有两种方法,1种是将第二个ajax嵌套在第一个ajax中,第二种是将第二个ajax进行延迟加载,使得顺序一致。
12.cookie中有中文,在做的过程中,突然发现用localhost访问无法访问 报错为Control character in cookie value or attribute. 百度了是因为有中文在cookie中,后来清了cookie值恢复
13.因为一些需求变化,希望系统也可以兼容sql Server版本,所以做了数据迁移,中间遇到的一些问题:1.sql语句的语法问题2.使用mybaits做映射到map的时候,oracle是会全部帮你转成大写,而sqlSercer则会你在sql语句中使用大写则为大写,如果使用了小写就会变成小写,这样导致的后果就是原先可能在sql语句中没考虑大小写问题,而现在则要考虑大小写的问题。
14.JS分析工具,logger2.js 因为是公交公司,老总想要所有公交站点的经纬度,但是场站公司等等都没有进行收集经纬度,希望可以去爬百度地图公交站点的数据,然后放在自己的数据库中,一开始是查看了百度地图的api希望有开放相应的接口,来进行完成。虽然有看到相关的信息,但是百度地图却也隐藏了路线上的所有站点的坐标,只在地图上显示。并且还做了混淆,导致有些参数都不能使用,学姐发了一个logger2.js 在百度之后,发现有人发现了百度地图的一些漏洞,可以通过logger2.js破解,从而查看到路线的所有站点的坐标。在这个过程中,虽然还没达到那种操作自如,自己也能做到查看到内部方法,以及找到自己想要的,在根据这个插件以及作者的文章,跟着他的引导,一步步坐下来,也成功拿到自己想要的数据。
15.$("a[rel^='prettyPhoto']").prettyPhoto();一个图片显示的遮挡层,发现这个框架其实只是将html页面上的a标签进行解析,如果你使用js代码添加了新的html之后就需要重新初始化,不然就仅仅是一个超链接跳转。所以在使用prettyPhoto这个框架的时候,必须注意是否有新的动态代码添加进来,如果有的话就应该重新初始化。
16.jquery是无法获取本地的图片的信息,比如长宽,参考了网上的做法,是写一个change监听,然后在里面写一个image 通过createObjectURL方法创建路径,然后通过image的onload方法进行获取图片的宽高来实现。
17.跨域问题,在做百度地图的智能提示的时候,原先是直接使用百度地图的控件,直接实例化一个控件就可以了,但是这个控件不能控制区域,他只会优先显示你指定的区域,后来是我去调用web api的接口遇到的跨域问题,我是用ajax的jsonp来解决跨域问题,后来同学问我这个问题,我是告诉他jsonp来解决,后来他告诉我jsonp只能解决get的跨域问题,但是无法解决psot的。后来学姐在做公司的接口的时候遇到类似的问题分享的结论是,遇到的跨域问题最好还是在后台解决。
18.idea与eclipse,在配置开发工具与tomcat的整合的时候,发现有很多种配置方式,最早在学校的时候,我是选择直接在eclipse里面将项目拉进来,在来到宁波后学习到的是,通过配置文件来,这种方式配置有有个好处,我觉得是这样子项目的编译不会发生改变,在SVN下不需要过滤这些编译文件,因为不会发生改变。在后来用idea中,tomcat的整合感觉比eclipse的复杂,后来也是参考着网上一步步走,配置完之后发现,其实他是将tomcat整合到自己的项目中,这种方式,可以将tomcat起来之后的首页也没有了,只有自己项目的页面。
19.通过最近一些框架的了解,发现文件上传不管怎么样在web中基本还是通过表单的形式来上传的,不管是用了uploadify还是ajaxfileupload他内部其实只是将你想要上传的值形成一个表单进行上传。之前做移动端的时候可能有些是通过转成base64来进行图片上传。自己也做过这样的接口
20.从普通的项目改造成maven项目,通过maven插件实现tomcat的远程热部署。整个过程还是比较简单,在学校使用的是eclipse,在实习的时候用idea,现在这家公司用的myeclipse。之间有些区别,导致也遇到一些坑,如myeclipse中的maven命令无效,打包出现配置文件没有在war包中等等问题。