码迷,mamicode.com
首页 > 编程语言 > 详细

基于IDEA+Maven+SpringMVC的入门web程序分析(一)

时间:2017-10-09 18:36:42      阅读:891      评论:0      收藏:0      [点我收藏+]

标签:version   mac   org   display   自动构建   request   -o   虚拟机   设置   

第一步:Maven项目的创建【手动创建Maven项目而没有使用Maven的自动构建web项目】

使用Maven模板自动构建web项目图如下,这里不细讲:

技术分享

手动创建Maven Web项目流程如下:

1.1 File->New->Project 出现下图:

技术分享

1.2 然后点击next,出现下图

技术分享

由GroupId、ArtifactId、Version三个元素直接确定了唯一的一个Maven模块

填写相应的GroupId、ArtifactId

技术分享

注意,上面的三个属性会出现在Maven的pom.xml文件中

1.3 点击next,出现如下所示的图片

技术分享

这里的Project name(上面)和Module name(下面)根据上一步的ArtifactId默认生成,这里自己可以随意修改的。这里的项目名称和模块名称是一样的,也可以不一样。

1.4 点击finish,出现如下图所示界面:
技术分享

中间显示的是pom.xml文件,可以看见之前所选择的GroupId、ArtifactId和Version都出现在pom.xml文件中,右下角这个小标签提示Maven projects need to be imported(Maven项目需要导入),可以点击下面的Import Changes选项,导入所发生的变化,以后的Maven项目的pom.xml文件发生变化时,右下角都会提醒,自己可以选择性的导入相应的变化。

第二步:构建基于Maven和SpringMVC的Web项目目录结构

2.1 在上面点击finish后的Web项目目录结构如下图所示:

技术分享

1.2 现在对上面的Web项目目录结构做相应的更改,得到如下所示的项目目录结构

技术分享

第三步:一些必须的准备工作

3.1 File->Project Stricture设置(在整个软件界面的上方也能看到Project Structure前面的图标,点击进去,同样设置),如下图:

技术分享

 

3.2 先进行Project的设置,这里最重要的就是Project SDK的设置,其他的默认就可以了。下面的Project compiler output指示了项目编译后,生成的相应文件都放在哪!所以编译后整个目录结构是会多一个out文件夹的。

技术分享

3.2 现在进行Modules的设置

3.2.1 可以看到Modules有三个重要标签,Source标签已经显示出来了,这里不用设置,默认就好,如下如所示:

技术分享

3.2.2 再来看Path标签,重要的Compile output标签,选着第二项,可以发现,项目编译后的classes文件都放在target目录下,所以后面的目录结构也新增了一个target文件夹。

技术分享

3.2.3 设置Dependecies标签,这里很重要

(1) 导入依赖JAR包,点击右边的+,然后选择第一个选项Jars or Directories

技术分享

技术分享

方框1:里面的jar包路径,选择自己jar包所在的位置就好

方框2:选择相应的jar包,然后点击OK导入

导入后的结果如下所示:

技术分享

这里的导入的Jar包是作为外部库(External Librarise)存在的,可以在Web项目目录结构中看到:

(2) 这里先新增一个web结构,开发web项目必须要添加此配置,主要是对Web.xml和Web根目录做一个配置,否则最后项目运行时,会出现404错误

新增前:

技术分享

新增后:

技术分享

新增后以及配置前:

技术分享

这里要根据你实际的Web项目目录来进行路径设置:

实际Web项目目录结构如下:

技术分享

配置后的结果如下:

技术分享

路径设置好后:

会发现相应的图标发生了变化,主要是web.xml和文件夹webapp:

配置前:

技术分享

配置后:

技术分享

到目前为止,Modules部分就全都配置好了,不过可以看到上面的图里面有一个警告:Web Facet resources are not included in an artifact,这里我们在Artifact设置部分(下面)来解决;

3.3 Artifact部分设置: 这里设置的主要是看最后我们的项目是以怎么一种形式发布,web项目的发布一般选择war包的形式进行发布,不需要直接发布源代码。

