2012-02-15 65 views
0

我正在改变一个项目,该项目在端口8080上使用了一个简单的java HTTPServer来使用Spring MVC servlet框架。链接(href)与Spring MVC中的应用程序无关?

有很多的应用程序中的链接,像这样:

<a href=\"/rule\">Manage rules</a><br/> 

后就正常使用要求,如:

http://localhost:8080/send 

然而,这些现在不工作,除非我把这个servlet名称在前面像这样:

"<a href=\"/ServletName/rule\">Manage rules</a><br/>" 

只是想知道是否有任何解决方法,或是否只是改变所有的href链接来在它们前面添加servlet名称?

请注意,我不必在方法启动时在我的@RequestMapping调用中添加servlet名称,这是其问题的唯一链接。例如。如果您在视图层使用JSP时,使用有一个链接标签的标签库(或自己写一个)能正常工作,而不在前面

@RequestMapping(value = "/send", method = RequestMethod.GET) 
+0

使用URL标记? – 2012-02-15 17:05:57

+0

所有href链接都与当前上下文相关。如果你使用的是Apache服务器,你可以配置你的apache服务器,使其在每个请求中包含servlet名称,然后它会碰到你的应用服务器。 – 2012-02-15 17:32:32

回答

5

添加servlet名称。基本上,链接标记有做创建网址

HttpServletResponse.encodeURL(originalUrl) 

在JSTL的<c:url>标签确实如此,但它只生成URL,而不是链接标签,但它可以让你有这样的:

<c:url value="your/relative/url" var="somevar" /> 
<a href="${somevar}">Link Text</a> 
+0

嗨,我没有使用JSP恐怕。我认为可能有一种方法可以通过xml文件来完成 - 可以在web.xml或applicationContext.xml中重写URL或其他东西? – Rory 2012-02-15 18:01:41

+0

@Rory很好*您在视图层中使用了什么?不要告诉我你正在从java代码直接输出。 – 2012-02-16 09:12:53

+0

是的..使用HttpServletResponse参数做httpServletResponse.getWriter.write(“); – Rory 2012-02-16 10:03:09