maven中如何创建一个Web项目

创建一个Web项目:
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203

步骤:
new/other/Maven/Maven project,(use default work space)
下一页:catalog: internal. filter: maven-archetype-webapp








































马克-to-win:而且我们把项目的jdk1.5变成1.6。右击项目名,propertoes/java build path/libraries/右击1.5,编辑,变成我们缺省的1.6,见下图






















马克-to-win:(先变jre,否则这步没法干,maven bug )【新版eclipse不用干】右击项目名,新建一个Source Folder(注意不是普通的folder),src/main/java,

经过一番改变,我们的项目变成如下的干净的空项目。















马克-to-win:观察一下项目目录下的.classpath文件,说明了会把src/main/resources简单拷贝和src/main/java目录下的java文件编译成class输出到target/classes目录下


<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
    <classpathentry kind="src" path="src/main/java"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>





在pom.xml中有句<packaging>war</packaging>,所以所有的target/classes都会被复制到web-inf目录下。


马克-to-win:在src/main/java目录下建立一个package为com.mark,之后建立类HelloWorld作为Servlet。

为了导包,在pom.xml中加入:

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>


立即项目中加入javax.servlet-api-3.0.1.jar。


在web.xml中加入。
   <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>com.mark.HelloWorld</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/servlet</url-pattern>
  </servlet-mapping>





HelloWorld.java变成如下:

package com.mark;
import java.io.IOException;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
     public void doGet(HttpServletRequest request, HttpServletResponse response) {
            try {
                response.getWriter().println("nihao ");
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
}



马克-to-win:右击pom.xml,run as/maven package,则生成helloworld4.war。这就是我们生成的web应用,里面有我们的servlet。把他手动拷贝到tomcat服务器的 webapps目录下,启动tomcat,运行http://localhost:8080/helloweb4/servlet可以看到结果。




以上的过程生成war包,再自己拷贝过去太麻烦,如果能用到过去学过的技术就好了。那我们就看一下过去的一个项目。【新版eclipse以下都不用干,直接右击jsp就运行,和原来一样。】



















右击项目名/properties























马克-to-win:所以只要按照这张图做,我们的maven项目也能和过去一样,本机自测项目还是非常方便,本机自测完成,代码ok后,只要把war包给客户就可以了。




马克-to-win:现在把我们刚做的maven项目改一下。把Project Facet按照上图改变一下(如果万一有什么问题, 不要慌,在每个项目的.settings目录下,有个org.eclipse.wst.common.project.facet.core.xml配置文件,如有问题可以手动改它)。把Project Facet改变后,多了一个过去的WebContent(查看底层的物理路径也是这样),现在我们就删掉它,就保留现在的Webapp,新的截图是:














上图中有两处src,一处是maven过去的src,一处是我们转dynamic web project时生成的java resources,其实底层物理路径是共同的一处。其实eclipse在做转化的时候,根据 .classpath文件中知道什么是Source folder。它就把Source folder变成了java resources,所以底层是一处。所以在这两处的任意一处添加或改动文件效果是一样的。

而且把deployment assembly也改一下。新的截图是:





















马克-to-win:当我还是像过去一样,右击某个jsp,(run on server),运行这个dynamic web application时,eclipse就会按照deployment assembly的意图,把webapp目录下的所有东西拷贝到D:\eclipseJee\.metadata\.plugins\ org.eclipse.wst.server.core\tmp2\wtpwebapps\helloweb5。注意上面的maven dependency是必须的根据实验,否则jar包过不去。