开发模式:前后端分离 【重点】 可以在多个端打开
混合开发 一般只用浏览器打开
返回视图
//MvcConfig
@Configuration
@EnableWebMvc
@ComponentScan("com.dc.jsp")
public class MvcConfig implements WebMvcConfigurer { //视图解析器,配置前后缀,不使用@Bean
@Override
public void configureViewResolvers(ViewResolverRegistry resolverRegistry){
resolverRegistry.jsp("/WEB-INF/views/",".jsp");
}
}
//SpringMVCInit
public class SpringMVCInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{MvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
//JspController
@Controller
@RequestMapping("jsp")
public class JspController {
/*
*TODO:快速查找视图:1.方法返回值是String
* 2.不能添加@ResponseBody
* 3.返回值填?中的内容 /WEB-INF/views/?.jsp"
* */
@GetMapping("index")
public String index(HttpServletRequest request){
request.setAttribute("data","hello jsp"); //往request中放数据
return "index";
}
}
转发和重定向
//转发
@GetMapping("forward")
public String forward(){
return "forward:/jsp/index"; //转发地址
}
//重定向
@GetMapping("redirect")
public String redirect(){
return "redirect:http://www.baidu.com"; //重定向地址
}
返回json数据
@GetMapping("data")
@ResponseBody
public User data(){
User user=new User();
user.setAge(18);
user.setName("haha");
return user;
}
@GetMapping("data1")
@ResponseBody
public List<User> data1(){
User user=new User();
user.setAge(18);
user.setName("haha");
List<User> users=new ArrayList<>();
users.add(user);
return users;
}
//@RestController 作用相当于@Controller 和 @ResponseBody 写了这个就不用写这两个
返回静态资源处理
//开启静态资源查找 先去handlerMapping找有没有对应的handler 没有再去找静态资源
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}