1. 用maven2生成web工程
在想要创建工程的路径下,打开cmd,输入命令:
mvn archetype:create -DgroupId=com.sw.webwork -DartifactId=webwork -Dversion=1.0 -DarchetypeArtifactId=maven-archetype-webapp |
其中:
archetype:create表示要生成一个工程结构;
-DgroupId=com.sw.webwork:定义了pom文件中的groupId;
-DartifactId=webwork:定义了project名称;
-Dversion=1.0:定义了版本号;
-DarchetypeArtifactId=maven-archetype-webapp 表示要生成的工程类型是web工程,这个不做修改。
运行了该命令后,系统会在当前目录下生成一个名为webwork的文件夹,里面包含了一个src文件夹,还有一个pom.xml文件。
关于groupId和artifactId的概念,可以阅读如jiangshachina的《Maven入门--概念与实例》:http://www.blogjava.net/jiangshachina/archive/2006/09/01/67080.html
2.将文件夹结构修改为标准项目布局
刚生成的文件夹结构如下:
这不是一个maven标准的文件夹结构,maven的标准项目布局请参看http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html文章。
现在我们所需要做的就是根据maven的标准项目布局来增加一些缺失的文件夹:
1. 在src/main下新增resources文件夹,用于存放配置文件;
2. 在src下新增test文件夹,用于存放测试相关的文件;
3. 在src/test下新增java文件夹,用于存放测试java源文件;
4. 在src/test下新增resources文件夹,用于存放测试用的配置文件;
这样下来之后,文件夹结构变为如下:
3. 添加依赖的jar包
所要依赖jar包的groupId、artifactId和版本号,可以到http://www.mvnrepository.com/ 查询。
4.为项目添加jetty插件
现在我们想验证一下,这个用maven生成的web工程是否可以跑起来。我们可以通过一个名为jetty的嵌入式web容器来运行这个web工程,从而达到验证功能的效果。
我们需要为这个工程添加jetty插件,在pom.xml中,在<build>标签中增加如下一段配置:
<plugins> <!--Configuring the Jetty Plugin --> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> </plugins> |
再设置maven compile时的jdk版本,避免默认选择JDK1.3版本进行编译而造成某些问题(http://www.gbsou.com/2009/12/09/1697.html):
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> |
接下来,我们在webwork根目录运行”mvn jetty:run”命令,待jetty启动后,在浏览器中输入http://localhost:8080/webwork/链接,我们就可以访问第一个Hello world的页面了。
5.添加Spring MVC特性
在web.xml中定义DispatcherServlet,它是Spring MVC的前端控制器:
<!-- Spring MVC DispatcherServlet --> <servlet> <servlet-name>webwork</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> |
接下来增加servlet mapping,用于指定将交给spring的DispatcherServlet来处理的请求:
<!-- Dispatcher servlet mapping --> <servlet-mapping> <servlet-name>webwork</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> |
<!-- To support chinese gbk encoding --> <filter> <filter-name>CharacterSetEncoding Filter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>gbk</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterSetEncoding Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
再增加context-param和ContextLoaderListener,用于监听自定义的bean配置文件:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/*-beans.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> |
配置好web.xml后,我们还需新增webwork-servlet.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- Autodetect POJOs labeled with the @RequestMapping annotation --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <!-- Autodetect methods labeled with the @RequestMapping annotation --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- Autodetect POJOs labeled with the @Controller annotation --> <context:component-scan base-package="com.sw" /> <!-- Configurer that sets up a shared VelocityEngine for Velocity views --> <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="velocityProperties"> <props> <prop key="input.encoding">GBK</prop> <prop key="output.encoding">GBK</prop> </props> </property> <property name="resourceLoaderPath" value="WEB-INF/views/" /> </bean> <!-- Simple ViewResolver for Velocity, appending ".vm" to logical view names --> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="contentType" value="text/html;charset=gbk" /> <property name="suffix" value=".vm" /> </bean> </beans> |
其中前三个是用来支持SpringMVC的annotation的配置,后面两个是用来支持velocity的配置。
在pom.xml中的<dependencies>中添加springmvc的jar包依赖:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>2.5.6</version> </dependency> |
再添加velocity的jar包依赖:
<dependency> <groupId>velocity</groupId> <artifactId>velocity-dep</artifactId> <version>1.4</version> </dependency> |
完成后,用mvn jetty:run检测是否能成功启动web服务器。
6. 编写vm和controller