环境:eclipse + tomcat 7.0.5 + MySQL + spring 4.1.3 + springmvc 4.1.3 + mybatis 3.2.7

问题1:项目环境搭建好后,正常启动,请求路径却无法访问

  1. 首先判断你的请求路径是否存在问题
  2. 查看web.xml 中是否正确的加载了springmvc 的配置
  3. 检查springmvc 配置中扫描注解的路径是否正确
  4. 代码区域的注解是否配置完善
  5. 考虑tomcat 没有将项目完整的加载进去
  6. ecplise 的神问题,重启ecplise 问题,然后再重新加载进tomcat 中


问题2:访问路径没问题了,确报sql 的错误(这种一般有错误提示,可以很清楚定位错误)

  1. jdbc.properties 文件配置连接信息是否正确,是否被加载
  2. applicationContext-dao.xml 文件是否又被正确的加载
  3. mapper 层代码的注解问题


问题3:get 和post 请求中的参数出现乱码问题

  • get请求
  1. 修改tomcat 配置文件,添加编码与工程编码一致
  2. 代码内重编码


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 的区别

  1. springmvc 的入口是一个servlet 即前端控制器,而struts2 入口时一个filter 过滤器
  2. sprignmvc 是基于方法开发,传递参数是通过方法形参,可以设计为单例或者多例(建议单例),struts2是基于类开发,传递参数是同构类的属性,只能设计为多例
  3. struts 采用值栈存储请求和响应的数据,通过OGNL 存去数据,springmvc 通过参数解析器是将reqeust 对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView 对象,最后又将模型驱动通过request 对象传输到页面。jsp 视图解析器默认使用jstl。
  4. struts2 存在已知漏洞,springmvc 目前还有漏洞被发现。如果使用struts2 建议下载最新包