目录
配置
springMvc的默认配置文件
在包 spring-webmvc-4.3.12.RELEASE.jar/org/springframework/web/servlet/DispatcherServlet.properties
下面有个名叫 DispatcherServlet.properties
配置文件 ;
里面是 springMvc
自己的默认配置
# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
里面 springMVC
自己默认加载了许多的 适配器
、映射器
、视图解析器
处理异常解析器
等等 ;
也就是说,假如我们在 springMvc.xml
不做任何配置,就会使用这里的默认配置 ;
但是对于注解映射器和适配器
,里面默认加载的时候 2.5
版本的,但是 spring 3.1
版本之后,有了新的实现,但是在默认配置文件里边并没有添上 ;
我们需要在 springMvc.xml
中配置,让它使用新的实现 :
<!--让注解使用新的映射器、适配器实现-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
可以使用 <mvc:annotation-driven/>
,这个标签会加载上面配置的注解的映射器、适配器,并且还默认加载了许多参数绑定方法,因此,我们一般都用这个标签,代替上面的配置 ;
使用注解自定义开发处理器
之前自定义开发处理器,都是实现接口,然后在接口的方法中写逻辑 ;我们也发现,那样每个处理器只能写一个
方法(写多个方法也没用,反正最后都只能处理一个地址请求),处理一个 url
;
现在使用注解 @Controller
表示此类是一个处理器,并且不需要实现任何接口,从而我们可以在处理器写多个方法,并且在每个方法上面都使用 @RequestMapping
进行地址的映射 ,这样一个处理器,就可以处理多个请求映射 ;
/**
*
* 使用注解开发处理器类,这样我们在一个处理器类中实现多个方法
* @author An
*/
@Controller
public class ItemsController3 {
/**
* 使用注解进行映射
* 注解内容写上后缀 .action 或者不写都行,但是最后访问的时候,都要带上 .action 后缀
* @return
* @throws Exception
*/
@RequestMapping("/queryItems3")
public ModelAndView queryItems() {
List<Item> items = new ArrayList<>() ;
Item item1 = new Item();
item1.setId(22);
item1.setName("奶茶");
Item item2 = new Item();
item2.setId(111);
item2.setName("锡纸酥肉");
items.add(item1) ;
items.add(item2) ;
// 创建 ModelAndView
ModelAndView modelAndView = new ModelAndView() ;
// 添加model,也就是数据。(键值对)
// 在页面中取数据,就是根据键名
modelAndView.addObject("items",items) ;
Map map = modelAndView.getModel();
// 添加视图,也就是界面
modelAndView.setViewName("/WEB-INF/jsp/Item/ItemController.jsp");
return modelAndView;
}
}
注意使用了注解,注解映射器和注解适配器必须一起用
,也就是不能进行混搭,比如:使用注解映射器,然后使用配置方式的适配器 ;
批量扫描自定义处理器
之前,我们都是自定义一个处理器,然后去 springMvc.xml
配置文件进行注册,一个一个的注册,很麻烦;
现在使用批量的扫描注册 ;
<!--批量扫描处理器-->
<context:component-scan base-package="xin.ijava.ssm.controller"/>