我的spring mvc应用程序是在root url" /"上构建和部署的。使用glassfish服务器。
现在我想使用其他上下文路径部署新版本,例如" v2 /"
但是当我使用非根路径运行时,控制器会尝试返回" /"不要" v2"
示例:
这是我的控制器方法:
@RequestMapping(value = "/admin/home", method = RequestMethod.GET)
public ModelAndView adminOperationsPage() {
ModelAndView model = new ModelAndView();
model.setViewName("/admin/home");
return model;
}
我的viewResolver:
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
如何考虑Context Root" v2"在返回视图?
答案 0 :(得分:0)
我正在对身份验证进行重定向错误,这是我的问题..
无论如何,我可以尝试一些未来的初学者问题:
要更改您的上下文路径:
http://domain/至http://domain/NewContextRoot/
编辑你的服务器配置xml并添加ContextRoot参数,在我的情况下,我正在使用glassfish 4.1.1,然后我编辑我的“glassfish-web.xml”添加这一行:
的配置<glassfish-web-app>
<context-root>/</context-root>
</glassfish-web-app>
的配置
<glassfish-web-app>
<context-root>/NewContextRoot</context-root>
</glassfish-web-app>
事实上有些人说你重命名你的.war文件或者将你的artifactId(pom文件)更改为你的服务器默认获取名称并创建这个上下文root但我不同意这些决议,你失去了对你的控制权应用程序这样做。如果要部署多个实例,则应考虑到这一点。
自:
https://stackoverflow.com/questions/31005066/how-to-set-spring-root-context-path
但如果我不使用玻璃鱼?简单:所有服务器都允许您创建服务器配置文件,您只需要正确找到名称glassfish-web.xml,jboss-web.xml等...并将其置于“WEB-INF”...
将新的上下文路径添加到jsp文件中:
使用$ {pageContext.request.contextPath}
自:
Spring MVC: Url path appending when posting the form
Spring MVC Request URLs in JSP
要将新的上下文根添加到弹簧控制器中:
@Controller
class MyController {
@RequestMapping
public void handleMe(HttpServletRequest request) {
String path = request.getContextPath();
}
}
自:
In spring mvc how to get the context path in controller
希望有帮助= D