如何在spring框架中修复我的url

时间:2013-04-09 04:52:53

标签: redirect spring-mvc

我正在使用Spring MVC3.2并且我有一个注册表单(http://my-server.com:8080/tracks/apks)。用户将其发布到服务器,服务器将在验证失败时返回错误消息。但是我从服务器收到错误消息,URL与我想要的不同。这是我的代码:

Web.xml
<servlet-mapping>
    <servlet-name>tracks</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


applicationContext.xml
<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/pages/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

@Controller
@RequestMapping("/apks")
public class ApkController {

@RequestMapping()
public ModelAndView index() {
    Map<String, Object> modelMap = new HashMap<String, Object>();
    modelMap.put("menus",   AdminService.getMenus("apks"));
    return new ModelAndView("apks", "model", modelMap);
}

@RequestMapping(value = "/insert", method = RequestMethod.POST)
public ModelAndView uploadApk(ApkInfo apkInfo, BindingResult bindingResult) {

     Map<String, Object> modelMap = new HashMap<String, Object>();
     modelMap.put("menus",   AdminService.getMenus("apks"));

     if (!fileExists(apk.getFileName())){

     modelMap.put("message", message); 
     }

     //Do something

     return new ModelAndView("apks", "model", modelMap);
}

调用uploadApk后,我预计会http://my-server.com:8080/tracks/apks,但返回的网址为http://my-server.com:8080/tracks/apks/insert

我该怎么做才能修复它?

提前致谢。

2 个答案:

答案 0 :(得分:0)

&#39;返回的网址&#39;意思?

您应该访问&#39; http://my-server.com:8080/apks/insert&#39;拨打&#39; uploadApk&#39;方法 因为你有

@RequestMapping("/apks")

在您的控制器上

@RequestMapping(value = "/insert", method = RequestMethod.POST)

在您的&#39; uploadApk&#39;方法


你是怎么称呼'uploadApk&#39;方法

我认为您应该更多地解释它以获得适当的答案。


由于web.xml中servlet-mapping的url-pattern是&#39; /&#39;, 你应该删除&#39; / track&#39;在你的网址。

&#39;轨道&#39;只是一个servlet名称而不是servlet路径。

因此,如果您访问/ tracks / apks / insert,则会出现404错误。 访问/ apks / insert代替。


我猜您在调用“uploadApk”之后可能需要重定向。方法 因为你附加了重定向&#39;在您的问题上标记并使用“返回的网址”字样。 (右?)

如果我的猜测正确并且您想要重定向浏览器,请参阅SpringMVC 3.2 Redirect View docs

使用以下代码重定向。

return new RedirectView("url-you-want");

return "redirect:url-you-want"

答案 1 :(得分:0)

观察结果。

  1. 在你的web.xml中,你指定了context-paran,servlet track和listener吗?
  2. 上下文是:在spring配置文件中启用了组件扫描吗?
  3. 在方法级别使用requestMapping将请求映射到特定方法。