這篇主要講解 controller配置的幾種方式。
1. URL對應 Bean
如果要使用此類配置方式,需要在XML中做如下樣式配置
<!-- 配置handlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 配置Controller --> <bean name="/hello.do" class="cn.sxt.controller.HelloController"/>
2. 為 URL 分配 Bean
使用一個統一配置集合,對各個 URL 對應的 Controller 做關系映射
<!-- 配置handlerMapping --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello.do">helloController</prop> </props> </property> </bean> <bean id="helloController" class="cn.sxt.controller.HelloController"></bean>
該配置可以使用通配符
3. URL 匹配 Bean
如果定義的 Controller 名稱規范,也可以使用如下配置
將 hello*.do 交給 helloController 處理
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean> <bean id="helloController" class="cn.sxt.controller.HelloController"></bean>
4.使用注解進行開發
需要導入 aop.jar 包
Controller 的 開發:
/** * @Controller 注解一個控制器 需要掃描 */ @Controller public class HelloController{ /** * 注解請求的url */ @RequestMapping("/hello.do") public ModelAndView hello(HttpServletRequest req){ System.out.println("使用注解進行開發:"+req.getRemoteHost()); ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg", "使用注解開發Controller"); return mv; } }
配置文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" 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.xsd"> <!-- 注解開發適配器 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 為響應的視圖名稱加上前綴 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 為響應的視圖名稱加上后綴 --> <property name="suffix" value=".jsp"/> </bean> <!-- 掃描注解類 --> <context:component-scan base-package="cn.sxt.controller"/> </beans>
附錄:
這里附上上面配置的完整配置信息
附一
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" 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.xsd"> <!-- 配置handlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 配置handlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 配置Controller --> <bean name="/hello.do" class="cn.vincent.controller.HelloController"/> <!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 為響應的視圖名稱加上前綴 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 為響應的視圖名稱加上后綴 --> <property name="suffix" value=".jsp"/> </bean> </beans>
附二
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" 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.xsd"> <!-- 配置handlerMapping --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello.do">helloController</prop> </props> </property> </bean> <bean id="helloController" class="cn.sxt.controller.HelloController"></bean> <!-- 配置handlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 為響應的視圖名稱加上前綴 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 為響應的視圖名稱加上后綴 --> <property name="suffix" value=".jsp"/> </bean> </beans>
附三
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" 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.xsd"> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean> <bean id="helloController" class="cn.sxt.controller.HelloController"></bean> <!-- 配置handlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 為響應的視圖名稱加上前綴 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 為響應的視圖名稱加上后綴 --> <property name="suffix" value=".jsp"/> </bean> </beans>
附四
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" 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.xsd"> <!-- 注解開發適配器 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 為響應的視圖名稱加上前綴 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 為響應的視圖名稱加上后綴 --> <property name="suffix" value=".jsp"/> </bean> <!-- 掃描注解類 --> <context:component-scan base-package="cn.sxt.controller"/> </beans>