1.数据库表名重构。
   之前受PHP等程序的影响,数据库表名喜欢用数据库的名称作为前缀,比如“p2p_account”。
   在经过大量的实践之后,发现Java程序中,基本没有这个必要。
   so,从今天开始,数据库表明不再加上多余的前缀了。
   
   Java的Dao和Mybatis的xml,大量用到了数据库表名,我当然不笨,想到的是Eclipse的replace替换功能。
   把“p2p_”替换成“”就可以了。
   替换之前,随机抽样,选几个文件,看看是不是有“误杀”,尚未发现。
   
   mysql数据库的表名,也想导成sql文件,再同样直接替换的,后来发现不行,最近导入了IP库,有几十MB,还是手动重命名算了。
   
   类似的问题,之前手动把Mybatis中的“大写”转换成看起来更顺眼的“小写”,手动改的,后来多亏boss提醒,用的是Eclipse的快捷键,
   “Ctrl+shift+Y”。
   今后,要开动大脑,避免这种苦力活。
   
2.properties乱码问题。
   默认情况下,.properties文件是ISO-8859-1编码。输入中文,要么乱码,要么被Eclipse转换成对应的UTF-8字符,进而正常显示。
   现在有个问题,想在proerties加入中文注释,“#这是个路径”,其中"这个是路径"会被转成成“#aaaa”这种码。
   问题是,注释中的“#aaaa”在Eclipse下,不会自动翻译成“中文”,而没有注释的则可以。
   
   为了解决这个问题,想的是,把“.properties”手动设置UTF-8编码保存,但是,也不能直接用中文,
   中文的变量a=你好,不会正常解析。
   
   我们想这样:
   #a你好
   a=#aaaa#aaa
   
   这样有个不好的地方是,UTF-8编码,Eclipse不会自动把输入的中文,转换成“#aaaa”这种格式。
   还得手动,用JDK自带的工具转。
   
   总之呢,没有一种很好的方式,只能“维持现状”了。
   中文,永远都是个老大难的问题。谁让,最初设计软件标准的不是国人呢。
   
3.SpringMVC文件路径。
 p2p.backend_page=E:\GitRepository\backend-system
 <mvc:resources  mapping="/tpl/**" location="file:${p2p.backend_page}/tpl/"/>
 这个地方的文件路径,不正确,有问题。
 
 "p2p.backend_page=E:/GitRepository/backend-system",这种才是正确的。
4.SpringMVC获取request。
a. 在web.xml中配置一个监听
<listener>  
        <listener-class>  
            org.springframework.web.context.request.RequestContextListener  
        </listener-class>  
</listener>  
   b.之后在程序里可以用
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();  
这种方法,是我需要的,方便在工具类中获得上下文中的request。
比如,记录操作日志,从request中获得ip和referer等相同的属性,可以写成1个通用的方法处理。
5.Mybatis的一个大坑啊。
有问题:mybatis会把最后一个if中的“,”给去掉,sql变成了“UPDATE p2p_user set paypwd=? uptime=now()”,进而导致sql语法错误。
<update id="update" parameterType="User">
UPDATE p2p_user 
<set>
<if test="umobile!=null">
umobile = #{umobile},
</if>
<if test="paypwd != null">
paypwd = #{paypwd},
</if>
</set>
uptime = now()
WHERE uid = #{uid}
</update>
没问题:如果一定修改uptime字段,就用test="true",避免上面的问题。
<update id="update" parameterType="User">
UPDATE p2p_user 
<set>
<if test="umobile!=null">
umobile = #{umobile},
</if>
<if test="paypwd != null">
paypwd = #{paypwd},
</if>
<if test="true">uptime = now()</if>
</set>
WHERE uid = #{uid}
</update>
6.SpringMVC的URL匹配问题,是否带斜杠/。
@Controller
@RequestMapping("/loan")
public class LoanInfoController extends BaseController {
   @RequestMapping("")
public String index(HttpServletRequest request){
return "loan/index";
}
//用@RequestMapping("")可以匹配到"/loan"和"/loan/"。
}
@Controller
public class LoanInfoController extends BaseController {
   @RequestMapping("/loan")
public String index(HttpServletRequest request){
return "loan/index";
}
//用@RequestMapping("")可以匹配到"/loan"和"/loan/"。(分析是这样,没有尝试)
}
public class LoanInfoController extends BaseController {
   @RequestMapping("/loan/")
public String index(HttpServletRequest request){
return "loan/index";
}
//用@RequestMapping("")只可以匹配到"/loan/"。
}
比较有疑问的是,“/loan”能直接匹配到,还是经过SpringMVC处理了,然后再匹配到的。
7.HttpServletRequest获得端口号。
 getLocalPort 可以获得8080
 getRemotePort 获得的是61132之类的服务器端的端口号,不是想要的。
 
 可以参考这篇文章的总结:http://blog.csdn.net/ranmudaofa/article/details/39785785
 
