可以在SpringConfig配置类中使用@ComponentScan的excludeFilters来把不需要加载的bean排除一下
@Configuration
@ComponentScan(value = "com.itheima",
excludeFilters = @ComponentScan.Filter(
type = FilterType.ANNOTATION,
classes = Controller.class
))
public class SpringConfig {
}
多个Controller中方法名相同时,可以使用@RequestMapping 添加请求路径的前缀
post 请求中文乱码
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {SpringConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
//乱码处理
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
return new Filter[]{filter};
}
}
不同参数名称映射
提交json对象需要先加入依赖,使用json向服务器传递数据,参数 必须加RequestBody
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
//springmvc配置类,本质上还是一个spring配置类
@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc
public class SpringMvcConfig {
}
@ResponseBody
public String pojoParam(@RequestBody User user){
System.out.println(user.toString());
return "{'module':'pojoParam'}";
}
@RequestMapping("/arrayParam")
@ResponseBody
public String arrayParam(@RequestBody String[] likes){
System.out.println(Arrays.toString(likes));
return "{'module':'arrayParam'}";
}
@RequestMapping("/listParam")
@ResponseBody
public String listParam(@RequestBody List<String> likes){
System.out.println(likes);
return "{'module':'arrayParam'}";
}
返回json对象
@RequestMapping(value = "/users", method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody User user){
System.out.println(user.toString());
return "{'save':'springmvc'}";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id){
System.out.println("delete " + id);
return "{'delete':'springmvc'}";
}
@RequestMapping(value = "/users", method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody User user){
System.out.println("update " + user.toString());
return "{'delete':'springmvc'}";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
@ResponseBody
public String getById(@PathVariable Integer id){
System.out.println("getById " + id);
return "{'getById':'springmvc'}";
}
@RequestMapping(value = "/users", method = RequestMethod.GET)
@ResponseBody
public String getAll(@RequestBody User user){
System.out.println("update " + user.toString());
return "{'delete':'springmvc'}";
}
】设置静态资源的放行
@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
//设置静态资源访问过滤,当前类需要设置为配置类,并被扫描加载
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//当访问/pages/????时候,从/pages目录下查找内容
registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
}
}
@Configuration
@ComponentScan({"com.itheima.controller","com.itheima.config"})
@EnableWebMvc
public class SpringMvcConfig {
}