SpringMVC常用注解及参数绑定(02)
Posted Lqc_javaEngineer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC常用注解及参数绑定(02)相关的知识,希望对你有一定的参考价值。
一、SpringMVC常用注解:
(1)、@Controller:如果不加该注解说明只是一个普通的bean,作用在类上面才声明该类是一个控制器。
(2)、@RequestMapping
如果作用在类上面:可以起到窄化请求映射的作用;
如果作用在方法上面:指定url到请求方法的映射。常用value和method属性,其中method常用get和post两种请求方式。
如果没有指明请求方式,则默认可以使用任何的http请求方式。
(3)、@RequestParam:将请求中的参数绑定到方法中的形参。
(4)、@PathVariable:用于restful风格的url,将url中userId的userId绑定到方法中的形参。@PathVariable中的变量名称 要和RequestMapping中的变量名称相同。
(5)、@RequestBody:将json转换为object对象pojo。
(6)、@ResponseBody:将object对象pojo转换为json。
(7)、@Autowired:按照类型注入。例如:把service注入到Controller中去。
(8)、@Resource:按照名称注入。把service注入到Controller中去。如果一个接口有多个实现类的话要用该注解。
(9)、@ModelAttribute:将请求参数绑定到model对象中.(开发中一般不用,麻烦)
(10)、@SessionAttribute:只能作用在类上面,允许我们有选择的将Model中的哪些属性转存到HttpSession对象中。
(11)、@CookieValue:将请求的cookie绑定到方法中的形参。例如:JSESSIONID。
(12)、@RequestHeader:将请求头绑定到方法中的形参。
二、SpringMVC参数绑定
(1)、默认的参数绑定:HttpServletRequest、HttpServletResponse、HttpSession、Model。意思是说在Controller方法参数中可以加入这些,也可以不加,加不加看自己需求而定。
(2)、基本数据类型:包括String类型。SpringMVC可以直接接收基本数据类型,可以帮你自动进行类型转换。但形参名称要和页面的input框中的name属性值相同。
(3)、Pojo类型:SpringMVC可以直接接受pojo类型,但要求页面上input框的属性值要和pojo属性值相同。
(4)、Pojo的包装类VO类型:SpringMVC可以直接接收VO类型:但要求input输入框的属性值要等于vo的属性.属性.属性...
(5)、自定义参数绑定:
/**
* S - source:源
* T - target:目标
* @author zj
*
*/
public class CustomGlobalStrToDateConverter implements Converter<String, Date>
@Override
public Date convert(String source)
try
Date date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(source);
return date;
catch (ParseException e)
// TODO Auto-generated catch block
e.printStackTrace();
return null;
在springmvc的核心配置文件中配置:
<!-- @Controller注解扫描 -->
<context:component-scan base-package="cn.itheima.controller"></context:component-scan>
<!-- 注解驱动:
替我们显示的配置了最新版的注解的处理器映射器和处理器适配器 -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!-- 配置视图解析器
作用:在controller中指定页面路径的时候就不用写页面的完整路径名称了,可以直接写页面去掉扩展名的名称
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 真正的页面路径 = 前缀 + 去掉后缀名的页面名称 + 后缀 -->
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 配置自定义转换器
注意: 一定要将自定义的转换器配置到注解驱动上
-->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<!-- 指定自定义转换器的全路径名称 -->
<bean class="cn.itheima.controller.converter.CustomGlobalStrToDateConverter"/>
</set>
</property>
</bean>
(6)、数组:在VO中定义Integer[] ids。例如:批量删除。
(7)、List集合:在VO中定义private List<Items> itemsList;例如:批量修改使用。
三、SpringMVC中Controller方法返回值。
(1)、ModelAndView指定了模型和视图。
(2)、void:形参可以使用request和response指定响应结果。
《1》、request.getRequestDispatcher("页面路径").forward(request, response);
《2》、response.sendRedirect("url");
《3》、response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
(3)、String:逻辑视图名。
《1》、逻辑视图名。
《2》、重定向:return "redirect:queryItem.action";
redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址。
因为转发即执行了一个新的request和response。
由于新发起一个request原来的参数在转发时就不能传递到下一个url,
《3》、请求转发:return "forward:editItem.action";
forward方式相当于“request.getRequestDispatcher().forward(request,response)”,转发后浏览器地址 栏还是原来的地址。转发并没有执行新的request和response,而是和转发前的请求共用一个request和response。所以转发前请求的参数在转发后仍然可以读取到。
相对路径和绝对路径:
//后面forward:itemEdit.action表示相对路径,相对路径就是相对于当前目录,当前为类上面指定的items目录.在当前目录下可以使用相对路径随意跳转到某个方法中
//后面forward:/itemEdit.action路径中以斜杠开头的为绝对路径,绝对路径从项目名后面开始算。
以上是关于SpringMVC常用注解及参数绑定(02)的主要内容,如果未能解决你的问题,请参考以下文章
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_1 请求参数绑定入门
springmvc学习笔记(11)-springmvc注解开发之简单参数绑定