在学习的过程中发现这个问题,写篇博客记录一下,方便以后查阅。
@RestController注解是@Controller和@ResponseBody注解的结合。
首先说明:
@Controller注解表明这是一个控制器类
在方法上加注解@ResquestMapping(value = "url", method = RequestMethod.POST)表示拦截以post请求的发送的url地址,如果不写method默认的话会拦截get和post请求
配合InternalResourceViewResolver视图解析器即可以返回页面如:return main跳转到mina.jsp
而不跳转页面,仅需返回JSON数据的话,可配合@ResponseBody注解。
相同的加@RestController注解也表明这是一个控制器类,与上面相同
在方法上加注解@ResquestMapping(value = "url", method = RequestMethod.POST)表示拦截以post请求的发送的url地址,如果不写method默认的话会拦截get和post请求
但是返回如return main则显示的是main而不是跳转到页面了,如果要跳转页面,这是需要用到ModelAndView,ModelAndView model = new ModelAndView();
调用这个类的model.addObject("name",value)方法相当于setAttribute("name",value)方法将value值存储为名name供前台取。
调用这个类的model.setViewName("jsp/main.jsp")即可跳转到jsp夹里的main.jsp页面了。
完整示例:
@Controller
public class MyController{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
@ResponseBody
public String myMethod(){
return "hello word";
}
}
在地址栏输入localhost:8080/项目名/hello回车,页面将显示hello word
@Controller
public class MyController{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public ModelAndView myMethod(){
ModelAndView model = new ModelAndView();
model.setViewName("success");
return model;
}
}
在地址栏输入localhost:8080/项目名/hello回车,将跳转到success页面@RestController
public class MyController{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String myMethod(){
return "hi";
}
}
在地址栏输入localhost:8080/项目名/hello回车,页面将显示hi@RestController
public class MyController{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public ModelAndView myMethod(){
ModelAndView model = new ModelAndView();
model.setViewName("success");
return model;
}
}
在地址栏输入localhost:8080/项目名/hello回车,将跳转到success页面