在SpringMVC中,对于Controller的配置方式有很多种,如下做简单总结
第一种 URL对应Bean
如果要使用此类配置方式,需要在XML中做如下样式配置
<!-- 表示将请求的URL和Bean名字映射--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean name="/hello.do" class="com.wc..HelloController"></bean>
以上配置,访问/hello.do就会寻找ID为/hello.do的Bean,此类方式仅适用小型的应用系统
第二种 为URL分配Bean
使用一个统一配置集合,对各个URL对应的Controller做关系映射
这是最常用的映射配置方式
<!-- 最常用的映射配置方式 --> <!-- <prop key="/hello*.do">helloController</prop>--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- key对应url的请求名 value对应处理器的id --> <prop key="/hello.do">helloController</prop> </props> </property> </bean> <bean name="helloController" class="com.wc.controller.HelloController"></bean>
此类配置还可以使用通配符,访问/hello.do时,Spring会把请求分配给helloController进行处理
第三种 URL匹配Bean
如果定义的Controller名称规范,也可以使用如下配置
<!-- 将hello*.do交给helloController处理--> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean> <bean id="helloController" class="test.HelloController"></bean>
第四种 注解
首先在配置文件中开启注解
<!-- 使用spring组件扫描该包下的注解 --> <context:component-scan base-package="com.wc.controller" />
package com.wc.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloController { @RequestMapping("/hello")//映射 public ModelAndView hello(HttpServletRequest req, HttpServletResponse resp){ ModelAndView mv = new ModelAndView(); //封装要显示到视图中的数据 mv.addObject("msg","hello springmvc annotation"); //视图名 mv.setViewName("hello"); //WEB-INF/jsp/hello.jsp return mv; } }
在编写类上使用注解@org.springframework.stereotype.Controller标记这是个Controller对象
使用@RequestMapping("/hello.do")指定方法对应处理的路径,这里只是简单示例,会有更复杂配置
代码类如下:
<!-- 使用spring组件扫描该包下的注解 --> <context:component-scan base-package="com.wc.controller" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
package test; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.RequestMapping; // http://localhost:8080/spring/hello.do?user=java @org.springframework.stereotype.Controller public class HelloController{ @SuppressWarnings("deprecation") @RequestMapping("/hello.do") public String hello(HttpServletRequest request,HttpServletResponse response){ request.setAttribute("user", request.getParameter("user") + "-->" + new Date().toLocaleString()); return "hello"; } }
时间: 2024-10-20 14:22:54