我使用以下代码将DispatcherServlet
映射到/
网址:
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] {"/"};
}
我可以使用以下网址访问我的@Controller
处理程序方法:
然后我将DispatcherServlet
映射更改为以下内容:
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] {"/app"}; //<=== HERE
}
我希望下面的新网址能够正常运行,但实际上并非如此。
http://localhost:8080/MyWebApp/的应用 /控制器1 /方法1
它总是给我404
错误。
我尝试了以下两种配置Controller
的方法,但都不起作用。
选项1:
@Controller
@RequestMapping("controller1")
public class Controller1 {
@RequestMapping("method1")
public String Method1(Model model) {
...
}
选项2:
@Controller
@RequestMapping("/app/controller1") //<--- Still doesn't work.
public class Controller1 {
@RequestMapping("method1")
public String Method1(Model model) {
...
}
为什么呢? getServletMappings()
如何影响最终的网址?
奇怪的是。如果我写/app/*
而不只是/app
。有用。但如果是这样,/
怎么可能起作用呢?如果逻辑一致,则应为/*
。
但是当我尝试时,如果我使用/*
,servlet引擎似乎出现故障,甚至无法解析jsp
页面。以下是我在浏览器中看到的内容。如何显示JSP页面源?
&lt;%@ page language =“java”contentType =“text / html; charset = ISO-8859-1” 的pageEncoding = “ISO-8859-1” %&GT; ROOT:$ {root}!
WEB:$ {servlet}!
我的WebMVC配置:
@Configuration
@EnableWebMvc
@ComponentScan(basePackageClasses= {com.its.cloud.web.BeaconClassForComponentScan.class})
public class ITSCloudWebConfig extends WebMvcConfigurerAdapter {
@Bean
public ServletApplicationContextExplorer servletApplicationContextExplorer() {
return new ServletApplicationContextExplorer();
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public UrlBasedViewResolver setupViewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix("/views/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
}
包含我的控制器的包的结构:
使用BeaconClassForComponentScan
作为@ComponentScan
注释的标记类,我相信web
,interfaces
,impls
和controllers
pacakges将全部扫描。
也许是一个相关主题,但仍未解决问题:Spring MVC configure url-pattern