如何更改Spring控制器映射到的URL

时间:2012-03-10 21:26:01

标签: java spring-mvc

我开始学习spring框架,我找不到替代方法来调用控制器方法,我在url中传递querystring varialble,如 - /index.htm?do=login 从我的控制器调用名为“login”的控制器方法

有没有比这更好的方法 哪个网址看起来像 “http://example.com/index.htm”或“http://example.com/index/”

什么是@requestMapping以及如何使用它?

非常感谢!

调度-servlet.xml中

   <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">myController</prop>
            </props>
        </property>
    </bean>

    <bean id="myController" class="myController">
       <property name="methodNameResolver">
           <ref bean="methodNameResolver"/>
       </property>
   </bean>

      <bean id="methodNameResolver"
         class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
       <property name="paramName">
           <value>do</value>
       </property>

    </bean>

myController的

public class myController extends MultiActionController {



    public ModelAndView login(HttpServletRequest request, HttpServletResponse response) {

        return new ModelAndView("login");

    }

}

在此代码中, 我总是要将查询字符串变量传递给调用匹配控制器方法。 喜欢“http://example.com/index.htm?do=login” 这将从控制器

调用login方法

但我不想使用查询字符串变量。我怎样才能做到这一点? 是否可以使用 @RequestMapping 来调用控制器的登录方法,其URL如下所示:http://example.com/login

我尝试了这个,但它无法正常工作

@RequestMapping("/index.htm")
public ModelAndView index(@RequestParam(value = "do", required = false) String doParam)
{
        return new ModelAndView("login");
}

1 个答案:

答案 0 :(得分:0)

不确定你的问题是什么,但对于初学者来说:

@RequestMapping("/index.htm")
public void index(@RequestParam(value = "do", required = false) String doParam) {
    //...
}

将为所有后续网址调用索引方法:

  • /index.htm - doParam null方法内index()

  • /index.htm?do=login - doParam等于login

  • /index.htm?do=logout - doParam等于logout