在DispatcherServlet中找不到HTTP请求的映射

时间:2016-10-04 12:14:54

标签: spring-mvc java-ee gradle spring-boot

我试图访问我的jsp页面,出于某种原因我收到了错误消息

Hibernate: select person0_.pid as pid1_0_, person0_.age as age2_0_, person0_.city as city3_0_, person0_.gender as gender4_0_, person0_.password as password5_0_, person0_.username as username6_0_ from person person0_ order by person0_.pid
2016-10-04 13:49:53.090  WARN 13276 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound             : No mapping found for HTTP request with URI [/WEB-INF/view/personform.jsp] in DispatcherServlet with name 'dispatcherServlet'
'

enter image description here

PersonController:

@Controller
public class PersonController {
@Autowired
private IPersonService personService;
@Autowired
private MessageSource messageSource;
@Autowired
private LocaleResolver localeResolver;
//@RequestMapping(value="personform")
public ModelAndView user(){
    ModelAndView mv = new ModelAndView("personform","person",new Person());
    setPageData(mv.getModelMap());
    return mv;
}

Appconfig.java:

        package App.config;

        import java.util.Locale;
        import org.springframework.context.MessageSource;
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.ComponentScan;
        import org.springframework.context.annotation.Configuration;
        import org.springframework.context.annotation.Import;
        import org.springframework.context.support.ReloadableResourceBundleMessageSource;
        import org.springframework.web.servlet.LocaleResolver;
        import org.springframework.web.servlet.config.annotation.EnableWebMvc;
        import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
        import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
        import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
        import org.springframework.web.servlet.i18n.CookieLocaleResolver;
        import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
        import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@ComponentScan("App")
@Import(DBConfig.class)
@EnableWebMvc
public class AppConfig extends WebMvcConfigurerAdapter  {
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/view/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/WEB-INF/i18/messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
    @Bean
    public LocaleResolver localeResolver(){
        CookieLocaleResolver resolver = new CookieLocaleResolver();
        resolver.setDefaultLocale(new Locale("en"));
        resolver.setCookieName("myLocaleCookie");
        resolver.setCookieMaxAge(4800);
        return resolver;
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("mylocale");
        registry.addInterceptor(interceptor);
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/app-resources/**").addResourceLocations("/resources/");
    }
}

以防万一,如果需要 - build.gradle:

group 'mbti'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        maven { url "http://repo.spring.io/libs-snapshot" }
        mavenLocal()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.0.1.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    maven { url "http://repo.spring.io/libs-snapshot" }
}

dependencies {
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.3.3.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '1.3.3.RELEASE'
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.31'
    compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.1.1'
    compile group: 'jstl', name: 'jstl', version: '1.2'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '1.3.3.RELEASE'
    compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-el', version: '8.0.32'


    testCompile group: 'junit', name: 'junit', version: '4.11'
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

1 个答案:

答案 0 :(得分:1)

在您的控制器中,取消注释@requestMapping注释并设置如下值:
@RequestMapping(value="/personform")

如果没有上述@requestMapping注释,您的视图解析器无法找到正确的映射。

请注意,通过在浏览器中键入uri无法直接访问WEB-INF目录下的jsp页面,您必须使用控制器或servlet(在您的情况下是控制器)来访问它。

相关问题