Spring应用程序中的根上下文路径

时间:2015-04-25 12:40:00

标签: spring model-view-controller

我正在使用tomcat服务器运行应用程序,当服务器启动时我将获取url

http://localhost:8080/TestApp/

并显示index.jsp文件但是当我点击索引文件中的链接时,它显示的是像

这样的URL

http://localhost:8080/testsuccess

但它应该显示为

http://localhost:8080/TestApp/testsuccess

任何请帮助我解决这个问题。

SpringConfiguration.java

@Configuration
@EnableWebMvc
@ComponentScan("com.testapp")
@EnableTransactionManagement
public class SpringConfiguration {
   @Bean
   public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    return viewResolver;
}
}

SpringWebAppInitializer.java

公共类SpringWebAppInitializer实现了WebApplicationInitializer {

@Override
public void onStartup(ServletContext container) throws ServletException {
    AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
    appContext.register(SpringConfiguration.class);
    ServletRegistration.Dynamic dispatcher = container.addServlet(
            "SpringDispatcher", new DispatcherServlet(appContext));
    dispatcher.setLoadOnStartup(1);
    dispatcher.addMapping("/");
}

}

MyController.java

@Controller
public class MyFirstController 
 {

@RequestMapping(value = "/" , method = RequestMethod.GET)
public String testApp() throws Exception{
    return "index";
}

@RequestMapping(value = "/testsuccess", method = RequestMethod.GET)
public String testAppSuccess() {
    Map<String, Object> model = new HashMap<String, Object>();
    return "success";
}

}

2 个答案:

答案 0 :(得分:3)

得到它我应该使用

 <a href="<c:url value='/testsuccess'/>">Next</a> 

它将给出上下文路径。

答案 1 :(得分:2)

我认为您的问题来自index.jsp中的链接。它们可能看起来像<a href="/testsuccess">...</a>您应该使用jstl或spring标记lib来处理页面中的链接/ URL。它们都能够预先添加应用程序的部署/上下文路径。

jstl示例: 如果包含taglib xmlns:c="http://java.sun.com/jsp/jstl/core",您可以创建一个类似<a href="<c:url value='/testsuccess'/>">..</a>

的锚点

春天的例子: 使用taglib xmlns:spring="http://www.springframework.org/tags",您的链接将分两步创建:

<spring:url value="/testsuccess" var="myurl" htmlEscape="true"/>
<a href="${myurl}">...</a>

更新: jstl taglib版本中的函数名称错误。