8.jquery获得修改iframe的src,父页面和当前页面的问题。
a.html
<iframe src="${base}/welcome.html" id="mainFrame" frameborder="0"
width="80%" height="500"></iframe>
在a.html中有个iframe,点击a中的某个按钮,更新iframe的src属性。
加载welcome.html页面之后,手动修改iframe的src,但是页面没有刷新。
后来,通过chrome的debug发现了问题。
var mainFrame=$("#mainFrame");子页面中获得的mainFrame没有src属性。
最终确定,a.html和b.html虽然都找到了mainFrame,但是不是同一个元素,这是为啥呢?
解决办法:
父页面:mainFrame=$("#mainFrame"); 
子页面:mainFrame=$("#mainFrame",window.parent.document); //等价于window.parent.document.getElementById("mainFrame");
如果写通用的方法,需要判断src是否有值。
9.JS的函数名是关键字。
  function delete(acl,ename);
  “delete”是js中的关键字,不能作为函数名称。
  这也说明,把java的模版文件用“.html”后缀比较方便,Eclipse可以给出提示。
  
  妈蛋,自己写的组件里,给超链接绑定一个事件,“remove”方法竟然也貌似冲突了,因为我随便用了个“a”方法,是可以响应的。
10.奇葩的JSON参数接收问题。
原来用form表单提交,有个属性名字叫做“amoun.yuan”,让后端
Money amount对象的字段yuan接收正常。
现在用JSON请求,参数名“amount.yuan”,接收失败。
"amount.yuan" : amount。
怎么说呢,如果只是接收不到参数,我表示非常理解。
但报的错误确是400,bad request。
我一直以为是,@RequestParam,某个参数没有提交过来导致的。
现在终于搞明白了,今后坚决不再用“a.b”这种形式发送json的参数了。

