SpringMVC入门篇(四)处理器映射器和处理器适配器使用配置

首先通过前期对springmvc框架的介绍,了解到处理器映射器是从前端控制器获取url请求并且给以响应,处理器适配器,是从前端控制器那里获取到要执行的handler(action)方法,去执行并反馈。

(一)

配置处理器映射器的时候有两种情况:

第一种:BeanNameUrlHandlerMapping

 

<!-- 处理器映射器 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />


配置action的时候为:

 

 

<!--handler(aciton)-->
	<bean name="/hello.action" class="zlt.helloworldtest.Hello"/>


这种方式action需要继承

 

第二种:SimpleUrlHandlerMapping

 

<!-- 简单url映射 -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/hello1.action">hello_controller</prop>
				<prop key="/hello2.action">hello_controller</prop>
			</props>
		</property>
	</bean>


这种情况采用的是注解方式进行找到对应的action方法。hello_controller是action这个bean的id。优点可以action的url的进行集中配置。

 

小结:多个处理器映射器可以共存(同一个handler可以用不同的方法配置多次,可以共存)

 

(二)配置处理器适配器(这个适配器采用了适配器设计模式)

第一种:SimpleControllerHandlerAdapter

 

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

 

 

这个规则是action实现controller接口

例如:

 

/**
 * <p>Title: package-info.java</p>
 * <p>Description:测试SpringMVC框架 </p>
 * <p>Copyright: Copyright (c) 2017</p>
 * <p>Company: www.itcast.cn</p>
 * @author 大米时代·周丽同
 * @date 2017年6月10日下午5:21:49
 * @version 1.0
 */
package zlt.helloworldtest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class Hello implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		ModelAndView mv = new ModelAndView();
		//添加模型数据
		mv.addObject("message", "Hello World!");
		//设置逻辑视图名,最终视图地址=前缀+逻辑视图名+后缀
		mv.setViewName("hello");
		return mv;
	}
}


第二种:HttpRequestHandlerAdapter

 

 

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

 

 

这个规则中要求action需要实现HttpRequestHandler。

例如:

 

Public class HelloWorldController2 implements HttpRequestHandler {
	@Override
	publicvoid handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		request.setAttribute("message", "HelloWorld!");
		request.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(request, response);
//也可以自定义响应内容
     //response.setCharacterEncoding("utf-8");
	//response.getWriter().write("HelloWorld!");
	}
}


从这种情况来看,此适配器的controller方法没有返回modelandview,可以通过response修改定义响应内容。

 

 

小结:多个处理器适配器可以共存。
 


 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女汉纸一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值