SpringMVC配置三大组件

1、默认加载组件

我们不用配置组件也可以使用,因为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

简单解释:

LocaleResolver:识别服务器在哪个国家

ThemeResolver:校验拦截不合法的字符

HandlerMapping:处理器映射器配置

BeanNameUrlHandlerMapping:配置式

DefaultAnnotationHandlerMapping:注解式,如果controller中使用了@RequestMapping(value=”/WEB-INF/hello.jsp”注解,就默认使用该处理器映射器

HandlerAdapter:处理器适配器

HttpRequestHandlerAdapter:controller实现HttpRequestHandler接口时使用

ResponseStatusExceptionResolver:controller实现Controller接口时使用

DefaultHandlerExceptionResolver:如果controller中使用了@controller时使用

ViewResolver:InternalResourceViewResolver(jsp视图解析器)

2、配置处理器映射器HandlerMapping

注解式处理器映射器,对类中标记了@ResquestMapping的方法进行映射。根据@ResquestMapping定义的url匹配@ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器。

HandlerMethod对象中封装url对应的方法Method。

从spring3.1版本开始,废除了DefaultAnnotationHandlerMapping的使用,推荐使用RequestMappingHandlerMapping完成注解式处理器映射。

 

打开DefaultAnnotationHandlerMapping源码即可看到:

在springmvc.xml中配置:

<!-- 处理器映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

3、配置处理器适配器HandlerAdapter

注解式处理器适配器,对标记@ResquestMapping的方法进行适配。

从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用RequestMappingHandlerAdapter完成注解式处理器适配。

打开RequestMappingHandlerAdapter源码可以看到:

在springmvc.xml中配置:

<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

4、注解驱动

直接配置处理器映射器和处理器适配器比较麻烦,可以使用注解驱动来加载。

SpringMVC使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter

可以在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。

<!-- 注解驱动 -->
 <mvc:annotation-driven />

5、配置视图解析器ViewResolver

视图解析器使用SpringMVC框架默认的InternalResourceViewResolver,这个视图解析器支持JSP视图解析

在springmvc.xml中配置:

<!-- 配置视图解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 	<!-- 配置逻辑视图前缀 -->
 	<property name="prefix" value="/WEB-INF/jsp/"></property>
 	<!-- 配置逻辑视图后缀 -->
 	<property name="suffix" value=".jsp"></property>
 </bean>

controller:

@Controller
public class ItemController {

	@RequestMapping(value = "/item/itemlist.action")
	public ModelAndView itemlist() {
		
		//准备数据(模拟从数据库中查到)
		List<Items> list = new ArrayList<Items>();
		list.add(new Items(1, "1华为 荣耀8", 2399f, new Date(), "质量好!1"));
		list.add(new Items(2, "2华为 荣耀8", 2399f, new Date(), "质量好!2"));
		list.add(new Items(3, "3华为 荣耀8", 2399f, new Date(), "质量好!3"));
		list.add(new Items(4, "4华为 荣耀8", 2399f, new Date(), "质量好!4"));
		list.add(new Items(5, "5华为 荣耀8", 2399f, new Date(), "质量好!5"));
		list.add(new Items(6, "6华为 荣耀8", 2399f, new Date(), "质量好!6"));
		
		//该对象用来存放数据和视图
		ModelAndView mav = new ModelAndView();
		//设置跳转的视图
		mav.setViewName("itemList");
		//设置保存的数据
		mav.addObject("itemList", list);
		return mav;
	}
	
}

mav.setViewName("itemList");中路径就可以省略前缀:/WEB-INF/jsp和后缀.jsp

@RequestMapping(value = "/item/itemlist.action")中的.action可以省略,因为进入前端控制器后只比对路径,不会比对后缀,但是请求路径中的.action不能省,省略后前端控制器不拦截。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值