springMVC的处理器配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
	
	<!-- 
		配置Handler(controller)的bean,让Handler(controller)在spring容器中加载
		bean的name属性就相当于一个url,所以name属性应该写成url形式,且应该以.action结尾,因为在web.xml中配置了url-pattern为.action
	-->
	<bean id="queryItems1" name="/queryItems.action" class="com.java.controller.ItemsController"/>
	<bean id="queryItems2" name="/queryItems4.action" class="com.java.controller.ItemsHandler"/>
	<!-- 配置注解的Handler(Controller)的bean,不需要id和name -->
	<!-- <bean class="com.java.controller.ItemsAnnotationController"/> -->
	
	<!-- 
		设置包扫描,设置后不需要将Handler(Controller)在该文件里面配置成bean了,
		它会自动扫描标注了@Controller,@Service,@Repository,@Component注解的类
		实际开发中使用这种方式 
	-->
	<context:component-scan base-package="com.java.controller"></context:component-scan>
	
	<!-- 
		配置处理器映射器
		处理器映射器会将bean的name作为url进行查找(映射路径),需要在配置Handler(Controller)时指定bean的name属性,也就是url 
	-->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
	<!-- 
		另一种处理器映射器:简单url映射器
		同一个Handler可以有多个简单url映射 
	-->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<!-- 同一个Handler可以有多个简单url映射  -->
				<prop key="/queryItems1.action">queryItems1</prop>
				<prop key="/queryItems2.action">queryItems1</prop>
				<prop key="/queryItems3.action">queryItems2</prop>
			</props>
		</property>
	</bean>
	
	
	<!-- 配置处理器适配器:配置了该处理器适配器后,Handler需要实现Controller接口 -->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
	<!-- 另一个处理器适配器 :配置了该处理器适配器后,Handler需要实现HttpRequestHandler接口-->
	<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
	
	
	<!-- 配置视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>


	<!-- 配置注解的处理器映射器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
	<!-- 配置注解的处理器适配器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
	<!-- 该标签可以直接代替上面的两个配置注解的处理器映射器和适配器的配置,而且还会加载很多其他的参数配置,比如会加载json的转换器 -->
	<!-- <mvc:annotation-driven></mvc:annotation-driven> -->


</beans>


一.非注解的处理器映射器和适配器
    非注解的处理器映射器:
        ①:<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
           处理器映射器会将bean的name作为url进行查找(映射路径),需要在配置Handler(Controller)时指定bean的name属性,也就是url
        ②:<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
                <props>
                    <prop key="/queryItems1.action">queryItems1</prop>
                    <prop key="/queryItems2.action">queryItems2</prop>
                </props>
            </property>
           </bean>
           需要在配置的Handler(Controller)bean中设置bean的id属性,id被用在<prop>de标签里面
         key即为映射的url访问路径,作用同第一种映射器的Handler的name
         多个处理器映射器可以同时存在,
    非注解的处理器适配器:
        ①:<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
            配置了该处理器适配器后,Handler(Controller)需要实现Controller接口
        ②:<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
            配置了该处理器适配器后,Handler需要实现HttpRequestHandler接口
            配置此种处理器适配器后Handler的编写类似于原始的servlet,利用request进行内部转发或response重定向
            多个适配器可以同时存在
            
二.注解的处理器映射器和适配器
    ①:注解的处理器映射器:
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    ②:注解的处理器适配器:
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    ③:<mvc:annotation-driven></mvc:annotation-driven>
        <mvc:annotation-driven></mvc:annotation-driven>可以直接代替上面的两个配置注解的处理器映射器和适配器的配置,
        而且还会加载很多其他的参数配置,比如会加载json的转换器,实际开发中会使用这种方式
    注意:注解的处理器映射器必须和注解的处理器适配器配对使用
    ④:<context:component-scan base-package="com.java.controller"></context:component-scan>
        设置包扫描,设置后不需要将Handler(Controller)在该文件里面配置成bean了,
        它会自动扫描标注了@Controller,@Service,@Repository,@Component注解的类
        实际开发中使用这种方式     
        
三.Controller的方法的返回值的几种类型
    ①:ModelAndView
        需要定义一个ModelAndView对象,将数据和映射路径放在里面
    ②:String
        可以在定义的方法的形参里面定义一个Model或者ModelMap对象,用来存放数据,返回的字符串的值就是逻辑视图名(url映射路径,同上)
        此种方法可以进行重定向和转发
        ①:重定向:逻辑视图名前面加上redirect
            return "redirect:queryItems.action";
        ②:内部转发:逻辑视图名前面加上forward
            return "forward:queryItems.action";
    ③:void
        可以在定义的方法的形参里面定义request和response,用来存放和读取传输的数据,并进行servlet形式的重定向和转发
        也可以通过response指定响应结果(跟servlet差不多)
    


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值