小编最近正在学习使用MVC框架,在搭建Maven的项目过程中,遇到了很多问题,上网搜了很多材料才找到答案,为了小编以后查起来方便,也为了向广大小伙伴分享,写了这部片博文,敬我昨天一天的学习结果!
步骤如下:
第一部分:创建Maven项目
1.首先我们需要新建一个工程,小编使用的是Idea的编辑器,eclipse的大体类似。使用File ->New->Project
2.在新弹出的对话框中,选择Maven工程,在右侧勾选“2”位置处的内容,在下面的选项中找到后缀为webapp的,选中后点击Next。
需要注意的是,右边的选项中有两个webapp,如箭头所示,我们使用第二个。
如果使用第一个的话,会遇到各种报错,至于报什么错呢,各位看官显得无聊可以试试,小编就不多说了。
3.填写一些项目内容。
GroupId和ArtifactId可以随便填写,填写完成后,点击Next。
4. 配置Maven
在新弹出的对话框中配置Maven版本和配置路径。
如果电脑上已经存在Maven,点击“Maven home directory” 后面的按钮,选择本机的Maven就好。如果没有预装,可以直接使用Idea提供的,即图示“Bundeld(Maven)”,点击下拉框可在各个Maven版本中切换。
“User setting file”和"Local repository"选项,可以使用默认路径,也可以点击“Overide”,然后重新自定义路径。新手的话,推荐使用默认。
全部设置完成后,点击Next。
在新弹出的对话框中,配置项目路径和名称,配置完成后点击Finish。一个Maven的壳子就创建完成啦。
为新项目选择新开一个窗口,当然也可以选择在本窗口打开,各凭喜好。
最后就是等待项目加载完成,在这里会弹出一个提示框,我们选择Enable auto-import,允许项目自动将需要的jar包导入,省去手工导入的操作。
第二部分:配置项目结构
1.配置项目框架
小编使用的是MVC模式,因此需要将MVC框架的内容加载到项目中。
在项目名称上右键,选择Add Framework Support。
在新弹出的对话框的左侧中,找到并勾选Spring MVC。在右侧,可以选择使用本机已有的Spring MVC,也可以选择Idea 自动下载,即“Download”。勾选完成后点击“OK”
你会看到编译器正在下载Spring相关的内容。
下载完成后,左侧的目录结构中会多出一个lib文件夹,里面存放的是Spring MVC相关的jar包,由于我们会在之后的pom.xml文件中配置这些内容,因此这个文件夹可以直接删掉。
2.配置项目文件结构
MVC简单来讲,是将model,view, controller分离,单独编码,单独管理,因此,我们在为项目配置目录结构的时候,夜莺从这几方面考虑。
在Maven自动生成的目录结构中,
我们在main目录下创建java文件夹,其下分别创建condition,controller,dao,service,mapper文件夹,用于存放和管理后台代码;创建resources文件夹,用于存放资源文件。
在src目录下创建test文件夹,用于存放单元测试代码。
在webapp文件夹下创建res文件夹,其下依次创建js,css,img文件夹,用于存放相应类型的文件;在WEB-INF文件夹下创建views文件夹,用于存放jsp页面文件。
完整的目录结构如下:
3.为文件夹配置权限
创建完文件后,可能会发现,在任何文件夹下都无法创建java文件,此时,我们需要为刚刚创建的文件夹配置权限。
选择“File -> Project Structure”,打开对话框,点击java文件夹,选择Sources,点击resources文件夹,选择Resources,点击test文件夹,选择Test。
配置完成后选择Apply 然后。关闭对话框,就会发现,文件夹的颜色和形态发生了变化,此时,就可以在java下创建class文件了。
4.配置pom.xml文件
现直接将小编的完整的XML文件奉上
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>MavenDemo2</groupId> 8 <artifactId>test.maven</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 <name>test.maven Maven Webapp</name> 13 <!-- FIXME change it to the project's website --> 14 <url>http://www.example.com</url> 15 16 <properties> 17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 18 <maven.compiler.source>1.7</maven.compiler.source> 19 <maven.compiler.target>1.7</maven.compiler.target> 20 </properties> 21 22 <dependencies> 23 <dependency> 24 <!-- junit测试包--> 25 <groupId>junit</groupId> 26 <artifactId>junit</artifactId> 27 <version>4.11</version> 28 <scope>test</scope> 29 </dependency> 30 <!--日志包--> 31 <dependency> 32 <groupId>org.slf4j</groupId> 33 <artifactId>slf4j-log4j12</artifactId> 34 <version>1.8.0-alpha2</version> 35 </dependency> 36 <!--mysql驱动包--> 37 <dependency> 38 <groupId>mysql</groupId> 39 <artifactId>mysql-connector-java</artifactId> 40 <version>6.0.6</version> 41 </dependency> 42 <!-- JDBC连接池 --> 43 <dependency> 44 <groupId>com.mchange</groupId> 45 <artifactId>c3p0</artifactId> 46 <version>0.9.5.2</version> 47 </dependency> 48 <!-- DruidDataSource,本工程的dataSource配置使用的Druid --> 49 <dependency> 50 <groupId>com.alibaba</groupId> 51 <artifactId>druid</artifactId> 52 <version>1.0.29</version> 53 </dependency> 54 <!--spring相关包--> 55 <dependency> 56 <groupId>org.springframework</groupId> 57 <artifactId>spring-web</artifactId> 58 <version>4.3.8.RELEASE</version> 59 </dependency> 60 <dependency> 61 <groupId>org.springframework</groupId> 62 <artifactId>spring-webmvc</artifactId> 63 <version>4.3.8.RELEASE</version> 64 </dependency> 65 <dependency> 66 <groupId>org.springframework</groupId> 67 <artifactId>spring-context-support</artifactId> 68 <version>4.3.8.RELEASE</version> 69 </dependency> 70 <dependency> 71 <groupId>org.springframework</groupId> 72 <artifactId>spring-oxm</artifactId> 73 <version>4.3.8.RELEASE</version> 74 </dependency> 75 <dependency> 76 <groupId>org.springframework</groupId> 77 <artifactId>spring-tx</artifactId> 78 <version>4.3.8.RELEASE</version> 79 </dependency> 80 <dependency> 81 <groupId>org.springframework</groupId> 82 <artifactId>spring-test</artifactId> 83 <version>4.3.8.RELEASE</version> 84 </dependency> 85 <dependency> 86 <groupId>org.springframework</groupId> 87 <artifactId>spring-jdbc</artifactId> 88 <version>4.3.8.RELEASE</version> 89 </dependency> 90 <dependency> 91 <groupId>org.aspectj</groupId> 92 <artifactId>aspectjweaver</artifactId> 93 <version>1.8.10</version> 94 </dependency> 95 <dependency> 96 <groupId>org.aspectj</groupId> 97 <artifactId>aspectjrt</artifactId> 98 <version>1.8.10</version> 99 </dependency> 100 <!-- 支持jsp相关包 --> 101 <dependency> 102 <groupId>javax.servlet</groupId> 103 <artifactId>jstl</artifactId> 104 <version>1.2</version> 105 </dependency> 106 <dependency> 107 <groupId>taglibs</groupId> 108 <artifactId>standard</artifactId> 109 <version>1.1.2</version> 110 </dependency> 111 <!--servlet/jsp api start--> 112 <dependency> 113 <groupId>javax.servlet</groupId> 114 <artifactId>servlet-api</artifactId> 115 <version>3.0-alpha-1</version> 116 </dependency> 117 <dependency> 118 <groupId>javax.servlet.jsp</groupId> 119 <artifactId>jsp-api</artifactId> 120 <version>2.2.1-b03</version> 121 </dependency> 122 <dependency> 123 <groupId>org.projectlombok</groupId> 124 <artifactId>lombok</artifactId> 125 <version>1.16.16</version> 126 </dependency> 127 <!-- Mybatis管理 start --> 128 <dependency> 129 <groupId>org.mybatis</groupId> 130 <artifactId>mybatis</artifactId> 131 <version>3.4.1</version> 132 </dependency> 133 <dependency> 134 <groupId>org.mybatis</groupId> 135 <artifactId>mybatis-spring</artifactId> 136 <version>1.3.0</version> 137 </dependency> 138 <dependency> 139 <groupId>com.alibaba</groupId> 140 <artifactId>fastjson</artifactId> 141 <version>1.2.33</version> 142 </dependency> 143 </dependencies> 144 145 <build> 146 <finalName>test.maven</finalName> 147 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> 148 <plugins> 149 <plugin> 150 <artifactId>maven-clean-plugin</artifactId> 151 <version>3.0.0</version> 152 </plugin> 153 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> 154 <plugin> 155 <artifactId>maven-resources-plugin</artifactId> 156 <version>3.0.2</version> 157 </plugin> 158 <plugin> 159 <artifactId>maven-compiler-plugin</artifactId> 160 <version>3.7.0</version> 161 </plugin> 162 <plugin> 163 <artifactId>maven-surefire-plugin</artifactId> 164 <version>2.20.1</version> 165 </plugin> 166 <plugin> 167 <artifactId>maven-war-plugin</artifactId> 168 <version>3.2.0</version> 169 </plugin> 170 <plugin> 171 <artifactId>maven-install-plugin</artifactId> 172 <version>2.5.2</version> 173 </plugin> 174 <plugin> 175 <artifactId>maven-deploy-plugin</artifactId> 176 <version>2.8.2</version> 177 </plugin> 178 </plugins> 179 </pluginManagement> 180 </build> 181 </project>
在Maven项目加载完成之后,pom文件中会自动生成一些配置,这些配置不需要修改,在其基础上加上一些依赖包即可.
第三部分:完成一次访问
1.配置web,xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5 version="3.1"> 6 7 <display-name>Archetype Created Web Application</display-name> 8 <!--配置首页--> 9 <welcome-file-list> 10 <welcome-file>index.jsp</welcome-file> 11 </welcome-file-list> 12 <!--配置springmvc DispatcherServlet--> 13 <servlet> 14 <servlet-name>springMVC</servlet-name> 15 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 16 <init-param> 17 <!--配置dispatcher.xml作为mvc的配置文件--> 18 <param-name>contextConfigLocation</param-name> 19 <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 20 </init-param> 21 <load-on-startup>1</load-on-startup> 22 <async-supported>true</async-supported> 23 </servlet> 24 <servlet-mapping> 25 <servlet-name>springMVC</servlet-name> 26 <url-pattern>/</url-pattern> 27 </servlet-mapping> 28 <!--把applicationContext.xml加入到配置文件中--> 29 <context-param> 30 <param-name>contextConfigLocation</param-name> 31 <param-value>/WEB-INF/applicationContext.xml</param-value> 32 </context-param> 33 <listener> 34 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 35 </listener> 36 </web-app>
2.配置dispatcher-servlet.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 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"> 7 <!--此文件负责整个mvc中的配置--> 8 9 <!--启用spring的一些annotation --> 10 <context:annotation-config/> 11 12 <!-- 配置注解驱动 可以将request参数与绑定到controller参数上 --> 13 <mvc:annotation-driven/> 14 15 <!--静态资源映射--> 16 <!--本项目把静态资源放在了webapp的statics目录下,资源映射如下--> 17 <mvc:resources mapping="/css/**" location="/res/css/"/> 18 <mvc:resources mapping="/js/**" location="/res/js/"/> 19 <mvc:resources mapping="/image/**" location="/res/img/"/> 20 <mvc:default-servlet-handler /> <!--这句要加上,要不然可能会访问不到静态资源,具体作用自行百度--> 21 22 <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP--> 23 <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- --> 24 <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 25 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 26 <property name="prefix" value="/WEB-INF/views/"/><!--设置JSP文件的目录位置--> 27 <property name="suffix" value=".jsp"/> 28 <property name="exposeContextBeansAsAttributes" value="true"/> 29 </bean> 30 31 <!-- 自动扫描装配 --> 32 <context:component-scan base-package="controller"/> 33 34 </beans>
3.配置applicationContext.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 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"> 6 7 <context:component-scan base-package="java"/> 8 9 </beans>
4.配置jsp页面
在views下创建index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>welcome</title> </head> <body> 访问成功 </body> </html>
5.在controller下创建控制器
package controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/home") public class DemoController { @RequestMapping("/index") public String getStr(){ return "index"; } }
6.配置Tomcat
在图示位置选择Edit Configurations
在左侧点击+号,在列表中,找到“Tomcat Server -> Local”。
在右侧Server选项卡中,“Configure”可以配置服务器的名字,自己随意填写就好,当然同时可以配置端口号、浏览器等信息。
在deployment选项卡中,选择+号,选择artifact。
在弹出的对话框中,选择带“exploded”的选项,点击OK。
完成后,在“Application context”输入框的“/”后面输入项目名。点击OK
配置完成后点击Apply,关闭窗口,出现如下图所示的样子,即为配置成功。点击运行。
7.访问views的index.jsp
运行成功后,进入的页面是webapp下的index.jsp,将地址栏的url更改为http://localhost:8080/maven/home/index,即可访问在views下的index.jsp了。其中"/maven”是项目名,“/home”是controller的标志,“/index”是controller下某个方法的标志。