2015年创业中遇到的技术问题:1-10(乱码-SpringMVC-jquery-JSON等)的更多相关文章

  1. 现在学习 JavaScript 的哪种技术更好:Angular、jQuery 还是 Node.js?(转)

    本文选自<开发者头条>1 月 7 日最受欢迎文章 Top 3,感谢作者 @WEB资源网 分享. 欢迎分享:http://toutiao.io/contribute 这是一个发布在 Quor ...

  2. 2015年IPC网络摄像机技术发展现状分析

    网络摄像机将图像转换为基于TCP/IP网络标准的数据包,使摄像机所摄的画面通过RJ-45以太网接口或WIFI WLAN无线接口直接传送到网络上,通过网络即可远端监视画面. 一.网络摄像机的基本原理 网 ...

  3. Visual Studio 2015的坑:中文字符串编译后成乱码

    (2015年8月5日更新:微软已经修复了Roslyn的这个bug,详见 https://github.com/dotnet/roslyn/pull/4303 ) 昨天,我们用VS2015编译了博客程序 ...

  4. Apache Spark技术实战之4 -- 利用Spark将json文件导入Cassandra

    欢迎转载,转载请注明出处. 概要 本文简要介绍如何使用spark-cassandra-connector将json文件导入到cassandra数据库,这是一个使用spark的综合性示例. 前提条件 假 ...

  5. 2015年第14本(英文第10本):The A.B.C. Murders (A.B.C谋杀案)

    书名:The ABC Murders 推荐指数:5星 作者:Agatha Christie 单词数:7万 不重复单词数:不详 首万词不重复单词数:不详 蓝思值:740 阅读时间:2015年7月18日 ...

  6. 【恒天云技术分享系列10】OpenStack块存储技术

    原文:http://www.hengtianyun.com/download-show-id-101.html 块存储,简单来说就是提供了块设备存储的接口.用户需要把块存储卷附加到虚拟机(或者裸机)上 ...

  7. zTree的调用设使用(跨两个系统,两类技术实现的项目案例SpringMVC+Spring+MyBatis和Struts2+Spring+ibatis框架组合)

    1.从zTree官网上下载zTree的包,zTree的官方网址是:http://www.ztree.me/v3/main.php#_zTreeInfo 2.引入zTree所需的依赖,例如(jQuery ...

  8. 前后台交互经常使用的技术汇总(后台:Java技术,前台:Js或者Jquery)

    1:由于针对特定的前后台交互用到的知识总结,所以不大量贴代码,主要给出思路,方便自己以后脑补和技术总结,当然也希望可以帮助到别人. 后台Json和其他格式转化,之前总结过Json和对象,集合,字符串的 ...

  9. 百度前端技术学院task1.10

    任务十:Flexbox 布局练习 面向人群: 有一定HTML及CSS基础的同学 难度: 中 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容 ...

随机推荐

  1. 【iOS开发-29】解决方式:TabBar的图片不显示,仅仅显示灰色的正方形

    (1)现象 tabbar上的图片变成一块正方形的灰色块块,原先的图片没有了. (2)原因 tabbar上的图片本质上不是一个图片.而是一个形状图片.系统对我们使用的图片也仅仅是把当中的形状" ...

  2. Scala入门到精通——第二十二节 高级类型 (一)

    作者:摇摆少年梦 视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 this.type使用 类型投影 结构类型 复合类型 1. this.type使用 c ...

  3. Android SocketService

    package com.freer.infusion.module.service; import android.app.ActivityManager; import android.app.Pe ...

  4. 在MacOS下使用Fiddler抓包

    在MacOS下使用Fiddler抓包 有两种方式,分别是安装Mac版的Fiddler,或者是用虚拟机,安装Windows系统,在Windows系统下运行Fiddler对Mac系统中的内容进行抓包. M ...

  5. 在设置了android:parentActivityName后,点击子Activity返回键,父Activity总会调用OnDestroy()的解决方式

    近期查了非常久这个事情.分享给大家, 原理非常easy,一个Activity在manifet里声明了android:parentActivityName:这时候通过Activity左上角的返回butt ...

  6. Loadrunner--参数化知识点及参数池策略

    一.为何进行脚本参数化? 脚本在录制的时候,记录的参数都是常量值,这样,虚拟用户在执行同一个脚本,向服务器发送请求时,使用的都是同一个参数值,与实际不符.所以使用参数化技术. 二.参数化的逻辑? 对脚 ...

  7. 编程算法 - 远征队(expedition) 代码(C)

    远征队(expedition) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 远征队有一辆卡车须要行驶L单位的距离, 開始时, 车上有P单位的 ...

  8. thinkphp3.2.3 excel导出,下载文件,包含图片

    关于导出后出错的问题 https://segmentfault.com/q/1010000005330214 https://blog.csdn.net/ohmygirl/article/detail ...

  9. 关于JavaScript概念的总结

    原文 https://www.jianshu.com/p/1e8d8a691aa8 大纲 1.JavaScript的概念 2.JavaScript 特点 3.JavaScript是弱类型语言 4.Ja ...

  10. python高级学习目录

    1. Linux介绍.命令1.1. 操作系统(科普章节) 1.2. 操作系统的发展史(科普章节) 1.3. 文件和目录 1.4. Ubuntu 图形界面入门 1.5. Linux 命令的基本使用 1. ...