还是基于上一篇文章来讲,上次我们把maven的环境搭建好了。这一次我们把Spring-mvc引入进来(Spring—一个叫春的框架)。
肌肉都用上了maven,那么我们不能继续那么老土了,新官上任三把火,首先把jar依赖替换成maven的。怎么换?通过修改pom.xml文件,那这个文件在哪里呢?这个文件是maven项目一新建就有的。
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.examplegroupId>
<artifactId>maven-springmvcartifactId>
<packaging>warpackaging>
<version>1.0-SNAPSHOTversion>
<name>maven-springmvc Maven Webappname>
<url>http://maven.apache.orgurl>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>3.8.1version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
<version>1.7.21version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
dependency>
<dependency>
<groupId>javax.servlet.jspgroupId>
<artifactId>jsp-apiartifactId>
<version>2.2version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.35version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>4.3.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>4.3.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons-lang3artifactId>
<version>3.4version>
dependency>
<dependency>
<groupId>commons-fileuploadgroupId>
<artifactId>commons-fileuploadartifactId>
<version>1.3.1version>
dependency>
dependencies>
<build>
<finalName>maven-springmvcfinalName>
<resources>
<resource>
<directory>${basedir}/src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
resource>
<resource>
<directory>${basedir}/src/main/resourcesdirectory>
resource>
resources>
<plugins>
<plugin>
<groupId>org.eclipse.jettygroupId>
<artifactId>jetty-maven-pluginartifactId>
<version>9.3.10.v20160621version>
plugin>
plugins>
build>
project>
注意我们添加了依赖,我们还在下面的build里面添加了一些东西,这些东西我们在下面会提到。然后我们保存,idea会自动更新,下载所需要的lib。如果卡住了没关系,重启一下就好了。
如果没有自动下载的话,可以点击“Reimport All Maven Projects”按钮进行项目的重新载入。
jar下载完成后,所有项目所需的依赖就已经添加完成了。
顺便说一句:使用Spring时,缺少不了事务的存在,而事务是在spring-orm中,将spring-orm依赖到项目中,如果使用了事务,那需要在里面加上这个:
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-ormartifactId>
<version>${org.springframework.version}version>
dependency>
maven默认生成的web.xml版本是2.3的,所以有些配置节点idea会识别不出来,因此我们重新添加一个3.0的。
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>springMVCservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring/spring-mvc.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
<async-supported>trueasync-supported>
servlet>
<servlet-mapping>
<servlet-name>springMVCservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web-app>
大家注意,classpath:spring/spring-mvc.xml可能会报错,因为没有这个东西。那我们就新建一个。在resources文件夹下新建一个目录,命名为spring,然后在这个新建的文件夹下右击新建一个New->xmlConfigFile->SpringConfig 名称填spring-mvc.xml,然后就搞定了。
还有朋友说post请求乱码问题,我们在里面加上这个:
<filter>
<filter-name>encodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
param>
param>
<param-name>forceEncodingparam-name>
<param-value>trueparam-value>
param>
filter>
<filter-mapping>
<filter-name>encodingFilterfilter-name>
/*
这个spring-mvc怎么配置呢?我是这么配置的。文件里面介绍的很详细了我就不多数了。有朋友和我说怎么不用spring-boot,省去很多配置的麻烦,嗯,可以用,下一节再讲。(其实我也觉得这配置挺麻烦的,重点是有时候记不住需要去搜索这个的写法)
<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-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.larson.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
context:component-scan>
<mvc:resources mapping="/css/**" location="/statics/css/"/>
<mvc:resources mapping="/js/**" location="/statics/js/"/>
<mvc:resources mapping="/image/**" location="/statics/image/"/>
<mvc:annotation-driven/>
<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/"/>
<property name="suffix" value=".jsp"/>
bean>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="20971500"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/>
bean>
beans>
我们看,上面新建的那个文件里面好几个地方会报错,我们一个一个来清理:
使用了Maven我们就应该把资源都放在resource下了,我开始的时候放在WEB-INF下,结果找答案找的我都快怀疑人生了都没有找了,最后想了想spring-mvc.xml的配置不是也是放在Resource下的么,果然,在resource下新建这几个文件夹,错误就消除了。
然后就是controller的配置,spring会寻找默认的controller;我们需要在这个文件里面配置,配置的地方我们做了注解就不多说了,我们来新建一个controller 的package。
有同学要求我把Controller的写法贴出来,那我就贴出来吧:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author [email protected]
* @create 2017-05-13-20:20
*/
// 注解标注此类为springmvc的controller,url映射为"/home"
@Controller
@RequestMapping("/home")
public class HomeController {
//映射一个action
@RequestMapping("/index")
public String index(){
//返回一个index.jsp这个视图
return "index";
}
}
在views文件夹下建立一个jsp文件,名为“index.jsp”(statics同级目录下新建views,配置也是在spring里面配置)
基本的代码编写就完成了。
好了,基于maven的Spring环境我们已经搭建好了,现在开始把上次引入的mybatis引入进来。
这个功能真的很不错的。
View->Tool Buttons 看到左侧多了一列,project和structure的视图。我们打开pom.xml然后切换到structure视图,右击project->diagrams->show diagram。然后就看到了。
下一篇介绍,SSM整合。