[一站式服务]Spring MVC实现简单CURD项目
前言
一个简单的网页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.做站点,非常easy忽视的问题--->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的值-----------------------------2014年5月4日更新:js得到前台中英文混合长度问题-----------------------------
9.Javascript中得到中英文混合字符串的长度[19]:解说了问题出现的原因及解决方法。推荐看ISO/IEC 8859-1[20],当中有字符表
-----------------------------2014年5月9日更新:关于Tomcat 5.5 部署问题-----------------------------
10. Tomcat 5.5默认不解析EL表达式的解决的方法[21]:因为系统之前是在Tomcat 6.0上測试通过。近期换称5.5,结果就悲剧了,出现{} --- %7B%7D的问题,一開始以为是URIEncoding的问题。最后实在没有办法就问了公司的大牛,原来是EL表达式的问题,看来还是没有看清楚问题的本质啊!要学会给问题定位!
-----------------------------2014年5月23日更新:-----------------------------
- 做前台jsp页面的时候。须要写一些js。当中遇到了JavaScript parseFloat() 函数和$(".test").hide()的意义,还是查询W3school比較好啊!
最佳实践
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推断是否包括特殊字符[8].跟开涛学SpringMVC
[11].Spring 3.x MVC 入门系列[12].Ajax无刷新表格行内编辑源代码带数据库[14].jQuery Ajax 官方api[15].jQuery Ajax 中文api[16].jQuery Ajax 全解析[18].What is the difference between corePoolSize and maxPoolSize in the Spring ThreadPoolTaskExecutor[20].ISO/IEC 8859-1