转自:http://ju.outofmemory.cn/entry/49508

本文通过Maven完成一个简单的Web项目(注意,Spring配置不是重点,看看就行)

1.从Maven模板创建Web应用程序

命令格式如下:

  1. mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

这就告诉Maven从maven-archetype-webapp 这个模板来创建

友情提示:是不是太难记了..好吧,直接输入

  1. mvn archetype:generate

根据向导来创建把。。

比如我这样写:

  1. > mvn archetype:generate -DgroupId=com.mkyong -DartifactId=CounterWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------------------------------------------------------------
  5. [INFO] Building Maven Stub Project (No POM) 1
  6. [INFO] ------------------------------------------------------------------------
  7. [INFO]
  8. [INFO] Generating project in Batch mode
  9. [INFO] ----------------------------------------------------------------------------
  10. [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:1.0
  11. [INFO] ----------------------------------------------------------------------------
  12. [INFO] Parameter: groupId, Value: com.mkyong
  13. [INFO] Parameter: packageName, Value: com.mkyong
  14. [INFO] Parameter: package, Value: com.mkyong
  15. [INFO] Parameter: artifactId, Value: CounterWebApp
  16. [INFO] Parameter: basedir, Value: /Users/mkyong/Documents/workspace
  17. [INFO] Parameter: version, Value: 1.0-SNAPSHOT
  18. [INFO] project created from Old (1.x) Archetype in dir: /Users/mkyong/Documents/workspace/CounterWebApp
  19. [INFO] ------------------------------------------------------------------------
  20. [INFO] BUILD SUCCESS
  21. [INFO] ------------------------------------------------------------------------
  22. [INFO] Total time: 3.147s
  23. [INFO] Finished at: Thu Dec 20 20:35:19 MYT 2012
  24. [INFO] Final Memory: 12M/128M
  25. [INFO] ------------------------------------------------------------------------

就创建了一个包名为com.mkyong,类名为CounterWebApp的项目了

2.Maven的Web程序目录结构

标准的web.xml部署描述文件生成了

  1. CounterWebApp
  2. |-src
  3. |---main
  4. |-----resources
  5. |-----webapp
  6. |-------index.jsp
  7. |-------WEB-INF
  8. |---------web.xml
  9. |-pom.xml

对结构有疑问的去这里

生成的pom.xml文件如下

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/maven-v4_0_0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.mkyong</groupId>
  7. <artifactId>CounterWebApp</artifactId>
  8. <packaging>war</packaging>
  9. <version>1.0-SNAPSHOT</version>
  10. <name>CounterWebApp Maven Webapp</name>
  11. <url>http://maven.apache.org</url>
  12. <dependencies>
  13. <dependency>
  14. <groupId>junit</groupId>
  15. <artifactId>junit</artifactId>
  16. <version>3.8.1</version>
  17. <scope>test</scope>
  18. </dependency>
  19. </dependencies>
  20. <build>
  21. <finalName>CounterWebApp</finalName>
  22. </build>
  23. </project>

没啥疑问的。web.xml文件则如下:

  1. <!DOCTYPE web-app PUBLIC
  2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
  4. <web-app>
  5. <display-name>Archetype Created Web Application</display-name>
  6. </web-app>

index.jsp内容是:

  1. <html>
  2. <body>
  3. <h2>Hello World!</h2>
  4. </body>
  5. </html>

3.转换以支持Eclipse

为了使Maven的web项目支持Eclipse,在命令行下,cd到CounterWebApp目录下,然后输入这个命令

  1. mvn eclipse:eclipse -Dwtpversion=2.0

-Dwtpversion=2.0参数是必需的,这个参数指明了是web项目,然后导入到eclipse里就行了。从导入的工程ico可以看出是个web项目

图一

  

不要迷惑,如果我们只输入

  1. mvn eclipse:eclipse

会转换成java项目,而不是web项目的。

好了,现在项目已经准备好部署了,eclipse里的tomcat server插件装好,然后启动项目

图二

可以通过http://localhost:8080/CounterWebApp/地址来访问

4.更新pom文件

为了使Maven项目支持Spring MVC框架,我们需要修改pom.xml文件

1.添加编译插件指定jdk6来编译

2.添加Spring框架依赖

3.升级JUnit到4.1.1

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/maven-v4_0_0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.mkyong</groupId>
  7. <artifactId>CounterWebApp</artifactId>
  8. <packaging>war</packaging>
  9. <version>1.0-SNAPSHOT</version>
  10. <name>CounterWebApp Maven Webapp</name>
  11. <url>http://maven.apache.org</url>
  12. <properties>
  13. <spring.version>3.0.5.RELEASE</spring.version>
  14. <junit.version>4.11</junit.version>
  15. <jdk.version>1.6</jdk.version>
  16. </properties>
  17. <dependencies>
  18. <!-- Spring 3 dependencies -->
  19. <dependency>
  20. <groupId>org.springframework</groupId>
  21. <artifactId>spring-core</artifactId>
  22. <version>${spring.version}</version>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework</groupId>
  26. <artifactId>spring-web</artifactId>
  27. <version>${spring.version}</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-webmvc</artifactId>
  32. <version>${spring.version}</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>junit</groupId>
  36. <artifactId>junit</artifactId>
  37. <version>${junit.version}</version>
  38. <scope>test</scope>
  39. </dependency>
  40. </dependencies>
  41. <build>
  42. <finalName>CounterWebApp</finalName>
  43. <plugins>
  44. <plugin>
  45. <groupId>org.apache.maven.plugins</groupId>
  46. <artifactId>maven-compiler-plugin</artifactId>
  47. <version>3.0</version>
  48. <configuration>
  49. <source>${jdk.version}</source>
  50. <target>${jdk.version}</target>
  51. </configuration>
  52. </plugin>
  53. </plugins>
  54. </build>
  55. </project>

5.Spring MVC 松耦合

创建Spring MVC控制器类,有两个方法,打印信息

  1. package com.mkyong.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.ui.ModelMap;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RequestMethod;
  6. @Controller
  7. @RequestMapping("/")
  8. public class BaseController {
  9. @RequestMapping(value="/welcome", method = RequestMethod.GET)
  10. public String welcome(ModelMap model) {
  11. model.addAttribute("message", "Maven Web Project + Spring 3 MVC - welcome()");
  12. //Spring uses InternalResourceViewResolver and return back index.jsp
  13. return "index";
  14. }
  15. @RequestMapping(value="/welcome/{name}", method = RequestMethod.GET)
  16. public String welcomeName(@PathVariable String name, ModelMap model) {
  17. model.addAttribute("message", "Maven Web Project + Spring 3 MVC - " + name);
  18. return "index";
  19. }
  20. }

然后,创建Spring配置文件,定义视图解析器

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:context="http://www.springframework.org/schema/context"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  9. <context:component-scan base-package="com.mkyong.controller" />
  10. <bean
  11. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  12. <property name="prefix">
  13. <value>/WEB-INF/pages/</value>
  14. </property>
  15. <property name="suffix">
  16. <value>.jsp</value>
  17. </property>
  18. </bean>
  19. </beans>

然后更新一下web.xml文件,通过Spring的监听器ContextLoaderListener把Spring框架集成进去

  1. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  4. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. version="2.5">
  6. <display-name>Counter Web Application</display-name>
  7. <servlet>
  8. <servlet-name>mvc-dispatcher</servlet-name>
  9. <servlet-class>
  10. org.springframework.web.servlet.DispatcherServlet
  11. </servlet-class>
  12. <load-on-startup>1</load-on-startup>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>mvc-dispatcher</servlet-name>
  16. <url-pattern>/</url-pattern>
  17. </servlet-mapping>
  18. <context-param>
  19. <param-name>contextConfigLocation</param-name>
  20. <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
  21. </context-param>
  22. <listener>
  23. <listener-class>
  24. org.springframework.web.context.ContextLoaderListener
  25. </listener-class>
  26. </listener>
  27. </web-app>

然移动index.jsp到WEB-INF目录里,以防用户直接访问他,同时我们编辑,增加${message}变量,也就是controller控制器传过来的值到页面

最终的页面结构是:

图三

6.Eclipse+Tomcat

为了通过Eclipse的Tomcat插件开始/调试项目,需要再执行一次下面的命令,使得所有的依赖附加完成

  1. mvn eclipse:eclipse -Dwtpversion=2.0

在没执行以前,项目依赖是空的

图四

执行完以后,就都有了

图五

重要!许多人就是没有第二次执行这个命令导致无法开始/调试,如果有问题,右击你的项目属性,看看依赖是否为空

7.Maven打包

  1. <project ...>
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.mkyong</groupId>
  4. <artifactId>CounterWebApp</artifactId>
  5. <packaging>war</packaging>
  6. <version>1.0-SNAPSHOT</version>

web项目打包成war。放在target目录

进入项目目录,执行一下就可以了

  1. mvn package

然后把target目录的CountWebApp.war文件拷贝,并部署到你的web容器里就行了

8.Demo演示

打开http://localhost:8080/CounterWebApp/welcome

可以看到

图六

我们传个参数进去

http://localhost:8080/CounterWebApp/welcome/mkyong

就可以看到效果了

图七

9.Demo下载

CounterWebApp.zip

使用Maven创建Web项目(转)的更多相关文章

  1. 【maven】maven创建web项目-pom文件提示web.xml is missing and <failOnMissingWebXml> is set to true

    使用maven创建web项目,选择war类型后,pom文件红叉 提示web.xml is missing and <failOnMissingWebXml> is set to true ...

  2. (转)Maven学习总结(七)——eclipse中使用Maven创建Web项目

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(七)——eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Project 选择File -&g ...

  3. maven 创建web项目的标准目录结构

      maven 创建web项目的标准目录结构 CreateTime--2018年4月18日21:05:37 Author:Marydon 1.标准目录介绍(开发目录) 2.在eclipse下,目录展示 ...

  4. SSM 框架-04-使用maven创建web项目

    SSM 框架-04-使用maven创建web项目 本篇介绍使用MAVEN来管理jar包,就不用一个一个去添加和下载jar包了,直接在maven配置文件中配置就可以了,maven可以帮助我们自动下载.本 ...

  5. 简述泛型、用Maven创建Web项目以及在Web项目上整合SpringMVC

    表设计 Timestamp列是否取消"根据当前时间戳自动更新" 是否null及默认值选择合理不合理 外键命名规范及更新和删除时的动作是否合理   泛型 类型参数 --允许在外部指定 ...

  6. maven课程 项目管理利器-maven 4-1 使用maven创建web项目 5星

    本节主要讲了使用maven创建web项目 主要分这三大类: 1 新建maven  web项目 2 后续处理普通java项目转web项目需要关注的点 3 maven特色转web需要关注的点 1 新建ma ...

  7. Maven学习总结(7)——eclipse中使用Maven创建Web项目

    Maven学习总结(七)--eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如 ...

  8. 用maven创建web项目(spring Mvc)

    用maven创建web项目(spring Mvc) 1.打开cmd进入到你要创建maven项目的目录下: 2.输入以下命令.然后根据提示输入相应的groupId.artifactId.version: ...

  9. eclipse中Maven创建WEB项目

    刚刚学到Maven的时候总是容易忽视到一些创建Maven项目是的步骤, 这里记录笔者熟悉一种,直接创建Maven Project 下面开始吧--- 选择web-app,没得说,然后那些groupID ...

  10. Maven学习总结(七)——eclipse中使用Maven创建Web项目

    一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如下图所示:

随机推荐

  1. React Native框架如何白盒测试-HIPPY接口测试架构篇

    本文转载自腾讯TMQ团队 ,侵权删. 1.开天辟地 Hippy是什么呢?简单点,能用JavaScript来写Android和iOS应用的框架, 类似业界的React Native. 好吧,我们还是严谨 ...

  2. SpringBoot集成H2database

    转载:https://blog.csdn.net/chenhao_c_h/article/details/80332260 h2database为我们提供了十分轻量,十分快捷方便的内嵌式数据库 H2是 ...

  3. vuejs如何调试代码

    基于webpack的配置调试 使用Vue-cli命令行工具初始化基于wabpack模板的项目的命令语法: npm install -g @vue/cli # 全局安装vue-cli,版本vue3.x ...

  4. Laravel框架使用融云服务端SDK

    方法一:  使用第三方依赖安装(在项目根目录) 第一步:安装        composer require latrell/rongcloud dev-master 第二步:更新依赖包      c ...

  5. c++使用boost库遍历文件夹

    1.只在当前目录下遍历 #include <boost/filesystem.hpp> string targetPath="/home/test/target"; b ...

  6. iOS设计模式之工厂模式

    一,什么是工厂模式 模式定义: “专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类.” 世界上就是由一个工厂类,根据传入的参数,动态地决定创建出哪一个产品类的实例. 需求场景: 简 ...

  7. 写在Flutter 1.0之前

    开始 大概有半年没有写东西了,感觉时间过得飞快,18年也过一小半,趁着谷歌大会再为Flutter这个耀眼的新星,再吹一波! 都beta3了,1.0还会远吗 Flutter团队依然不紧不慢,一步一个脚印 ...

  8. 2018-2019-2 20175105王鑫浩《Java程序设计》实验三 《敏捷开发与XP实践》

    实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1751班 姓名:王鑫浩 学号:20175105 指导教师:王鑫浩 实验日期:2019年4月29日 实验时间:- ...

  9. vim中 E212:无法打开并写入文件 的解决办法

    因为centos7刚安装的时候是无法上网的,所以,需要去配置一下ifcfg-ens33文件,但实际上这个文件是只读的文件,root也无法去更改内容,这时候保存的时候需要使用 w ! sudo tee ...

  10. 笔记大神推荐的个人知识文档管理工具mybase

    铛铛铛,今天我要给大家推荐一款个人知识笔记管理神器,不出你们所料,它就是mybase. 那mybase究竟能干啥呢?借用mybase中文官网的一句话来说,mybase软件可以将电脑上的文档.知识.笔记 ...