配置前,可以发现中间部分什么都没有:

技术分享

点击+,进行配置:

技术分享

选择From Modules:

技术分享

点击OK:

技术分享

到此为止,Project Structure就全部设置好了

第四步,代码、配置文件整理

4.1 控制器Controller相关代码,这里是基于XML配置的方式,控制器的实现需要实现Controller接口

技术分享
 1 package com.wangfei.firstspringmvc.controller;
 2 
 3 
 4 import org.springframework.web.servlet.ModelAndView;
 5 import org.springframework.web.servlet.mvc.Controller;
 6 
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 public class IndexController implements Controller{
11 
12     public IndexController(){
13 
14     }
15 
16 
17     public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
18 
19         ModelAndView mv = new ModelAndView("index.jsp");
20         mv.addObject("message","Hello Spring MVC");
21 
22         return mv;
23     }
24 }
View Code
 1 package com.wangfei.firstspringmvc.controller;
 2 
 3 
 4 import org.springframework.web.servlet.ModelAndView;
 5 import org.springframework.web.servlet.mvc.Controller;
 6 
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 public class IndexController implements Controller{
11 
12     public IndexController(){
13 
14     }
15 
16 
17     public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
18 
19         ModelAndView mv = new ModelAndView("index.jsp");
20         mv.addObject("message","Hello Spring MVC");
21 
22         return mv;
23     }
24 }

4.2 web.xml文件配置,这里主要配置的是处理客户端浏览器发出请求的前端控制器DispatcherServlet,既然是一个Servlet,所以就和Servlet的配置很类似:

技术分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 6 
 7 
 8     <!-- 配置SpringMVC的请求处理接口 前端控制器-->
 9     <servlet>
10         <servlet-name>firstspringmvc</servlet-name>
11         <servlet-class>
12             org.springframework.web.servlet.DispatcherServlet
13         </servlet-class>
14         <load-on-startup>1</load-on-startup>
15     </servlet>
16     <servlet-mapping>
17         <servlet-name>firstspringmvc</servlet-name>
18         <url-pattern>/</url-pattern>
19     </servlet-mapping>
20 </web-app>
View Code
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 6 
 7 
 8     <!-- 配置SpringMVC的请求处理接口 前端控制器-->
 9     <servlet>
10         <servlet-name>firstspringmvc</servlet-name>
11         <servlet-class>
12             org.springframework.web.servlet.DispatcherServlet
13         </servlet-class>
14         <load-on-startup>1</load-on-startup>
15     </servlet>
16     <servlet-mapping>
17         <servlet-name>firstspringmvc</servlet-name>
18         <url-pattern>/</url-pattern>
19     </servlet-mapping>
20 </web-app>

注意这里的<servlet-name>标签里面的名字firstspringmvc是可以随便取的,不是固定的;但是下面的<servlet-mapper>标签里面的<servlet-name>里面的名字要和上面的一致

4.3 firstspringmvc-servlet.xml的配置;这里的文件名格式为: 模块名-servlet.xml 这里绝不不能错,错了以后你会发现tomact可以正常运行,但是访问index.jsp文件时就会报错:报错如下所示

技术分享

具体错误如下:

 1 Could not open ServletContext resource [/WEB-INF/firstspringmvc-servlet.xml] 

这里已经提示你找不到firstspringmvc-servlet.xml文件,所以只需要把你的.xml文件改成firstspringmvc-servlet.xml这个名字就好

具体的firstspringmvc-servlet.xml配置如下:

技术分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <beans xmlns="http://www.springframework.org/schema/beans"
 4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7 <!--[注意]此处的xml文件的名称为 模块名-servlet.xml,而不是 项目名-servlet.xml-->
 8     <!-- vivo-firstspringmvc这个是项目名 旁边的firstspringmvc为模块名-->
 9 
