1. Page Jump
- Forward, if there is a view resolver, write the full path /pages/success.jsp
@RequestMapping("/save4")
public String save4(HttpServletRequest req) {
req.setAttribute("key", "value 4");
return "forward:/pages/success.jsp";
}
@RequestMapping(value = "/redirect")
public String testRedirect() {
return "redirect:/pages/success.jsp";
}
- Return ModelAndView object
@RequestMapping(value = "/save1")
public ModelAndView save1() {
System.out.println("save running..");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("success");
modelAndView.addObject("key", "i am value");
return modelAndView;
}
- ModelAndView as a parameter, springmvc framework automatically injects
@RequestMapping("/save2")
public ModelAndView save2(ModelAndView modelAndView) {
modelAndView.setViewName("success");
modelAndView.addObject("key", "i am value 1");
return modelAndView;
}
- model as a formal parameter
@RequestMapping("/save3")
public String save3(Model model) {
model.addAttribute("key", "i am value 3");
return "success";
}
2. Write back data @ResponseBody annotation
@ResponseBody注解简单介绍,用来返回字符串,对象。
1. @ResponseBody 告知spring mvc框架,该方法,不进行视图跳转,直接进行视图响应
2. 回写json,Jackson,(jackson-core, jackson-databind, jackson-annotations)
3. 回写对象,或者集合, 封装对象或者转换json的步骤,需要繁琐的配置。RequestMappingHandlerAdapter注入集合。。
4. 使用<mvc:annotation-driven/>自动集成转换json
@RequestMapping("/save5")
@ResponseBody
public String save5() {
return "hello world !";
}
- Return json string, use Jackson, import pom
@RequestMapping("/save6")
@ResponseBody
public String save6() {
User user = new User();
user.setName("jack");
user.setAge(18);
ObjectMapper objectMapper = new ObjectMapper();
String str = null;
try {
str = objectMapper.writeValueAsString(user);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return str;
}
- Complex configuration through mvc, or add annotation drive
@RequestMapping(value = "/save7")
@ResponseBody
public User save7() {
User user = new User();
user.setName("bitqian");
user.setAge(19);
return user;
}
- Processor mapper injection into Jackson
<bean id="requestMappingHandlerAdapter"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
- Or better annotation driven instead of above
<mvc:annotation-driven/>