Spring MVC - 返回视图如何更正上下文根

时间:2016-10-11 17:28:09

标签: java spring spring-mvc

我的spring mvc应用程序是在root url" /"上构建和部署的。使用glassfish服务器。

http://mydomain/

现在我想使用其他上下文路径部署新版本,例如" v2 /"

http://mydomain/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"在返回视图?

http://mydomain/v2/home 代替 http://mydomain/home

1 个答案:

答案 0 :(得分:0)

我正在对身份验证进行重定向错误,这是我的问题..

无论如何,我可以尝试一些未来的初学者问题

要更改您的上下文路径:

http://domain/http://domain/NewContextRoot/

编辑你的服务器配置xml并添加ContextRoot参数,在我的情况下,我正在使用glassfish 4.1.1,然后我编辑我的“glassfish-web.xml”添加这一行:

http://domain/

的配置
<glassfish-web-app>
   <context-root>/</context-root>
</glassfish-web-app>

http://domain/NewContextRoot/

的配置
<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

https://stackoverflow.com/questions/2437465/how-to-change-context-root-of-a-dynamic-web-project-in-eclipse

https://stackoverflow.com/questions/664059/how-do-you-specify-the-root-context-in-your-web-app-tags-in-web-xml

但如果我不使用玻璃鱼?简单:所有服务器都允许您创建服务器配置文件,您只需要正确找到名称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