我正在使用tomcat服务器运行应用程序,当服务器启动时我将获取url
http://localhost:8080/TestApp/
并显示index.jsp文件但是当我点击索引文件中的链接时,它显示的是像
这样的URLhttp://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";
}
}
答案 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版本中的函数名称错误。