10     <!--编写处理器映射器:拦截URL-->
11     <bean id="simpleUrlHandlerMapping"
12           class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
13         <property name="mappings"><!--这里的name值不是随便写的-->
14             <props>
15                 <!--对于浏览器发出的url(/index)请求,通过前端控制器交给处理器映射器,然后找到合适的控制器(handler)来进行处理-->
16                 <prop key="/index">indexController</prop>
17             </props>
18         </property>
19     </bean>
20 
21     <!--通过XML装配bean-->
22     <!--这里声明bean的id名称,是为了方便引用(见上面的处理器拦截器)-->
23 
24     <bean id="indexController" class="com.vivo.firstspringmvc.controller.IndexController"></bean>
25 </beans>
View Code
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <beans xmlns="http://www.springframework.org/schema/beans"
 4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7 <!--[注意]此处的xml文件的名称为 模块名-servlet.xml,而不是 项目名-servlet.xml-->
 8     
 9 
10     <!--编写处理器映射器:拦截URL-->
11     <bean id="simpleUrlHandlerMapping"
12           class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
13         <property name="mappings"><!--这里的name值不是随便写的-->
14             <props>
15                 <!--对于浏览器发出的url(/index)请求,通过前端控制器交给处理器映射器,然后找到合适的控制器(handler)来进行处理-->
16                 <prop key="/index">indexController</prop>
17             </props>
18         </property>
19     </bean>
20 
21     <!--通过XML装配bean-->
22     <!--这里声明bean的id名称,是为了方便引用(见上面的处理器拦截器)-->
23 
24     <bean id="indexController" class="com.wangfei.firstspringmvc.controller.IndexController"></bean>
25 </beans>

代码中的备注,都是很重要的地方

4.4 JSP代码,里面用JSTL语法,来读取ModelAndView中的message

技术分享
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2          pageEncoding="UTF-8" isELIgnored="false"%>
3 
4 <h1>${message}</h1>
View Code
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2          pageEncoding="UTF-8" isELIgnored="false"%>
3 
4 <h1>${message}</h1>

4.5 pom.xml文件不改也可以,web应用可以正常运行,但是模块编译的时候会出现错误:

pom.xml文件配置如下:

技术分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          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>com.vivo.firstspringmvc</groupId>
 8     <artifactId>vivo-firstspringmvc</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11     <!--下面的这一部分不是必须的,但是没有会影响maven模块的编译-->
12     <build>
13         <defaultGoal>compile</defaultGoal>
14         <finalName>vivo-firstspringmvc</finalName>
15     </build>
16 
17 
18 </project>
View Code
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          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>com.wangfei.firstspringmvc</groupId>
 8     <artifactId>vivo-firstspringmvc</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11     <!--下面的这一部分不是必须的,但是没有会影响maven模块的编译-->
12     <build>
13         <defaultGoal>compile</defaultGoal>
14         <finalName>firstspringmvc</finalName>
15     </build>
16 
17 
18 </project>

第五步,配置运行环境,主要是Maven的配置和Tomcat的配置,如下图所示1处,2处是之前的Project Structure设置(快捷键Shift+Alt+Ctrl+S)

技术分享

技术分享

5.1 Maven的配置

技术分享

技术分享

1处的名字可以随便取,2处的配置很重要,这里需要根据你自己的maven版本以及settings.xml文件和repository文件所在的路径进行配置

5.2 Tomcat的配置

技术分享

5.2.1 首先是server的配置:

技术分享

方框1: 名字可以随便取

方框2:tomcat的版本根据自己的设定

方框3:这里主要是对虚拟机VM的设置,比如字符编码设置-Dfile.encoding=UTF-8

方框4:这是很重要,主要是选取什么War包进行Deployment,【这里和之前的Project Structure里面Modulers的Web设置有很大关系】点击Fix后如下图所示:

技术分享

第六步,运行:

技术分享

 

基于IDEA+Maven+SpringMVC的入门web程序分析(一)

标签:version   mac   org   display   自动构建   request   -o   虚拟机   设置   

原文地址:http://www.cnblogs.com/piaxiaohui/p/7642076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!