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

来源:互联网 发布:东芝移动硬盘加密软件 编辑:程序博客网 时间:2024/05/17 11:37

首先通过前期对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 {@Overridepublic 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 {@Overridepublicvoid 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修改定义响应内容。


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



阅读全文
0 0
原创粉丝点击