Spring MVC中2种映射控制器的方法

在使用Spring MVC的过程中,比较重要的一个关键知识点是使用Controller的方法。本文介绍了通过配置文件和通过注解Annotation,这2种使用Controller的方法。

1.通过配置文件applicationContext.xml

这种方法比较原始。之所以说原始,应为现在的框架中已经不常用了。这种方法的缺点是,每次增加/修改/删除Controller,都要到配置文件里添加如下的配置项。

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<!-- Register the controller bean ofiplatform. -->
<bean name="/" class="com.abc.platform.controller.PlatformController"/>

显然是比较麻烦。
配置项增加后,需要编写Controller的实现代码。

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;


publicclass PlatformController extends AbstractController {

@Override
protected ModelAndView handleRequestInternal(HttpServletRequestrequest, 
HttpServletResponseresponse)throws Exception {

   ModelAndViewmv =new ModelAndView("index");
   returnmv;

}

}

1.通过使用注解@Controller@RequestMapping("")

先来看一段代码。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
publicclass CommonController {

    publicCommonController() {
      //TODO Auto-generatedconstructor stub
    }

    @RequestMapping("/")
    public String retValue()
    {
      //TODO Some businesslogic necessary.
      return"index";
   }
}

比较这两段代码,可以发现,不仅不需要去一个一个配置Controller的映射,而且代码也相对简单许多,没有从AbstractController去继承。多的是2个注解:@Controller@RequestMapping("/")

优点不用多说,所有的变更,约束在类的内部。逻辑上要清楚许多。

需要注意的是,使用注解,不是不需要配置applicationContext.xml,而是,需要配置框架对于注解的扫描路径。

<!-- Enable Spring MVC annotation.-->
<context:annotation-config/>

<!-- 默认的注解映射的支持  -->
<mvc:annotation-driven/>

<!-- 设置使用注解的类所在的jar包 -->
<context:component-scanbase-package="com.abc.platform.controller"></context:component-scan>

至此,一般的Spring MVC中的对控制器部分的需求,已经足够应对了。

附:对于视图解释类的配置。不管采取以上哪种方式,对于视图的解析都是一致的。

<!-- 视图解释类:对转向页面的路径解析。 -->
<!-- suffix可为空,实现依据扩展名来选择视图解释类的逻辑 -->
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
  <propertyname="prefix"value="/jsp/"/>
  <propertyname="suffix"value=".jsp"/>
  <propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>
</bean>

PathVariable,主要用途是提取RequestMapping url中包含的路径变量,目前多用于提供伪静态化页面url,

@RequestMapping("/login/{loginId}.htm")
public String login(@PathVariable("loginId")Long loginId, ModelMap model){
    ...    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

招财猫_Martin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值