maven 学习笔记


www.naxsu.com maven 学习笔记 1 / 42 目录 maven_初步 ......................................................... 2 版本管理 ........................................................... 9 maven_依赖 ......................................................... 9 依赖包的查询 ....................................................................................................................... 9 依赖的传递性 ..................................................................................................................... 10 依赖的范围 ......................................................................................................................... 10 小项目 ................................................................................................................................. 11 core 模块 ......................................................................................................................... 11 log 模块 ........................................................................................................................... 14 dao 模块 .......................................................................................................................... 16 service 模块 ..................................................................................................................... 17 maven_聚合和继承 ............................................................................................................ 18 maven_仓库 ........................................................ 24 本地仓库 ............................................................................................................................. 24 中心仓库(远程仓库) ..................................................................................................... 25 私有仓库 ............................................................................................................................. 25 nexus 的安装与使用 ....................................................................................................... 25 设置镜像 ......................................................................................................................... 27 更新索引 ......................................................................................................................... 29 项目的发布 ......................................................................................................................... 31 分仓库管理项目 ................................................................................................................. 32 maven_插件 ........................................................ 34 生命周期 ............................................................................................................................. 34 插件 ..................................................................................................................................... 35 插件的使用 ......................................................................................................................... 36 maven_web 项目的发布 .............................................. 38 www.naxsu.com maven 学习笔记 2 / 42 maven_初步 下载地址:http://maven.apache.org/download.html apache-maven-3.0.4-bin.zip 把 maven 所在的 bin 路径(E:\maven\apache-maven-3.0.4\bin)添加到环境变量中。 测试 maven 是否安装成功: C:\Users\itway>mvn -version Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800) Maven home: E:\maven\apache-maven-3.0.4\bin\.. Java version: 1.6.0_20, vendor: Sun Microsystems Inc. Java home: D:\Program Files\Java\jdk1.6.0_20\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 7", version: "6.1", arch: "x86", family: "windows" 修改仓库存放的位置(Default: ~/.m2/repository),找到 apache-maven-3.0.4\conf 下的 settings.xml 找到 localRepository,修改内容如下: E:/maven/repository 开始 helloworld 之旅 源代码应该放置到 src/main/java 中 源代码的资源文件应该放置在 src/main/resources 文件夹中 测试代码应该放置到 src/test/java 中 测试代码的资源文件应该放置在 src/test/resources 文件夹中 先来写一个普通类 Hello.java package com.naxsu.maven.hello; public class Hello{ public String sayHello(String name) { return "hello:"+name; } public static void main(String[] args) { System.out.println("hello world!"); } public String hello() { return "hello"; } } 再写一个测试类 package com.naxsu.maven.hello; import org.junit.*; import static junit.framework.Assert.*; www.naxsu.com maven 学习笔记 3 / 42 import com.naxsu.maven.hello.*; public class TestHello{ @Test public void testHello() { Hello h = new Hello(); assertEquals(h.sayHello("zs"),"hello:zs"); } } 每个项目都要有一个 pom.xml 文件 4.0.0 com.naxsu.maven.hello hello-first SNAPSHOT-0.0.1 junit junit 4.10 test 编辑源码:E:\maven\workspace\01>mvn compile 编辑成功后,在项目下会生成一个 target 目录,该目录下 classes 目录,classes 目录下就有 编辑好的 Hello.class 文件(带包的,也就是 target\classes\com\naxsu\maven\hello\Hello.class) 同理,执行 E:\maven\workspace\01>mvn test 命令会把测试代码编辑好,不过不是在 class 目录下,而是在 test-classes。 还有 surefire 和 surefire-reports,这主要是存放测试报告的文件夹。 www.naxsu.com maven 学习笔记 4 / 42 删除编辑好的 target 目录及子目录、文件: E:\maven\workspace\01>mvn clean 编辑及打包 E:\maven\workspace\01>mvn clean package 编辑及打包,并且把打包好的 jar 安装到本地仓库 E:\maven\workspace\01>mvn clean install mvn clean -->表示运行清理操作(会默认把 target 文件夹中的数据清理) mvn clean compile-->表示先运行清理之后运行编译,会见代码编译到 target 文件夹中 mvn clean test-->运行清理和测试 mvn clean package-->运行清理和打包 mvn clean install-->运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以 调用 mvn clean deploy-->运行清理和发布(发布到私服上面) 新建一个项目,调用刚才打包放到本地仓库的类。 World.java package com.naxsu.maven.world; import com.naxsu.maven.hello.*; public class World{ public static void main(String[] args) { Hello h = new Hello(); h.sayHello("李四"); h.hello(); } } pom.xml 4.0.0 com.naxsu.maven.hello hello-second SNAPSHOT-0.0.1 junit junit www.naxsu.com maven 学习笔记 5 / 42 4.10 test com.naxsu.maven.hello hello-first SNAPSHOT-0.0.1 compile 编辑也是可以通过的。 使用 maven 运行 java 的 main 方法 在 World.java 的 main 方法中加入一个 System.out.println("测试 main 方法输出!"); 编辑好,Maven 的 exec 插件允许你运行 Java 项目中的 main 方法 mvn exec:java -Dexec.mainClass="com.example.Main" -Dexec.args="arg0 arg1 arg2" -Dex ec.classpathScope=runtime E:\maven\workspace\02>mvn exec:java -Dexec.mainClass="com.naxsu.maven.world.Worl d" 由于 maven 有一些固定的生成模式,所以使用 mvn archetype generate 可以自动完成这个 骨架的建立 E:\maven\workspace\03>mvn archetype:generate … 【按回车键】 … Define value for property 'groupId': : com.naxsu.maven.hello Define value for property 'artifactId': : hello-third Define value for property 'version': 1.0-SNAPSHOT: : 0.0.1 Define value for property 'package': com.naxsu.maven.hello: : Confirm properties configuration: groupId: com.naxsu.maven.hello artifactId: hello-third version: 0.0.1 package: com.naxsu.maven.hello www.naxsu.com maven 学习笔记 6 / 42 Y: : Y 使用 eclipse 开发 maven 项目 默认 STS 和 myeclipse 都自带了 maven 的支持 如果是 eclipse 需要安装 m2eclipse m2e - http://m2eclipse.sonatype.org/sites/m2e 添加自己的 maven 版本 修改 maven 所用的仓库 www.naxsu.com maven 学习笔记 7 / 42 导入 maven 项目:Import Existing Maven Projects 新建一个 maven 项目: Newothermaven project www.naxsu.com maven 学习笔记 8 / 42  点击 finish 即可。 www.naxsu.com maven 学习笔记 9 / 42 版本管理 总版本号.分支版本号.小版本号-里程碑版本 总版本号的变动一般表示框架的变动 分支版本号:一般表示增加了一些功能 小版本号:在分支版本上面进行bug的修复 里程碑:SNAPSHOT-->alpha-->beta-->release-->GA user0.0.1-SNAPSHOT-->user0.0.1-Release--->user1.0.0SHAPSHOT -->user1.0.0-Rlease -->user0.1.0-SNAPSHOT-->user0.1.0-Rlease maven_依赖 依赖包的查询 1、所有的依赖都是通过坐标来进行存储的(GAV-->groupId、artifactId、version) 2、有一些网上的仓库提供了坐标的查询(http://mvnrepository.com) 3、通过设置依赖 maven 是如何搜索依赖的?首先会在本地仓库查询如果本地仓库没有,就去中央仓库查询 www.naxsu.com maven 学习笔记 10 / 42 依赖的传递性 1、依赖是会被传递 A-->C B-->A ==> B-->C(这种依赖是基于 compile 这个范围进行传递) 对于依赖的传递而言,主要是针对 compile 作用域传递 传递的冲突问题 1、a-->b1.0 c-->b1.1 d-->a 和 c,这个时候在 d 的 pom 中,哪一个依赖先写就使用先 写依赖的版本 如果 d-->ac-->依赖版本是 b1.0 2、a-->b1.0 c-->b1.1 d-->a 和 c-->b1.0 f-->d,c,如果路径的长短不一致就选择最小路 径 f-->b1.1 3、如果希望精确的控制依赖包,可以使用依赖的排除功能进行控制 依赖的范围 1、test 范围指的是测试范围有效,在编译和打包时都不会使用这个依赖 2、compile 范围指的是编译范围有效,在编译和打包时都会将依赖存储进去 3、provided 依赖:在编译和测试的过程有效,最后生成 war 包时不会加入,诸如:servlet-api, www.naxsu.com maven 学习笔记 11 / 42 因为 servlet-api,tomcat 等 web 服务器已经存在了,如果再打包会冲突 4、runtime 在运行的时候依赖,在编译的时候不依赖 默认的依赖范围是 compile 小项目 项目背景:一个用户管理项目,分为三个模块:core 模块、log 模块、dao 模块和 service 模 块。dao 模块依懒于 core 模块和 log 模块,core 模块又依懒于 hibernate 等,最后 dao 也会 依懒于 hibernate 等,这就是领情的依懒性。依懒的范围在其中也得到体现。在 log 模块中用 到的 log4j 是 1.2.9,在 core 模块用到的 log4j 是 1.2.16,所以,在 service 模块中充分解决 了传递的冲突问题。 core 模块 user 实体类 package com.naxsu.vo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="t_user") public class User { private int id; private String username; private String nickname; private String email; private String password; @Id @GeneratedValue public int getId() { return id; } // set get method ... } Hibernate 工具类 package com.naxsu.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { /** www.naxsu.com maven 学习笔记 12 / 42 * SessionFactory是单例 */ private static SessionFactory factory = null; static { factory = new Configuration().configure().buildSessionFactory(); } public static Session openSession() { return factory.openSession(); } } 测试类 TestUser package com.naxsu.test; import org.hibernate.Session; import org.junit.Assert; import org.junit.Test; import com.naxsu.util.HibernateUtil; import com.naxsu.vo.User; public class TestUser { @Test public void testAdd() { Session session = HibernateUtil.openSession(); session.beginTransaction(); // User u = new User(); // u.setUsername("admin"); // u.setPassword("admin"); // u.setNickname("超级管理员"); // u.setEmail("admin@admin.com"); // session.save(u); // // Assert.assertTrue(u.getId()>0); session.getTransaction().commit(); } @Test public void testLoad() { Session session = HibernateUtil.openSession(); session.beginTransaction(); User u = (User)session.load(User.class, 1); Assert.assertEquals(1, u.getId()); session.getTransaction().commit(); } www.naxsu.com maven 学习笔记 13 / 42 } pom.xml 4.0.0 com.naxsu.user user-core 0.0.1-SNAPSHOT jar user-core http://maven.apache.org UTF-8 junit junit 4.10 test org.hibernate hibernate-core 3.6.10.Final log4j log4j 1.2.16 mysql www.naxsu.com maven 学习笔记 14 / 42 mysql-connector-java 5.1.18 org.slf4j slf4j-log4j12 1.6.4 javassist javassist 3.12.1.GA 项目依懒的包: log 模块 Log 实体类 package com.naxsu.user.log; import java.util.Date; public class Log { public static void log(String str) { System.out.println(new Date()+"---"+str); } } POM.XML 文件 www.naxsu.com maven 学习笔记 15 / 42 4.0.0 com.naxsu.user user-log 0.0.1-SNAPSHOT jar user-log http://maven.apache.org UTF-8 junit junit 4.10 test log4j log4j 1.2.9 commons-logging commons-logging 1.1.1 依懒的包 www.naxsu.com maven 学习笔记 16 / 42 dao 模块 POM.XML 文件 4.0.0 com.naxsu.user user-dao 0.0.1-SNAPSHOT jar user-dao http://maven.apache.org UTF-8 junit junit 4.10 test com.naxsu.user user-core 0.0.1-SNAPSHOT www.naxsu.com maven 学习笔记 17 / 42 依懒的包: service 模块 POM.XML 文件 4.0.0 com.naxsu.user user-service 0.0.1-SNAPSHOT jar user-service http://maven.apache.org UTF-8 junit junit 4.10 test www.naxsu.com maven 学习笔记 18 / 42 com.naxsu.user user-dao 0.0.1-SNAPSHOT com.naxsu.user user-log 0.0.1-SNAPSHOT log4j log4j 依懒的包 maven_聚合和继承 聚合主要是为了解决多个模块一起构建。也就是说在上面的用户项目中,多个模块统一 在一个额外的模块来构建整个项目的所有模块。 继承主要是为了解决多个模块重复配置的问题。 下面来看看怎样来修改用户小项目 www.naxsu.com maven 学习笔记 19 / 42 首选建一个额外模块 user-paret,这个模块主要用一个 pom.xml 文件即可。配置如下: 4.0.0 com.naxsu.user user-parent 0.0.1-SNAPSHOT pom ../user-core ../user-dao ../user-log ../user-service http://maven.apache.org UTF-8 4.10 junit junit ${junit.version} test com.naxsu.user user-core 0.0.1-SNAPSHOT www.naxsu.com maven 学习笔记 20 / 42 com.naxsu.user user-dao 0.0.1-SNAPSHOT jar compile com.naxsu.user user-log 0.0.1-SNAPSHOT jar compile log4j log4j org.hibernate hibernate-core 3.6.10.Final log4j log4j 1.2.16 mysql mysql-connector-java 5.1.18 org.slf4j slf4j-log4j12 1.6.4 www.naxsu.com maven 学习笔记 21 / 42 javassist javassist 3.12.1.GA commons-logging commons-logging 1.1.1 core 模块的 pom.xml 文件修改如下: 4.0.0 com.naxsu.user user-parent 0.0.1-SNAPSHOT ../user-parent/pom.xml user-core user-core junit junit org.hibernate hibernate-core www.naxsu.com maven 学习笔记 22 / 42 log4j log4j mysql mysql-connector-java org.slf4j slf4j-log4j12 javassist javassist log 模块的 pom.xml 文件修改如下: 4.0.0 com.naxsu.user user-parent 0.0.1-SNAPSHOT ../user-parent/pom.xml user-log user-log junit junit www.naxsu.com maven 学习笔记 23 / 42 log4j log4j commons-logging commons-logging dao 模块的 pom.xml 文件修改如下: 4.0.0 com.naxsu.user user-parent 0.0.1-SNAPSHOT ../user-parent/pom.xml user-dao user-dao junit junit com.naxsu.user user-core service 模块的 pom.xml 文件修改如下: www.naxsu.com maven 学习笔记 24 / 42 4.0.0 com.naxsu.user user-parent 0.0.1-SNAPSHOT ../user-parent/pom.xml user-service junit junit com.naxsu.user user-dao com.naxsu.user user-log maven_仓库 本地仓库 在本机上 www.naxsu.com maven 学习笔记 25 / 42 中心仓库(远程仓库) 私有仓库 局域网内部的仓库 nexus 的安装与使用 Nexus 介绍 Nexus 是 Maven 仓库管理器,如果你使用 Maven,你可以从 Maven 中央仓库 下载所需要 的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个 Maven 仓库服务器, 在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus 就可以满足这样的需要。 参考资料:http://juvenshun.iteye.com/blog/349534 下载地址:http://www.sonatype.org/nexus/go nexus-2.0.3-bundle.zip 1、下载并且解压缩 2、将 bin 路径(E:\maven\nexus-2.0.3-bundle\nexus-2.0.3\bin)添加到环境变量 C:\Users\itway>nexus Usage: nexus { console : start : stop : restart : install : uninstall } 请按任意键继续. . . 3、nexus install 将 nexus 安装到 windows 的服务中 www.naxsu.com maven 学习笔记 26 / 42 C:\Users\itway>nexus install wrapper | nexus installed. 4、修改 E:\maven\nexus-2.0.3-bundle\nexus-2.0.3\bin\jsw\conf\wrapper.conf 的 java 路径 # Set the JVM executable # (modify this to absolute path if you need a Java that is not on the OS path) wrapper.java.command=D:\Program Files\Java\jdk1.6.0_20\bin\java 5.启动服务 C:\Users\itway>nexus start wrapper | Starting the nexus service... wrapper | Waiting to start... wrapper | Waiting to start... wrapper | nexus started. 打开浏览器,访问 http://127.0.0.1:8081/nexus 登录:用户名 amdin,密码 admin123 www.naxsu.com maven 学习笔记 27 / 42 仓库讲解 1、 host 的仓库。内部项目的发布仓库 2、 proxy 的仓库。从远程中央仓库中寻找数据的仓库 3、 group 仓库。组仓库用来方便开发人员进行设置的仓库 设置镜像 定义:如果仓库 X 可以提供仓库 Y 存储的所有内容,那么就可以认为 X 是 Y 的一个镜像。如: http://maven.net.cn/content/groups/public/是中央仓库 http://repo1.maven.org/maven2/在中 www.naxsu.com maven 学习笔记 28 / 42 国的一个镜像,由于地理位置的因素,该镜像往往能提供比中央仓库更快的服务。 设置私服镜像 修改 E:\maven\apache-maven-3.0.4\conf\settings.xml 文件 找到 mirrors 元素,在里面添加 central * Human Readable Name for this Mirror. http://127.0.0.1:8081/nexus/content/groups/public/ 为了此时本机中的所有 maven 项目都会去私有仓库中查询依赖,setttings.xml 的 profiles 属性下 加入以下内容: central-repos central Central http://www.myhost.com/maven/jdk14 true true 激活 profile central-repos 测试一下刚才添加是否有效果 在 user-parent 中添加一个依懒 mockobjects alt-jdk1.3 0.07 在 user-core 中引用该依懒 mockobjects www.naxsu.com maven 学习笔记 29 / 42 alt-jdk1.3 看看控制台有输出: 12-4-15 上午12时02分30秒: Refreshing [/user-core/pom.xml] 12-4-15 上午12时02分32秒: Downloading http://127.0.0.1:8081/nexus/content/groups/public/mockobjects/alt-jdk 1.3/0.07/alt-jdk1.3-0.07.pom 12-4-15 上午12时02分32秒: Downloaded http://127.0.0.1:8081/nexus/content/groups/public/mockobjects/alt-jdk 1.3/0.07/alt-jdk1.3-0.07.pom 12-4-15 上午12时02分34秒: Downloading http://127.0.0.1:8081/nexus/content/groups/public/mockobjects/alt-jdk 1.3/0.07/alt-jdk1.3-0.07.jar 12-4-15 上午12时02分34秒: Downloaded http://127.0.0.1:8081/nexus/content/groups/public/mockobjects/alt-jdk 1.3/0.07/alt-jdk1.3-0.07.jar 12-4-15 上午12时02分35秒: Maven Builder: AUTO_BUILD 12-4-15 上午 12 时 02 分 36 秒: Maven Builder: AUTO_BUILD requireFullBuild 更新索引 http://mirrors.ibiblio.org/pub/mirrors/maven2/dot-index/ nexus-maven-repository-index.zip 首先停止 nexus 的服务 www.naxsu.com maven 学习笔记 30 / 42 C:\Users\itway>nexus stop wrapper | Stopping the nexus service... wrapper | nexus stopped. 删除 E:\maven\nexus-2.0.3-bundle\sonatype-work\nexus\indexer\central-ctx 目录的索引文件, 把刚下载的索引文件拷贝到该目录中。 启动 nexus 服务 C:\Users\itway>nexus start wrapper | Starting the nexus service... wrapper | Waiting to start... wrapper | Waiting to start... wrapper | Waiting to start... wrapper | Waiting to start... wrapper | nexus started. 刷新打开的 nexus 页面,在浏览索引下会有很多的索引文件 也可以直接对着库右击更新索引: 更新完索引后,可以直接在 nexus 的操作页面上搜索你想要的依懒包: www.naxsu.com maven 学习笔记 31 / 42 项目的发布 首页在 nexus 客户端设置允许发布: 设定 release 工厂和 snapshots 工厂,在 user-parent/pom.xml 中添加以下内容: user-snapshots User Project SNAPSHOTS http://127.0.0.1:8081/nexus/content/repositories/snapshots/ user-releases User Project Release http://127.0.0.1:8081/nexus/content/repositories/release/ www.naxsu.com maven 学习笔记 32 / 42 运行 clean deploy 出错:Return code is: 401, ReasonPhrase:Unauthorized. 继续修改 settings.xml 文件,在 servers 结点下加入以下内容 user-snapshots deployment deployment123 user-releases deployment deployment123 分仓库管理项目 1. 创建两个工厂:release 和 policy 的 2. 配置权限 配置好之后: www.naxsu.com maven 学习笔记 33 / 42 3. 创建角色并且分配权限 Security-->Roles—>new nexus role 4. 创建用户 5. 创建发布的工厂 user-snapshots User Project SNAPSHOTS www.naxsu.com maven 学习笔记 34 / 42 http://127.0.0.1:8081/nexus/content/repositories/user ReposSnapshots/ user-releases User Project Release http://127.0.0.1:8081/nexus/content/repositories/user ReposReleases/ 别忘了修改 settings.xml 的用户名和密码 user-snapshots naxsu 123456 user-releases naxsu 123456 maven_插件 生命周期 1. clean pre-clean 执行一些需要在 clean 之前完成的工作 clean 移除所有上一次构建生成的文件 post-clean 执行一些需要在 clean 之后立刻完成的工作 2. compile validate generate-sources process-sources generate-resources process-resources 复制并处理资源文件,至目标目录,准备打包。 www.naxsu.com maven 学习笔记 35 / 42 compile 编译项目的源代码。 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 复制并处理资源文件,至目标测试目录。 test-compile 编译测试源代码。 process-test-classes test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。 prepare-package package 接受编译好的代码,打包成可发布的格式,如 JAR 。 pre-integration-test integration-test post-integration-test verify install 将包安装至本地仓库,以让其它项目依赖。 deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。 3. site pre-site 执行一些需要在生成站点文档之前完成的工作 site 生成项目的站点文档 post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 site-deploy 将生成的站点文档部署到特定的服务器上 插件 插件是 maven 的核心,所有执行的操作都是基于插件来完成的 为了让一个插件中可以实现众多的类似功能,maven 为插件设定了目标,一个插件中有可能有多 个目标 其实生命周期中的重要的每个阶段都是由插件的一个具体目标来执行的 插件源码: http://maven.apache.org/plugins/maven-compiler-plugin/source-repository.html 以 help 插件来说明一下 compiler 插件的帮助 1. 第一种方法: mvn help:describe -DgroupId=org.apache.maven.plugins -DartifactId=maven-compiler-plugin -Dversion=2.3.2 2. 第二种方法,参数+“:”连接: mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.3.2 3. 第三种方法,使用前缀: mvn help:describe -Dplugin=compiler www.naxsu.com maven 学习笔记 36 / 42 插件的使用 以 source、sql 和 rar 插件来说明一下插件的使用 修改 user-parent/pom.xml 文件 ... ... com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/mysql root 123 ... org.apache.maven.plugins maven-source-plugin 2.1.2 package jar-no-fork org.codehaus.mojo sql-maven-plugin 1.5 mysql mysql-connector-java 5.1.18 www.naxsu.com maven 学习笔记 37 / 42 ${mysql.driver} ${mysql.url} ${mysql.username} ${mysql.password} create database IF NOT EXISTS maven_test package execute org.apache.maven.plugins maven-rar-plugin 2.2 package rar 在 user-core 中引用上述插件,修改 user-core/pom.xml 文件 org.apache.maven.plugins maven-source-plugin www.naxsu.com maven 学习笔记 38 / 42 org.codehaus.mojo sql-maven-plugin org.apache.maven.plugins maven-rar-plugin 运行 mvn package 即可 maven_web 项目的发布 1. 新建 maven web 项目 Newprojectmaven project… nextnext要选择 maven-archetype-webapp www.naxsu.com maven 学习笔记 39 / 42  finish 创建结束 2. 源码 首先是 HelloServlet.java package com.naxsu.maven.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; public HelloServlet() { // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("hello","world"); request.getRequestDispatcher("hello.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } 然后是 pom.xml,主要是添加 servlet 与 jsp 的依懒、war 与 jetty 的插件。 4.0.0 com.naxsu.user user-web war www.naxsu.com maven 学习笔记 40 / 42 0.0.1-SNAPSHOT user-web Maven Webapp http://maven.apache.org junit junit 4.10 test servletapi servletapi 2.4 provided javax.servlet.jsp jsp-api 2.2 provided user-web org.apache.maven.plugins maven-war-plugin 2.2 hello org.mortbay.jetty jetty-maven-plugin 10 www.naxsu.com maven 学习笔记 41 / 42 /maventest 8787 60000 Web.xml 文件 Archetype Created Web Application HelloServlet com.naxsu.maven.servlet.HelloServlet HelloServlet /hello.do Hello.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here www.naxsu.com maven 学习笔记 42 / 42

hello:${hello }

打 war 包:clean package 启动 jetty:jetty:run
还剩41页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 5 人已下载

下载pdf

pdf贡献者

shijw

贡献于2012-07-17

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf