`getServletMapping()`如何影响Spring WebMVC中的URL?

时间:2015-11-04 13:14:26

标签: spring-mvc servlets

我使用以下代码将DispatcherServlet映射到/网址:

@Override
protected String[] getServletMappings() {
    // TODO Auto-generated method stub
    return new String[] {"/"};      
}

我可以使用以下网址访问我的@Controller处理程序方法:

  

http://localhost:8080/MyWebApp/controller1/method1

然后我将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()如何影响最终的网址?

ADD 1

奇怪的是。如果我写/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}!

ADD 2

我的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;
    }
}

包含我的控制器的包的结构:

enter image description here

使用BeaconClassForComponentScan作为@ComponentScan注释的标记类,我相信webinterfacesimplscontrollers pacakges将全部扫描。

价:

也许是一个相关主题,但仍未解决问题:Spring MVC configure url-pattern

0 个答案:

没有答案