Я использую IntelliJ и импортировал проект Spring MVC. Я настроил установку maven и использовал mvn clean install для сборки своего проекта. И для запуска я настроил tomcat: run на конфигурации IntelliJ. Но красные маркеры показаны как:

enter image description here

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.luv2code</groupId>
    <artifactId>spring-security-demo</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>

    <name>spring-security-demo</name>

    <properties>
        <springframework.version>5.0.2.RELEASE</springframework.version>

        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>

        <!-- Spring MVC support -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${springframework.version}</version>
        </dependency>

        <!-- Servlet, JSP and JSTL support -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.1</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <!-- TO DO: Add support for Maven WAR Plugin -->
    <build>
        <finalName>spring-security-demo</finalName>
        <pluginManagement>
             <plugins>
                 <plugin>
                     <!-- Add maven coordinate for maven war plugin-->
                     <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-war-plugin -->

                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-war-plugin</artifactId>
                         <version>3.2.3</version>


                 </plugin>
             </plugins>
        </pluginManagement>
    </build>

</project>

Но он успешно компилируется и во время работы консоли печатается:

"C: \ Program Files \ Java \ jdk1.8.0_111 \ bin \ java.exe" -Dmaven.multiModuleProjectDirectory = C: \ Users \ AshwinPC \ Desktop \ Spring-Security \ spring-security-demo-starter \ spring-security-demo-01-base-app "-Dmaven.home = C: \ Program Files \ JetBrains \ IntelliJ IDEA Community Выпуск 2019.2 \ плагины \ maven \ lib \ maven3 " "-Dclassworlds.conf = C: \ Program Files \ JetBrains \ IntelliJ IDEA Community Версия 2019.2 \ плагины \ maven \ lib \ maven3 \ bin \ m2.conf " "-Dmaven.ext.class.path = C: \ Program Files \ JetBrains \ IntelliJ IDEA Community Edition 2019.2 \ plugins \ maven \ lib \ maven-event-listener.jar " "-javaagent: C: \ Program Files \ JetBrains \ IntelliJ IDEA Community Edition 2019.2 \ lib \ idea_rt.jar = 61598: C: \ Program Files \ JetBrains \ IntelliJ IDEA Community Edition 2019.2 \ bin "-Dfile.encoding = UTF-8 -classpath "C: \ Program Files \ JetBrains \ IntelliJ IDEA Community Edition 2019.2 \ plugins \ maven \ lib \ maven3 \ boot \ plexus-classworlds-2.6.0.jar "org.codehaus.classworlds.Launcher -Didea.version2019.2 tomcat: запустить [INFO] Поиск проектов ... [INFO] [INFO] ----------------- < com.luv2code: spring-security-demo> ------------------ [ИНФОРМАЦИЯ] Строительство Spring-security-demo 1.0 [ИНФОРМАЦИЯ] -------------------------------- [война ] --------------------------------- [ИНФОРМАЦИЯ] [ИНФОРМАЦИЯ] >>> tomcat-maven-plugin: 1.1: запустить (default-cli)> compile @ Spring-security-demo >>> [INFO] [INFO] --- maven-resources-plugin: 2.6: ресурсы (ресурсы по умолчанию) @ spring-security-demo --- [ПРЕДУПРЕЖДЕНИЕ] Использование кодировки платформы (UTF-8 фактически) для копирования отфильтрованных ресурсов, т.е. сборка - это платформа зависимый! [INFO] пропустить несуществующий каталог ресурсов C: \ Users \ AshwinPC \ Desktop \ Spring-Security \ Spring-security-demo-starter \ Spring-security-demo-01-base-app \ src \ main \ resources [INFO] [INFO] --- maven-compiler-plugin: 3.1: компиляция (компиляция по умолчанию) @ spring-security-demo --- [INFO] Компилировать нечего - все классы обновлено [INFO] [INFO] <<< tomcat-maven-plugin: 1.1: запустить (default-cli) http: // localhost: 8080 / spring-security-demo [ИНФОРМАЦИЯ] Создание Tomcat конфигурация сервера в C: \ Users \ AshwinPC \ Desktop \ Spring-Security \ Spring-security-demo-starter \ Spring-security-demo-01-base-app \ target \ tomcat 09 августа 2019 г., 10:49:23 org.apache.catalina.startup.Embedded start ИНФОРМАЦИЯ: Запуск сервера Tomcat 9 августа 2019 г., 10:49:23 org.apache.catalina.core.StandardEngine start INFO: Запуск сервлета Движок: Apache Tomcat / 6.0.29 9 августа 2019 г. 10:49:24 org.apache.coyote.http11.Http11Protocol init ИНФОРМАЦИЯ: Инициализация Coyote HTTP / 1.1 на http-8080, 9 августа 2019 г., 10:49:24 org.apache.coyote.http11.Http11Protocol start INFO: Запуск Coyote HTTP / 1.1 на http-8080

И когда я нажму: http://localhost:8080/spring-security-demo/

enter image description here

Другие классы конфигурации:

DemoController.java

  package com.luv2code.springsecurity.demo.controller;


    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;

    @Controller
    public class DemoController {

        @GetMapping("/")
        public String showHome(){
            return "home";
        }


    }

Конфиг класс:

package com.luv2code.springsecurity.demo.config;

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

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.luv2code")
public class DemoAppConfig {

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




}

Диспетчер сервлетов

package com.luv2code.springsecurity.demo.config;


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

public class MySpringMVcDispatcherServletInitilizer extends AbstractAnnotationConfigDispatcherServletInitializer {


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

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

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


}
0
Ashwin Karki 9 Авг 2019 в 08:07

2 ответа

Лучший ответ

Попробуйте сделать что-то вроде этого:
Файл-> Структура проекта-> Модули-> Проверить, был ли добавлен веб-модуль
Если "нет":
1. Добавьте этот модуль. Тогда см. Пункт 2.
Если "да":
Проверьте каталоги веб-ресурсов здесь:
2. Он должен указывать на ваш путь к каталогу webapp .

1
Anthony 9 Авг 2019 в 21:08

В вашем DemoController showHome должен вернуть ModelAndView что-то вроде этого, то ViewResolver сопоставит его с home.jsp

@RequestMapping("/")
public ModelAndView showHome() {
    return new ModelAndView("home");
}

Вы также можете обратиться здесь для более подробной информации

0
MyTwoCents 9 Авг 2019 в 06:26