@RequestMapping和post提交乱码问题以及Controller的返回值的选择
@RequestMapping有如下作用1.URL路径映射2.窄化请求映射,起到统一管理url作用例如以后会有很多的模块下面有很多的方法,那么可以使用这个让模块下的方法加上模块名字例如该模块是用户模块,现在用户controller上加上模块名字,那么该controller下的所有方法的映射路径都要加上这个模块名字,例如上面的方法变成/user/finUserList.action3....
@RequestMapping有如下作用
1.URL路径映射
2.窄化请求映射,起到统一管理url作用
例如以后会有很多的模块下面有很多的方法,那么可以使用这个让模块下的方法加上模块名字
例如该模块是用户模块,现在用户controller上加上模块名字,那么该controller下的所有方法的映射路径都要加上这个模块名字,例如上面的方法变成/user/finUserList.action
3.请求方法限定,规定某些方法必须为什么请求
如果请求的方法不是post就会出现如下错误
当然我们可以同时设置多个请求方法,例如
最后我们进行post提交时可能会出现中文乱码问题,这时去web.xml配置一下字符集即可(添加)
<!--解决post提交乱码问题-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Controller返回值的选择
1.返回值为ModelAndView时,需要方法结束时,定义ModelAndView,将model和view分别进行设置。
2.返回String,一是代表逻辑视图名字,二是进行重定向或转发操作
逻辑视图
测试结果入下
重定向,上面的结果可以看到,有一个修改超链接,我们实现一个点击修改超链接走到一个编辑页面,然后在编辑页面点提交的时候重定向一遍findUserList.action方法(就会回到这个列表页面了)
1.编写一个到编辑页面的方法(根据id查询)
2.编写jsp页面
3.编写提交方法,实现重定向
效果如下(注意看地址栏)
点击修改后
点击提交后
转发
测试效果
所以就引出转发和重定向的区别
1.redirect重定向特点:浏览器地址栏中的url会变化。修改提交的request数据无法传到重定向的地址。因为重定向后重新进行request(request无法共享)
2.通过forward进行页面转发,浏览器地址栏url不变,request可以共享。
3.返回void,就可以理解成一个Servlet了
那么我们就可以在方法的形参上可以定义request和response,使用request或response指定响应结
果(就和Servlet一样啦):
1、使用request转向页面,如下:
request.getRequestDispatcher(“页面路径”).forward(request, response);
2、也可以通过response页面重定向:
response.sendRedirect(“url”)
3、也可以通过response指定响应结果,例如响应json数据如下:
response.setCharacterEncoding(“utf-8”);
response.setContentType(“application/json;charset=utf-8”);
response.getWriter().write(“json串”);
总结,@RequestMapping注解的使用要符合规范。然后Controller的返回值按需编写。之所以能够在方法的形参上接受参数,是和参数绑定有关的,后面补充参数绑定
更多推荐
所有评论(0)