spring的三种映射处理器的控制器***Controller要继承AbstractController类并重写protected ModelAndView handleRequestInternal(){}方法
(一) BeanNameUrlHandlerMapping (默认)可以省略不写,不常用;
- <!-- 配置文件形式要配置的组建:Controller,handlermapping(有默认规则),viewResolver,interceptor -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!-- 配置从项目根目录到一端路径 -->
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <!-- 文件后缀名称 -->
- <property name="suffix" value=".jsp"/>
- </bean>
- <!-- 配置controller,name为要访问的控制器的路径-->
- <bean id="TestController" name="/hello.do" class="com.url.controller.TestController"></bean>
- <!-- BeanNameUrlHandlerMapping 默认配置就是,所以用的时候,就不用配置 -->
- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
(二)SimpleUrlHandlerMapping是Spring MVC中适用性最强的Handler Mapping类,允许明确指定URL模式和Handler的映射关系。有两种方式声明SimpleUrlHandlerMapping。
(第一种方式)prop key
key是URL模式,属性值是Handler的id或者name,其中id与name可以任意命名,要尽量做到见名知意
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- <context:component-scan base-package="com.sdga" /> -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/welcome.html">welcomeController</prop>
<prop key="/helloWorld.html">helloController</prop>
<propkey="/*/welcome.htm">welcomeController</prop>
<propkey="/helloGuest.htm">helloGuestController</prop>
</props>
</property>
</bean>
<bean id="helloController" class="com.sdga.controller.HelloController"/>
<bean id="welcomeController" class="com.sdga.controller.WelcomeController"/>
</beans>
(第二种方式)value
等号左边是URL模式,右边是Handler的ID或者名字。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- <context:component-scan base-package="com.sdga" /> -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/welcome.htm=welcomeController
/*/welcome.htm=welcomeController
/helloGuest.htm=helloGuestController
</value>
</property>
</bean>
<bean id="helloController" class="com.sdga.controller.HelloController"/>
<bean id="welcomeController" class="com.sdga.controller.WelcomeController"/>
</beans>
(二)Controller要继承AbstractController类并重写protected ModelAndView handleRequestInternal(
HttpServletRequest request,HttpServletResponse response)throws Exception {}
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class HelloController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
ModelAndView model =new ModelAndView("hello");
model.addObject("message", "Hello World");
return model;
}
}
(三) ControllerClassNameHandlerMapping (控制器名称访问)
这种方式一般不采用,因为一旦控制器名称更改的话,访问路径也得跟着更改,变动性较大.
- <!-- 配置文件形式要配置的组建:Controller,handlermapping(有默认规则),viewResolver,interceptor -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!-- 配置从项目根目录到一端路径 -->
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <!-- 文件后缀名称 -->
- <property name="suffix" value=".jsp"/>
- </bean>
- <!-- 配置controller,name为要访问的控制器的路径-->
- <bean id="TestController" class="com.url.controller.TestController"></bean>
- <!-- 控制类的类名控制器,访问时类名首字母需要小写 -->
- <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
- </bean>