(使用工具idea,项目架构spring+springmvc+mybatis)
由于后期可能需要添加各种组件及功能,为了便于添加依赖因此使用创建maven项目,同时网上许多整合教程也是创建maven项目
1.创建maven项目
打开idea,file->new->project
接着填写项目名,一直next下去就好(当然也可以自己选择项目的位置)
在这里需要等待一段时间等待idea为我们创建相关目录,此时你只会看到.idea文件夹而看不到src文件夹,加载完成后项目结构
2.项目结构设置
可以看到此时项目并没有普通web工程的项目结构,因此添加目录并设置为项目相关目录
在main文件夹右键创建java文件夹
接着在java文件夹上右键选择将java文件夹设置为sources root,设置完会变色
同理在main下创建resources,test目录,设置resources目录为Resources Root,Test为Test Sources Root。
在这里,java目录用于放置我们自己写的java源码,之后写的控制器,实体类什么都会放在这个文件夹,resources目录放置springmvc等组件的配置资源文件,test目录存放测试代码
(对于这些目录不熟悉或者对于idea工具不熟悉的推荐这篇博客 https://blog.csdn.net/lw_power/article/details/51113946 里面有关于各个目录和idea各个界面功能的介绍)
最终项目目录:
3.添加spring依赖
首先在pom.xml添加相关spring包依赖,让idea为我们下载相关包,将pom.xml中内容更换为下面内容
pom.xml
<?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>Learn</groupId>
<artifactId>Learn</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>Learn 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>
<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>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Spring依赖 -->
<!-- 1.Spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<!-- 2.Spring dao依赖 -->
<!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<!-- 3.Spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>Learn</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<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>
</plugins>
</pluginManagement>
</build>
</project>
添加依赖后idea下面会有个进度条,会将依赖中的包自动下载,等待下载完成后在webapp/WEB-INF目录下的web.xml添加spring配置(相关注释)。
web.xml
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--配置dispatcher.xml作为mvc的配置文件-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<!--配置拦截路径,改为‘/’后拦截所有路径-->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--把applicationContext.xml加入到配置文件中-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在web.xml中设置了两个配置文件,一个为dispatch-servlet.xml和applicationContext.xml文件,这两个文件我们稍后添加,在这里,dispatch-servlet.xml是对springmvc的配置,applicationContext.xml是对后续可能会添加的组件的配置。
接着,在我们之前创建的resources文件夹,也就是配置资源文件目录下创建两个配置文件,分别为dispatch-servlet.xml和applicationContext.xml
dispatch-servlet.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--启用spring的一些annotation -->
<context:annotation-config/>
<!-- 配置注解驱动 可以将request参数与绑定到controller参数上 -->
<mvc:annotation-driven/>
<!-- 自动扫描装配 -->
<context:component-scan base-package="com.controller"/>
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP-->
<!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/views/"/><!--设置JSP文件的目录位置-->
<property name="suffix" value=".jsp"/>
<property name="exposeContextBeansAsAttributes" value="true"/>
</bean>
</beans>
在dispatch-servlet中设置自动扫描,并设置扫描的目录,以后springmvc就会自动扫描我们设置的目录为我们寻找相应的控制器。在这里我们在java文件创建目录com.controller,用于存放控制器代码,接着在WEB-INF下创建views目录,用于存放我们以后的视图。在dispatch-servlet配置文件中设置了扫描com.controller下的所有控制器,同时配置了视图所在的文件夹为/WEB-INF/views,后缀为jsp。
applicationContext.xml暂时不用配置
applicationContext.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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config />
</beans>
接着在controller包下写一个控制器index.java
index.java
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Index {
@RequestMapping("/index")
public String index(){return "index";}
}
当访问/index时会映射到这个控制器上,控制器返回的index字符串由于我们之前在dispatch-servlet的视图解析配置会转换为views文件夹下的index.jsp,在这里可以将最外面的简单index.jsp复制到views文件夹下,中间文字改为controller,测试是否成功。
最终项目目录
4.发布到tomcat服务器
点击右上角,edit configurations
点击apply即可发布,接着点击运行,浏览器会自动跳出主页
在浏览器输入地址 localhost:8080/index 得到以下页面则配置成功
总结:刚接触框架的配置,可能会有点混乱,不同配置文件的作用是什么,又是在哪里加入项目中?在这里谈谈我的理解,首先最开始建立的是简单的maven项目,接着添加了相关依赖,下载了相关包,但此时完全没有springmvc的关联,于是我们需要在web.xml中引入springmvc的相关配置,web.xml中的配置完成即相当于引入了springmvc框架,但引入后具体springmvc框架最基本是如何工作的还未指出,如如何扫描,扫描哪个部件,因此在web.xml设置了两个配置文件来指定框架如何工作,引入哪些其他spring相关组件。这样通过web.xml引入框架,通过其他配置文件来进行框架工作的配置理解起来会对以后添加其他配置文件有一定的理解的帮助,不然当你无法理解各个配置文件时,以后再添加其他功能其他配置文件时,会更加觉得混乱。个人见解。
接下来就是引进网页模板和配置mybatis,待续