SSM框架项目中的bug汇总

来源:互联网 发布:淘宝和易趣的相同点 编辑:程序博客网 时间:2024/06/18 07:12

这个是实习过程中,主要用来了解和学习公司框架的一个测评系统,主要是采用了SSM框架的maven的JAVA Web项目,是比较常见的信息管理系统。在做系统时总是会遇到纠结很久但了解后却很容易解决的bug,在此写下这篇bug汇总,希望自己和刚刚学习的童鞋们节约时间成本。如果有些错误的地方,请各位热情指出~

1、Ajax请求在后台已执行,但是返回前台404

原因:可能是后台忽略了注解@ResponseBody,这个注解的作用是将函数返回值作为请求返回值。没有这个注解的话,请求的响应应该是一个页面,不需要页面的话应该加上这个注解。(ps:返回ModelAndView对象时,不能加这个注解,因为,它返回的是包含了整个页面的信息)
解决:在controller方法中添加@ResponseBody

2、后台接收不到前台上传的文件,

原因:缺少文件上传相关包,或者springmvc中未配置关于multipartResolver。
解决:

<!-- 在springmvc配置文件中添加-->      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>  <!-- 在pom.xml中添加依赖 -->       <dependency>          <groupId>commons-fileupload</groupId>          <artifactId>commons-fileupload</artifactId>          <version>1.3</version>       </dependency>       <dependency>          <groupId>commons-io</groupId>          <artifactId>commons-io</artifactId>          <version>2.4</version>       </dependency>

3、使用fileinput.js获取其他插件是奇怪的报错(e错误,什么function没有啥的)

原因:首先确保调用正确路径的情况下,有可能是将jquery.js放在了后面。
解决:正确顺序应该是jquery在前。

4、访问html,页面报404错误,“the requested resource is not available”

原因:这是因为dispatcherServlet会对静态资源进行拦截,导致了静态资源无法访问。
解决:我一般是在springmvc配置文件中加入:
(ps:想了解其他方法的可以参考文章http://blog.csdn.net/wdehxiang/article/details/77619621)

5、Parameter ‘email’ not found. Available parameters are [0, 1, param1, param2]

这里我们需要简单了解一下mabatis的参数传值机制。Mybatis现在可以使用的parameterType有基本数据类型和Java复杂类型。
基本数据类型:包含int,String,Date等。基本数据类型作为传参,只能传入一个。通过#{参数名}获取。
复杂数据类型:包含Java实体类、Map。通过#{属性名}或#{map的keyName}获取。
原因:传入多个值时,mybatis会自动将这些值转成类似map形式的值,以0,1,2…的序列为keyName。
解决:

方案一、在Dao层mapper接口的方法中,为每个参数添加@Param注解

public User login(@Param(value="email") String email, @Param(value="password") String password);
<select id="login" resultType="User"  parameterType="String">      select * from user where email=#{email} and password=#{password}</select>

方案二:将多个值存入Map中

public User login(HashMap<String,String) map);

mapper.xml中就可以通过#{keyName}啦。

<select id="login" resultType="User"  parameterType="Map">      select * from user where email=#{email} and password=#{password}</select>

方案三:以传递参数的顺序通过#{0},#{1}获取

public User login(String email, String password);
<select id="login" resultType="User"  parameterType="String">         select * from user where email=#{0} and password=#{1}</select>
原创粉丝点击