如果您为Spring4和Tomcat接受了一个空的IntelliJ 13项目设置,并且完全使用Java (无XML)配置,那么您可以使用如下内容初始化dispatcher、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中的运行配置中也存在这样的情况:

3.
最后是rest控制器的映射:
@RestController
public class RootController
{
@Autowired
private SomeDAO someDAO;
@RequestMapping(value = "/")
public String root()
{
return someDAO.getStuff();
}
}我的问题是什么控制什么?
如果我在1中更改映射,则请求映射(3)不再工作。
B)如果我将1和3设置为"/“,并将2更改为./url,则在浏览器中使用./url命中控制器。
但是,如果我将1和2设置为./url2 2,那么当我在浏览器中转到./url2 2时,就会得到404。
我一直认为,1设置Spring dispatcher servlet的映射,2设置IDE的应用上下文(类似于将war文件命名为" url“,然后放到webapp中),而3只是相对于servlet上下文的url映射。如果是这样的话,我就不明白为什么案例C会导致404。
发布于 2014-11-10 19:17:50
在IntelliJ中,您将web应用程序的上下文路径配置为/url2。这意味着从/url2/开始的对URL的所有请求都由Tomcat路由到webapp的一个组件,而所有其他请求则由Tomcat路由到另一个webapp (如果没有webapp映射到URL,则生成404 )。
在Spring配置中,您将在webapp中配置servlet映射到的路径。您正在将其配置为/url2。因此,当您从URL中删除上下文路径(用于选择webapp)时,结果路径将被检查,如果是/url2,则会转到servlet。当然,它会转到the应用程序中的另一个资源。
最终的结果是,要命中servlet,您需要一个类似的路径
http://localhost:8080/url2/url2注意,将servlet映射到像/url2这样的路径没有多大意义,因为只有这个路径才会导致servlet,它应该用于许多不同的路径,控制器被映射到该路径。您可能希望将其应用到/url2/*,这意味着webapp (在上下文路径之后)中对路径的所有请求(从/url2/开始)都将转到servlet。
https://stackoverflow.com/questions/26850991
复制相似问题