【问题标题】:How to run the imported Spring mvc project in Intellij?如何在 Intellij 中运行导入的 Spring mvc 项目?
【发布时间】:2019-12-16 19:46:49
【问题描述】:

我正在使用 IntelliJ 并导入 Spring MVC 项目。我配置了 maven 设置并使用mvn clean install 构建我的项目。为了运行,我在 IntelliJ 的配置上配置了 tomcat:run。但红色标记显示为:

<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 社区 2019.2版\plugins\maven\lib\maven3" "-Dclassworlds.conf=C:\Program Files\JetBrains\IntelliJ IDEA 社区 2019.2版\plugins\maven\lib\maven3\bin\m2.conf" "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 社区版 2019.2\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 社区版 2019.2\lib\idea_rt.jar=61598:C:\Program Files\JetBrains\IntelliJ IDEA 社区版 2019.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 社区版 2019.2\plugins\maven\lib\maven3\boot\plexus-classworlds-2.6.0.jar" org.codehaus.classworlds.Launcher -Didea.version2019.2 tomcat:run [INFO] 正在扫描项目... [INFO] [INFO] ---------------------------------- [INFO] 建设 spring-security-demo 1.0 [INFO] --------------------------------[ 战争 ]--------------------------------- [信息] [信息] >>> tomcat-maven-plugin:1.1:run (default-cli) > 编译@ spring-security-demo >>> [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 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:compile (default-compile) @ spring-security-demo --- [INFO] 无需编译 - 所有类都是 最新的 [INFO] [INFO] 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 2019 年 8 月 9 日上午 10:49:23 org.apache.catalina.startup.Embedded 开始 信息:启动 tomcat 服务器 2019 年 8 月 9 日上午 10:49:23 org.apache.catalina.core.StandardEngine 启动信息:启动 Servlet 引擎:Apache Tomcat/6.0.29 2019 年 8 月 9 日上午 10:49:24 org.apache.coyote.http11.Http11Protocol init INFO:初始化 Coyote http-8080 上的 HTTP/1.1 2019 年 8 月 9 日上午 10:49:24 org.apache.coyote.http11.Http11Protocol 启动信息:启动 Coyote http-8080 上的 HTTP/1.1

当我点击 :http://localhost:8080/spring-security-demo/

其他配置类有:

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




}

Dispatcher Servlet 配置

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[] { "/" };
    }


}

【问题讨论】:

  • 在控制器中,像这样修改getmapping @GetMapping("") 试试
  • 输出没有变化
  • 您可以尝试类似@Getmapping("home") 并ping URL localhost:8080/spring-security-demo/home 并尝试吗?
  • 如果这不起作用,请在 servlet 配置中删除,在 getServletMappings 方法中使用空字符串而不是“/”
  • 不,它没有运行

标签: java spring spring-mvc tomcat intellij-idea


【解决方案1】:

尝试执行以下操作:
文件->项目结构->模块-> 检查是否添加了 Web 模块
如果“不”:
1.添加此模块。然后参见第 2 点。
如果“是”:
检查Web 资源目录
2. 它必须指向你的 webapp 目录的路径。

【讨论】:

    【解决方案2】:

    在您的 DemoController showHome 中应该返回一个 ModelAndView 像这样的东西,然后 ViewResolver 会将其映射到home.jsp

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

    您也可以参考here了解更多详情

    【讨论】:

    • 红色标记显示未找到依赖项。请看我上传的图片
    • 您想解决 1. red mark 问题或 2. 当您点击 localhost:8080/spring-security-demo 时,您无法看到您的 jsp。根据控制台日志,您的应用程序已启动并正在运行。
    • 当我点击 URL 时,我没有看到 jsp。以及为什么显示红色标记.. 它没有在 eclipse 中显示,而是在 intellij 上显示
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多