前言
一个简单的网页CURD系统,用上了从来没用多的Spring MVC框架,一路走来,收获了很多,在这里记录下来分享给大家!
流程
搭建spring 框架(MVC 上下文、监听器、设置过滤jsp和html、GBK编码、session时间、jsp配置标签)--->JdbcTemplate及数据库配置
--->tomcat部署项目--->编码(pojo、persistence、service、controller、jsp)
学习收获(走过的坑)
1.Tomcat Context配置[2]:使用配置文件部署项目失败(预备知识->了解tomcat 部署项目三种方式)
2.Controller中的错误信息无法在传递到前台弹出
//error.cardType从配置文件读取,通过RedirectAttribute传递 RedirectAttributes att-->att.addAttribute("errorMessage", resource.getMessage("error.cardType", new Object[] {},LocaleContextHolder.getLocale())); //通过model传递到前台,两步缺一不可 model.addAttribute("errorMessage", request.getParameter("errorMessage"));3.URI中含有中文,而web.xml已经对处理为GBK,但仍未乱码,
考虑到别的项目也会用到tomcat安装目录/conf/server.xml中的URIEncoding的值
所以才去下面的方法处理:
首先控制台得到Request中的编码,这样可以针对做处理--->log.debug(request.getCharacterEncoding());
之后就好办了,用到java中基本的编码转换,即可解决--->new String(str.getBytes("GBK"), "UTF-8")
4.SpringMVC @PathVariable中含有特殊字符(;\/‘#%)不包括括号的处理
在前台可以处理的逻辑,尽量放在前台
JS判断是否包含特殊字符 [3]
@RequestMapping的REST风格[4]:说明了正则表达式
SpringMVC @PathVariable 中含有中文和点号[5]:配置文件是中文的情况
5.SpringMVC 正确显示自定义的中文信息[6]
6.做网站,很容易忽视的问题--->404、500错误
-----------------------------2014年4月30日更新:关于ThreadPoolExecutor线程池中corePoolSize值得问题-----------------------------
7.Rules of a ThreadPoolExecutor pool size[17]:文章从两个角度讲述了ThreadPoolExecutor 中的线程数增长问题,值得一读
8.What is the difference between corePoolSize and maxPoolSize in the Spring ThreadPoolTaskExecutor[18]:其中比较不错的回答,corePoolSize不是越多越好,
要适度,而且在调整corePoolSize之前,先要确定程序本身是否有问题,corePoolSize的配置在客户现场方面不带有很大的不确定性,你也不可能每次请求都修改corePoolSize的值
最佳实践
1.虽然项目是完成了,但是仍然对spring MVC整体的认识不是很清楚,推荐看(spring官方文档[1])
2.Spring MVC 教程,快速入门,深入分析[7],讲述了spring MVC中的各大要点,可以在看完基础之后,拿这个当手册看。
3.跟开涛学SpringMVC[8]:这个事学习spring mvc不错的系列,另外参考spring官方可以让你掌握这门技术
4.基于spring3.0.5 mvc 简单用户管理实例[9]:博主推荐看spring官方文档
5.Spring 注解学习手札(二) 控制层梳理[10]:博主的文章会很有调理,不错
6.Spring 3.x MVC 入门系列[11]:讲解的很透彻,尤其是配图很好,很清晰
7.Ajax无刷新表格行内编辑源码带数据库[12]:实现行内编辑效果
8.Java servlet+Ajax 用户管理(完全无刷新增删改查及分页)[13]:不是任何时候都会用到ajax,页面中有很多区域,只需要刷新某个区域的时候,要用到。
9.jQuery Ajax 英文官方api[14]、中文API[15]
10.jQuery Ajax 全解析[16]:详细解释了每个函数,并配有实时例子讲解,来加深理解
参考文献
[1].spring 3.1.1官方文档
[2].Tomcat Context配置
[3].JS判断是否包含特殊字符
[5].SpringMVC @PathVariable 中含有中文和点号
[8].跟开涛学SpringMVC
[9].基于spring3.0.5 mvc 简单用户管理实例
[11].Spring 3.x MVC 入门系列
[12].Ajax无刷新表格行内编辑源码带数据库
[13].Java servlet+Ajax 用户管理(完全无刷新增删改查及分页)
[14].jQuery Ajax 官方api
[15].jQuery Ajax 中文api
[16].jQuery Ajax 全解析
[17].Rules of a ThreadPoolExecutor pool size
[18].What is the difference between corePoolSize and maxPoolSize in the Spring ThreadPoolTaskExecutor