环境:eclipse + tomcat 7.0.5 + MySQL + spring 4.1.3 + springmvc 4.1.3 + mybatis 3.2.7
问题1:项目环境搭建好后,正常启动,请求路径却无法访问
- 首先判断你的请求路径是否存在问题
- 查看web.xml 中是否正确的加载了springmvc 的配置
- 检查springmvc 配置中扫描注解的路径是否正确
- 代码区域的注解是否配置完善
- 考虑tomcat 没有将项目完整的加载进去
- ecplise 的神问题,重启ecplise 问题,然后再重新加载进tomcat 中
问题2:访问路径没问题了,确报sql 的错误(这种一般有错误提示,可以很清楚定位错误)
- jdbc.properties 文件配置连接信息是否正确,是否被加载
- applicationContext-dao.xml 文件是否又被正确的加载
- mapper 层代码的注解问题
问题3:get 和post 请求中的参数出现乱码问题
- get请求
- 修改tomcat 配置文件,添加编码与工程编码一致
- 代码内重编码
String userName = new String(Request.getParameter("userName").getBytes("ISO8859-1"),"utf-8");
- post请求
在web.xml 里面配置一个监听器,CharacterEncodingFilter 设置utf-8
问题4:获取到了数据库的数据,却显示null(数据库有数据)
考虑是否是pojo 编写的符合规范,字段和数据库字段一样,如果采用驼峰式可以在SqlMapConfig.xml 中添加一下配置
<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
常用springmvc 注解
@RequestMapping | 用于请求url 映射 |
@RequestBody | 注解实现接收http 请求的json 数据,将json 转换成java 对象 |
@ResponseBody | 注解实现将controller 方法返回对象转化为json 转给客户 |
@PathVariable | 将url 中的参数映射到方法的参数列表中 |
@RequestParam | 将请求体中的参数映射到方法的参数列表中 |
简单说一下springmvc 和struts2 的区别
- springmvc 的入口是一个servlet 即前端控制器,而struts2 入口时一个filter 过滤器
- sprignmvc 是基于方法开发,传递参数是通过方法形参,可以设计为单例或者多例(建议单例),struts2是基于类开发,传递参数是同构类的属性,只能设计为多例
- struts 采用值栈存储请求和响应的数据,通过OGNL 存去数据,springmvc 通过参数解析器是将reqeust 对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView 对象,最后又将模型驱动通过request 对象传输到页面。jsp 视图解析器默认使用jstl。
- struts2 存在已知漏洞,springmvc 目前还有漏洞被发现。如果使用struts2 建议下载最新包