gpt4 book ai didi

spring - IntelliJ 13、Tomcat 7 (Servlet 3)、Spring 4 和上下文/servlet 映射如何相关

转载 作者:行者123 更新时间:2023-11-28 23:33:54 25 4
gpt4 key购买 nike

如果您为 Spring 4 和 Tomcat 使用一个空的 IntelliJ 13 项目设置,完全使用 Java(无 XML)配置,您可以使用如下内容初始化您的调度程序 servelet 和 Tomcat:

1

public class WebAppInit extends AbstractAnnotationConfigDispatcherServletInitializer
{
@Override
protected Class<?>[] getRootConfigClasses()
{
return new Class<?>[]{SpringConfig.class};
}

@Override
protected Class<?>[] getServletConfigClasses()
{
return new Class<?>[]{SpringWebMVCConfig.class};
}

@Override
protected String[] getServletMappings()
{
return new String[]{"/url"};
}

@Override
protected Filter[] getServletFilters()
{
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
return new Filter[]{characterEncodingFilter};
}
}

2

然后在IntelliJ13的Run Configuration里有这个:

From Run Configuration in IntelliJ13

3

最后是其余 Controller 的映射:

@RestController
public class RootController
{
@Autowired
private SomeDAO someDAO;

@RequestMapping(value = "/")
public String root()
{
return someDAO.getStuff();
}



}

我的问题是什么控制什么?

A) 如果我更改 1 中的映射,请求映射 (3) 将不再有效。

B) 如果我将 1 和 3 设置为“/”并将 2 更改为 .../url 然后我在浏览器中使用 .../url 访问 Controller 。

C) 但是,如果我将 1 和 2 设置为 .../url2,那么当我在浏览器中转到 .../url2 时,我会得到 404。

我一直认为 1 为 Spring 调度程序 servlet 设置映射,2 就 IDE 而言设置应用程序上下文(类似于将 war 文件命名为“url”然后放入 webapps),3 是只是一个相对于 servlet 上下文的 url 映射。如果是这样,那么我不明白为什么案例 C 会导致 404。

最佳答案

在 IntelliJ 中,您将 Web 应用程序的上下文路径配置为 /url2 .这意味着所有对以 /url2/ 开头的 URL 的请求由 Tomcat 路由到 webapp 的一个组件,而所有其他请求都由 Tomcat 路由到另一个 webapp(如果没有 webapp 映射到 URL,则导致 404)

在 Spring webapp 配置中,您要在 webapp 内部配置 Spring servlet 映射到的路径。并且您将其配置为 /url2 .因此,当您从 URL 中删除上下文路径(用于选择 webapp)时,将检查生成的路径,如果它是 /url2 ,然后它转到 Spring servlet。否则,它会转到 web 应用程序中的另一个资源。

最终结果是,要命中 Spring servlet,您需要一个类似

的路径
http://localhost:8080/url2/url2

请注意,将 Spring servlet 映射到类似 /url2 的路径没有多大意义,因为只有这条路径会通向 servlet,该 servlet 应该用于 Controller 映射到的许多不同路径。您可能想将其映射到 /url2/*这意味着所有对路径的请求,在 webapp 中(因此在上下文路径之后),以 /url2/ 开头, 将转到 Spring servlet。

关于spring - IntelliJ 13、Tomcat 7 (Servlet 3)、Spring 4 和上下文/servlet 映射如何相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26850991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com