请求映射
- @RequestMapping:绑定请求地址与对应处理方法间的关系
@Controller
//为当前处理器中所有方法设定公共的访问路径前缀
@RequestMapping("/user")
public class UserController{
//RequestMapping的值要与方法名保持一致
@RequestMapping("/requestURL")
public String requestURL{
//跳转到page页面
return "page.jsp";
}
}
- 常用属性
@RequestMapping(
value="/requestURL2",//设置请求路径,与path属性·value属性相同
method=RequestMethod.GET,//设定请求方式
params="name",//设定请求参数条件
headers="content-type=text/*",//设定请求消息头条件
consumes="text/*",//用于指定可以接受的请求正文类型(MIME类型)
produces="text/*" //用于指定可以生成的响应正文类型(MIME类型)
)
public String requestURL2(){
return "/page.jsp";
}
响应
- 转发(默认)
@RequestMapping("/showPage1")
public String showPage1(){
System.out.println("user mvc controller is running ...");
ruturn "forward:page.jsp";
}
- 重定向
@RequestMapping("/showPage2")
public String showPage2(){
System.out.println("user mvc controller is runing ...")
return "redirect:page.jsp";
}
- 页面访问的快捷设定
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
public String showPage3(){
//跳转到/WEB-INF/pages/page.jsp
return "page" ;
}
-
带数据跳转
- 方式一:使用HttpServletRequest类型形参进行数据传递
@RequestMapping("/show") public String show(HttpServletRequest request){ request.setAttribute("name","itheima"); return "page"; }
- 方式二:使用Modle
@RequestMapping("/show2") public String show2(Model model){ model.addAttribute("name","itheima"); Book book = new Book(); book.setName("SpringMVC入门实战"); book.setPrice(66.6); model.addAttribute("book",book); return "page"; }
- 方式三:使用ModelAndView类型形参进行数据传递,将该对象作为返回值传递给调用者
//使用ModelAndView形参传递参数,该对象还封装了页面信息 @RequestMapping("/show3") public ModelAndView show3(ModelAndView modelAndView){ Book book = new Book(); boo.setName("SpringMVC入门"); book.setPrice(66.6); //添加数据的方式,key和value modleAndView.addObject("book",book); modleAndView.addObject("name","Jockme"); //设置页面的方式,该方法最后一次执行的结果生效 modleAndView.setViewName("page"); return modelAndView; }
-
返回Json数据
- 方式一:基于response返回数据的简化格式,返回JSON数据
//使用jackson进行json数据格式化 @RequestMapping("/show3") @RequestBoby public String show3() throws JsonProcessingException{ Book book = new Book(); book.setName("SpringMVC入门"); book.setPrice(66.6); ObjectMapper om = new ObjectMapper(); return om.writeValueAsString(book); }
- 方式二:使用SpringMVC提供的消息类型转换器将对象与集合数据自动转换为JSON数据
//使用SpringMVC注解驱动,对标注@ResponseBody注解的控制器方法进行 结果转换,由于返回值为引用类型,自动调用jackson提供的类型转换器进行格式转换 @RequestMapping("/show4") @ResponseBoby public Book show4(){ Book book = new Book(); book.setName("SpringMVC入门"); book.setPrice(66.6); return book; }
需要手工添加信息类型转换器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </list> </property> </bean>