Spring应用程序无法访问jsp页面

时间:2014-05-15 09:54:49

标签: spring spring-mvc

在我的spring应用程序中,我使用基于java代码的配置而不是xml文件。当我尝试从我的应用程序访问任何页面时,浏览器将重定向到正确的映射URL,但我仍然面临404错误页面。

我的控制器类是这样创建的:

@Controller
@RequestMapping(value="acesso")
public class AcessoController {

    @RequestMapping(value="login")
    public ModelAndView login() {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("acesso/login");
        return mav;
    }
}

我的WebAppInitializer.java是这样的:

@Order(value=1)
public class WebAppInitializer implements WebApplicationInitializer {

    @SuppressWarnings("resource")
    @Override
    public void onStartup(ServletContext container) {
      // Create the 'root' Spring application context
      AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
      rootContext.register(WebAppConfig.class);

      // Create the dispatcher servlet's Spring application context
      AnnotationConfigWebApplicationContext jspContext = new AnnotationConfigWebApplicationContext();
      jspContext.register(JspDispatcherConfig.class);

      // Register and map the dispatcher servlet
      ServletRegistration.Dynamic jsp_dispatcher = container.addServlet("jsp_dispatcher", new DispatcherServlet(jspContext));
      jsp_dispatcher.setLoadOnStartup(1);
      jsp_dispatcher.addMapping("*.jsp");

      // Create the dispatcher servlet's Spring application context
      AnnotationConfigWebApplicationContext jsonContext = new AnnotationConfigWebApplicationContext();
      jsonContext.register(JsonDispatcherConfig.class);

      // Register and map the dispatcher servlet
      ServletRegistration.Dynamic json_dispatcher = container.addServlet("json_dispatcher", new DispatcherServlet(jsonContext));
      json_dispatcher.setLoadOnStartup(2);
      json_dispatcher.addMapping("*.json");

      // Create the dispatcher servlet's Spring application context
      AnnotationConfigWebApplicationContext xmlContext = new AnnotationConfigWebApplicationContext();
      xmlContext.register(XmlDispatcherConfig.class);

      // Register and map the dispatcher servlet
      ServletRegistration.Dynamic xml_dispatcher = container.addServlet("xml_dispatcher", new DispatcherServlet(jspContext));
      xml_dispatcher.setLoadOnStartup(3);
      xml_dispatcher.addMapping("*.xml");
    }

}

我的jspDispatcherConfig.java是这样的:

@Configuration
@Import(WebAppConfig.class)
public class JspDispatcherConfig {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/view/jsp/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}

在我的文件夹WEB-INF中,我有以下结构:

-view
--json
--jsp
---acesso
----login.jsp
---erro
----publico
----privado
---privado
----admin.jsp
----customer.jsp
--xml

任何人都可以告诉我这里做错了什么?

1 个答案:

答案 0 :(得分:0)

好的,然后我解决了修改控制器中的映射字符串的问题:而不是使用,例如,

@RequestMapping(value="login")

我用这个:

@RequestMapping(value="login.htm")

(或其他扩展,取决于视图的类型 - jsp,json或xml)。现在它工作正常。