IDEA 搭建 springmvc maven 项目

时间:2023-03-09 21:43:45
IDEA 搭建 springmvc maven 项目

前言:将搭建 java springmvc maven 项目的过程及问题记录下来,以及配置文件。这次没有涉及到数据库,后续再写。

目录:

一、首先在 IDEA 中创建 springmvc maven 项目

二、添加 pom 依赖

三、配置 web.xml

四、配置 spring-mvc.xml

五、写代码测试

六、配置tomcat

七、启动

一、首先在 IDEA 中创建 springmvc maven 项目

第一步

IDEA 搭建 springmvc maven 项目

第二步

IDEA 搭建 springmvc maven 项目

第三步,定义GroupId,ArifactId。一般一样。

IDEA 搭建 springmvc maven 项目

第四步,选择一个maven目录,这里选择的D:/Java/apache-maven-3.5.0

IDEA 搭建 springmvc maven 项目

第五步

IDEA 搭建 springmvc maven 项目

如果发现创建出来的maven项目没有src文件 ,而且maven导入很慢,建议在这里设置如下,具体见:https://www.cnblogs.com/yuxiaole/p/9240594.html

IDEA 搭建 springmvc maven 项目

第六步,finish,设置项目路径。

IDEA 搭建 springmvc maven 项目

第七步

把maven自动导入打开

IDEA 搭建 springmvc maven 项目

创建成功!

IDEA 搭建 springmvc maven 项目

二、添加 pom 依赖

  maven 仓库 : http://www.mvnrepository.com/artifact/org.springframework/spring-context

  我是在仓库里找的使用数量最多的较新版本。

<?xml version="1.0" encoding="UTF-8"?>

<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>sdemo</groupId>
<artifactId>sdemo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <name>sdemo Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> <!-- springframework 的相关依赖 start -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- springframework 的相关依赖 end --> <!-- jsp start -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- jsp end --> <!--配置上传文件拦截的依赖包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency> </dependencies> <build>
<finalName>sdemo</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins> <!--创建项目自带的 start-->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!--创建项目自带的 end--> </plugins>
</pluginManagement>
</build>
</project>

三、配置 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>sdemo</display-name> <!--配置springmvc的分发器-->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--设置mvc的配置文件地址-->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <!--配置默认的地址-->
<!--welcome-file-list元素可以包含一个或多个welcome-file子元素。如果在第一个welcome-file元素中没有找到指定的文件,Web容器就会尝试显示第二个,以此类推。-->
<welcome-file-list>
<welcome-file>demoIndex.jsp</welcome-file>
</welcome-file-list> </web-app>

四、配置 spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!--会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean,这是Spring MVC为@Controller分发请求所必需的,
并且提供了数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持读写XML的支持(JAXB)和读写JSON的支持(默认Jackson)等功能-->
<mvc:annotation-driven /> <!-- spring 可以自动去扫描 com.demo 下面的包或子包下面的Java文件,
如果扫描到有Spring的相关注解(@Component @Controller@Service等)的类,则把这些类注册为Spring的bean,
可以发现这种扫描的粒度有点太大-->
<!--有一个use-default-filters属性,该属性默认为true,这就意味着会扫描指定包下的全部的标有@Component的类,
并注册成bean.也就是@Component的子注解@Service,@Reposity等-->
<!--如果配置了<context:component-scan>那么<context:annotation-config/>标签就可以不用再xml中配置了,因为前者包含了后者-->
<!--另外<context:component-scan>还提供了两个子标签 <context:include-filter> 和 <context:exclude-filter>-->
<!--Use-dafault-filters=”false”的情况下:<context:exclude-filter>表示指定的不扫描,<context:include-filter>表示指定的扫描-->
<!-- <context:component-scan base-package="com.demo"/>--> <!-- 只需要扫描 com.demo 下的 @Controller,@Service, @Componet, 并注册成bean -->
<context:component-scan base-package="com.demo" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<!--<context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />-->
<!--<context:include-filter type="annotation" expression="org.springframework.stereotype.Component" />-->
</context:component-scan> <!-- 视图解析器: 定义JSP文件的位置 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/views/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean> <!-- 容器默认的DefaultServletHandler处理
所有静态内容 和 无RequestMapping处理的URL都将经过这里,
然后将该请求交由WEB应用服务器默认的Servlet进行处理。
如果不是静态资源的请求和 无RequestMapping处理的URL,才由DispatcherServlet继续进行处理。-->
<mvc:default-servlet-handler/> <!-- 将地址重定向:"/"是访问的path,"/demoCtrl/index"是重定向后的path:
定义无需Controller的url<->view直接映射-->
<mvc:view-controller path="/" view-name="redirect:/demoCtrl/index"/> <!-- 配置上传文件拦截,设置最大上传文件大小,和最大内存大小 -->
<bean id="multipartResolver" name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size100MB 100M=100*1024*1024(B)=104857600 bytes-->
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean> </beans>

五、写代码测试

目录结构,开始创建包结构,准备运行

IDEA 搭建 springmvc maven 项目

将 webapp 下的 index.jsp 文件改为 demoIndex.jsp

IDEA 搭建 springmvc maven 项目

写 demo.jsp 页面

IDEA 搭建 springmvc maven 项目

写 ctrl 层

IDEA 搭建 springmvc maven 项目

六、配置 tomcat

第一步

IDEA 搭建 springmvc maven 项目

第二步

IDEA 搭建 springmvc maven 项目

IDEA 搭建 springmvc maven 项目

第三步

IDEA 搭建 springmvc maven 项目

然后点击

IDEA 搭建 springmvc maven 项目

第四步

IDEA 搭建 springmvc maven 项目

七:启动

IDEA 搭建 springmvc maven 项目

IDEA 搭建 springmvc maven 项目

IDEA 搭建 springmvc maven 项目