2017-02-20 121 views
0

我正在开发一个使用Spring mvc的web应用程序。我有页面显示数据库中的所有项目。如果我点击列出的任何项目,它将显示该特定项目的一些其他详细信息。这是通过使用@PathVariable完成的。如何更改请求的URL在春天mvc,在去控制器之前

@RequestMapping(value={"/project/{name}"}) 
public String viewProject(HttpServletRequest request,@PathVariable("name")  
String projectName, ModelMap model){ 
    ....... 
    ....... 

} 

以上是我的请求映射代码。我的网址将是http://localhost:8083/releaseDashboard/project/CSOB.html(csob是我的项目名称,releaseDashboard是我的应用程序名称)。直到这我的应用程序工作正常。当我点击从这个页面的主页按钮时,我的请求映射到上面的控制器方法,我的url变成localhost:8083/releaseDashboard/project/home.html。但预期的网址是localhost:8083/releaseDashboard/home.html

任何人都可以帮我吗?我读过我们可以使用Interceptor或Filters来更改请求的URL。但我无法看到任何代码片段。

UPDATE

Web.xml中

<servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

弹簧servlet.xml中

<context:component-scan base-package="com.suntec.reldashboard.controller" /> 
    <context:component-scan base-package="com.suntec.reldashboard.service" /> 
    <context:component-scan base-package="com.suntec.reldashboard.dao" /> 
    <mvc:annotation-driven/> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
+0

了解你想要什么。但不清楚你的错误和你做了什么。为什么链接有一个'.html'?因为它是Spring MVC,它必须是'http:// localhost:8083/releaseDashboard/project/CSOB'。 –

+0

web.xml是这样配置的。这不是一个问题。如果我从web.xml中删除该html,我的网址将与您在评论中提到的相同。 – sreehari

+0

请编辑你的问题与你的配置文件 - web.xml,弹簧配置文件等。你如何配置视图解析器? –

回答

-1

在Spring MVC的上下文中,您在web.xml中的配置不正确。 将其编辑为<url-pattern>/</url-pattern>。由此,您的项目的所有请求都将通过“调度程序servlet”。

(你也可以使用像这样的<url-pattern>something-here</url-pattern>。然后你的基地网址应该有一个额外的东西在这里)。

现在,您可以访问资源,

@RequestMapping(value={"/project/{name}"}) 
public String viewProject(HttpServletRequest request,@PathVariable("name")  
String projectName, ModelMap model){ 
    ....... 
    ....... 
    return "hello"; 
} 

由URL http://localhost:8083/releaseDashboard/project/CSOB。然后projectName将是CSOB

您必须在/WEB-INF/jsp/下有一个名为hello.jsp的'jsp'文件。在该jsp文件中,您可以访问model值。

使用Spring MVC时,您不得在URL中使用.html/.jsp。使用视图解析器将所有资源绑定到VIEW。这就是如何实施的。这是因为它是'MVC'和'视图解决'。

注:

按照当前的配置, “你必须改变请求的URL”。不,你不能。那么你的网址可能是http://localhost:8083/releaseDashboard/project/CSOB.html;和projectName是“CSOB.html”。然后,您必须使用java substring函数从“CSOB.html”中提取“CSOB”。这是一个丑陋的东西!

+0

感谢您的回复。所以,如果我去这个URL http:// localhost:8083/releaseDashboard/project/CSOB它会显示hello.jsp的内容。没关系。但从这个网址,当我点击我的家,它显示的URL为http:// localhost:8083/releaseDashboard/project/home,并映射到相同的控制器方法,而不是映射到控制器方法与@RequestMapping(价值= {“home”}) – sreehari

+0

“当我点击我的家”。更改该按钮上的网址。显然你正在使用一个相对的网址。改正它。参考这个。 http://stackoverflow.com/questions/5559578/having-links-relative-to-root –

+0

目前我对home按钮的操作是“home”。那么我的网址应该是什么? – sreehari

相关问题