404 - запрошенный ресурс недоступен - PullRequest
0 голосов
/ 15 мая 2018

При попытке сделать простую программу для Spring MVC я всегда получал одну и ту же ошибку при запуске http://localhost:8080/project_name/:

404 - the requested resource is not available

Это архитектурный проект:

src
|    +--com
|            +--memorynotfound
|                +--config
|                    |--ServletInitializer.java
|                    |--WebConfig.java
|                +--controller
|                    |--HomeController.java
|    +--resources
|    +--webapp
|        +--WEB-INF
|            +--views
|                |--index.jsp

Вот файлы в пакете com.memorynotfound.config:

ServletInitializer.java

package com.memorynotfound.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

}

WebConfig.java

package com.memorynotfound.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.memorynotfound")
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}

Файлы в пакете com.memorynotfound.controller:

HomeController.java

package com.memorynotfound.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.ui.ModelMap;

@Controller
@RequestMapping("/")
public class HomeController {

    @RequestMapping(method = RequestMethod.GET)
    public String index(ModelMap model){
        System.out.println("This is a test ================>");
        model.addAttribute("message", "Spring MVC Java Configuration Example");
        return "index";
    }

}

И, наконец, файл Jsp:

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring MVC Java Configuration Example</title>
</head>
<body>

    ${message}

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я решил проблему, выполнив:

  • щелкните правой кнопкой мыши имя проекта и выберите свойства
  • Выберите сборку развертывания
  • Добавить пружину и банки JTL
0 голосов
/ 16 мая 2018

Я думал, что когда вы используете Spring MVC без файла web.xml, вам нужно было предоставить реализацию WebApplicationInitializer

Без такого инициализатора вам все равно понадобитсяпредоставить web.xml файл.

Минимально ваш экземпляр WebApplicationInitializer должен, вероятно, использовать setLoadOnStartup(1) и предоставить отображение для диспетчера.

На указанной выше веб-странице

public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) {
        ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
        registration.setLoadOnStartup(1);
        registration.addMapping("/example/*");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...