非社区版idea搭建Maven+springmvc工程

非社区版idea搭建Maven+springmvc工程

以下均使用Maven骨架搭建springmvc工程。本文是在学习黑马视频中遇到的一些问题总结。

非社区版idea+Maven+springmvc+本地tomcat

在idea中配置Maven和Tomcat不再说明,很多博客中已经写的很详细。

1.新建Java空项目

在这里插入图片描述
在这里插入图片描述

2.导入Maven-webapp骨架

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击apply-》ok。最终生成的项目结构如下图所示:
在这里插入图片描述

3.完善项目

本测试项目使用配置类,因此先删除webapp/WEB-INF/web.xml。
本项目结构如下:

在这里插入图片描述
代码片pom.xml.

<modelVersion>4.0.0</modelVersion>
    <groupId>com.lwb</groupId>
    <artifactId>springmvc-01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.0.RELEASE</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

代码片ServletContainersInitConfig.java

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

代码片SpringConfig .java

@Configuration
@ComponentScan(value = "com.lwb",
    excludeFilters = @ComponentScan.Filter(
            type = FilterType.ANNOTATION,
            classes = Controller.class
    )
)
public class SpringConfig {
}

代码片SpringMvcConfig .java

@Configuration
@ComponentScan("com.lwb.controller")
public class SpringMvcConfig {
}

代码片UserController.java

@Controller
public class UserController {
    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println(this.getClass() + "-----save");
        return "{'info' : 'success'}";
    }
}

4.配置本地Tomcat

在这里插入图片描述
在这里插入图片描述
按照上述图片配置后就可以启动应用了。

5.遇到的问题

1、编译失败?保证本地Tomcat使用的jre版本正确。

在这里插入图片描述
在这里插入图片描述

2、无法访问controller层的接口?
参照3里面的pom.xml,需保证spring-webmvc和javax.servlet-api的<scope>provided</scope>。因为Tomcat本身提供了所需的依赖,在打包的时候不需要spring-webmvc和javax.servlet-api的依赖。

非社区版idea+Maven+springmvc+Tomcat插件

Tomcat插件和本地Tomca配置方式基本一致,有几个不同的地方,如下。

1.与本地Tomcat不同点

1、pom.xml不同。
插件需在xml文件中添加Tomcat插件坐标。port是端口,path就是上下文。另外,注意spring-webmvc的scope是全局的。javax.servlet-api是<scope>provided</scope>。

代码片pom.xml.

<groupId>com.lwb</groupId>
    <artifactId>springmvc-01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <port>80</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <packaging>war</packaging>
2、添加application方式不同。

在这里插入图片描述
在这里插入图片描述

写在最后

1、pom.xml文件更改后,记得reload project。如果依赖还是红色,在保证Maven仓库中有对应依赖下,可以清下缓存并重启idea。

在这里插入图片描述
在这里插入图片描述

2、在启动Tomcat后,无法访问controller?
提供一种排查思路。先保证路径正确,包括端口、Tomcat配置的上下文、SpringMvcConfig扫描controller层、SpringConfig排除扫描controller等。
查看@Controller注解引入是否正确。正确的应该是org.springframework.stereotype.Controller。
查看编译后的target是否正确,重点关注打的包。正确的目录结构如下,根据经验,大部分情况是WEB-INF/lib不存在导致的。如果target目录缺失很多文件,先排查能否正常打包,maven-Lifecycle-package,参考图2。

在这里插入图片描述
在这里插入图片描述

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值