web应用边学边开发(2):maven+spring mvc 搭建第一个hello world 网站

 1 首先你需要有个web app开发平台,下载一个最新的eclipse吧

我下载的是这个: Eclipse IDE for Java EE Developers:Tools for Java developers creating Java EE and Web applications, including a Java IDE, tools for Java EE, JPA, JSF, Mylyn...

Windows   276 MB   32 bit   64 bit

下载的是j2ee的版本,检查有没有maven integrationgit,打开eclipse的主页,点击【help】-->【About Eclipse】

(1)上方显示的是是eclipse的版本信息。

(2)点击【Installation Details】按钮,查看安装详细可以看到安装的全部软件

发现gitmaven插件m2e都已经装好了,可以直接使用

 

2 创建第一个maven spring web mvc应用

2.1 选择建立Maven Project

选择File -> New -> Other,在New窗口中选择 Maven -> Maven Project。点击next。

点击下一步,选择archetype为 maven-archetype-webapp

 

2.2、配置Maven项目

添加Source文件夹

接下来需要添加src/main/javasrc/test/java src/test/resources三个文件夹。右键main下建立java文件夹(【new】->【folder】), test下建立java文件夹(【new】->【folder】),项目根目录点击【New】 -> 【Source Folder】建出src/test/resources这个文件夹.

更改class路径

右键项目,Java Build Path -> Source

下面应该有4个文件夹。src/main/java,src/main/resources,src/test/java ,src/test/resources。

双击每个文件夹的Output folder,选择路径。

src/main/java,src/main/resources,选择target/classes;

src/test/java ,src/test/resources, 选择target/test-classes;

选上Allow output folders for source folders.

更改JDK版本

  1) 【Java Build Path】-->【Libraries】-->双击【JRE System Library】默认jrej2se 1.5版本jre6,此版本不够用,点击Edit,将其替换成本机安装的高版本(workspace default jre),我用的是jre7

  2) 【java compiler】 :设置java 1.7 

  3) 【project facets】:设置 java 1.7

2.3 把项目变成Dynamic Web项目 

右键项目,选择 【Project Facets,点击Convert to faceted from

勾选【Dynamic Web Module,更改Dynamic Web ModuleVersion3.0

2.4 设置部署程序集(Web Deployment Assembly)

上面步骤设置完成后,点击OK,Properties窗口会关闭,在右键项目打开此窗口。在左侧列表中会出现一个【Deployment Assembly,点击进去后,看到一个列表,该列表说明了部署项目时,文件发布的路径。操作如下: 

1,删除test的两项,因为test是测试使用,并不需要部署。

2,设置将Maven的jar包发布到lib下。

Add -> 【Java Build Path Entries ->Maven Dependencies  -> Finish

3、编辑pom.xml文件,向maven项目中添加jar包

maven可以管理项目依赖的jar包,通过groupID、artifactId以及版本号可以唯一确定一个jar包。这样可以防止老式Web项目中WEB-INF/lib下jar包不一致的问题。并且maven还会自动下载添加进的jar包所依赖的jar包。

 

 

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3   <modelVersion>4.0.0</modelVersion>
  4   <groupId>zz.webapp.com</groupId>
  5   <artifactId>test</artifactId>
  6   <packaging>war</packaging>
  7   <version>0.0.1-SNAPSHOT</version>
  8   <name>zzmavenWebapp</name>
  9   <url>http://maven.apache.org</url>
 10   <dependencies>
 11      <!-- junit -->
 12         <dependency>  
 13             <groupId>junit</groupId>  
 14             <artifactId>junit</artifactId>  
 15             <version>4.12-beta-3</version>  
 16             <scope>test</scope>  
 17         </dependency>  
 18         <!-- log4j -->  
 19         <dependency>  
 20             <groupId>log4j</groupId>  
 21             <artifactId>log4j</artifactId>  
 22             <version>1.2.17</version>  
 23         </dependency>  
 24           
 25         <dependency>  
 26             <groupId>jstl</groupId>  
 27             <artifactId>jstl</artifactId>  
 28             <version>1.2</version>  
 29         </dependency>  
 30         
 31       
 32   <!-- spring 的基本依赖 开始 -->  
 33   
 34         <dependency>  
 35             <groupId>org.springframework</groupId>  
 36             <artifactId>spring-core</artifactId>  
 37             <version>4.1.2.RELEASE</version>  
 38         </dependency>  
 39   
 40         <dependency>  
 41             <groupId>org.springframework</groupId>  
 42             <artifactId>spring-expression</artifactId>  
 43             <version>4.1.2.RELEASE</version>  
 44         </dependency>  
 45   
 46         <dependency>  
 47             <groupId>org.springframework</groupId>  
 48             <artifactId>spring-beans</artifactId>  
 49             <version>4.1.2.RELEASE</version>  
 50         </dependency>  
 51   
 52         <dependency>  
 53             <groupId>org.springframework</groupId>  
 54             <artifactId>spring-aop</artifactId>  
 55             <version>4.1.2.RELEASE</version>  
 56         </dependency>  
 57   
 58         <dependency>  
 59             <groupId>org.springframework</groupId>  
 60             <artifactId>spring-context</artifactId>  
 61             <version>4.1.2.RELEASE</version>  
 62         </dependency>  
 63         <dependency>  
 64             <groupId>org.springframework</groupId>  
 65             <artifactId>spring-context-support</artifactId>  
 66             <version>4.1.2.RELEASE</version>  
 67         </dependency>  
 68   
 69         <dependency>  
 70             <groupId>org.springframework</groupId>  
 71             <artifactId>spring-tx</artifactId>  
 72             <version>4.1.2.RELEASE</version>  
 73         </dependency>  
 74   
 75         <dependency>  
 76             <groupId>org.springframework</groupId>  
 77             <artifactId>spring-web</artifactId>  
 78             <version>4.1.2.RELEASE</version>  
 79         </dependency>  
 80         <dependency>  
 81             <groupId>org.springframework</groupId>  
 82             <artifactId>spring-jdbc</artifactId>  
 83             <version>4.1.2.RELEASE</version>  
 84         </dependency>  
 85   
 86         <dependency>  
 87             <groupId>org.springframework</groupId>  
 88             <artifactId>spring-webmvc</artifactId>  
 89             <version>4.1.2.RELEASE</version>  
 90         </dependency>  
 91         <dependency>  
 92             <groupId>org.springframework</groupId>  
 93             <artifactId>spring-aspects</artifactId>  
 94             <version>4.1.2.RELEASE</version>  
 95         </dependency>  
 96   
 97         <dependency>  
 98             <groupId>org.springframework</groupId>  
 99             <artifactId>spring-test</artifactId>  
100             <version>4.1.2.RELEASE</version>  
101         </dependency>  
102         
103       
104         <!-- spring 的基本依赖 结束 -->  
105 
106   </dependencies>
107   <build>
108     <finalName>test</finalName>
109   </build>
110   <dependencyManagement>
111 
112   </dependencyManagement>
113 </project>

 

4 编辑web.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 4     version="2.5">
 5 
 6   <display-name>Archetype Created Web Application</display-name>
 7 
 8 <!-- Spring的log4j监听器 -->  
 9     <listener>  
10         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
11     </listener>  
12   
13     <!-- 字符集 过滤器  -->  
14     <filter>  
15         <filter-name>CharacterEncodingFilter</filter-name>  
16         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
17         <init-param>  
18             <param-name>encoding</param-name>  
19             <param-value>UTF-8</param-value>  
20         </init-param>  
21         <init-param>  
22             <param-name>forceEncoding</param-name>  
23             <param-value>true</param-value>  
24         </init-param>  
25     </filter>  
26     <filter-mapping>  
27         <filter-name>CharacterEncodingFilter</filter-name>  
28         <url-pattern>/*</url-pattern>  
29     </filter-mapping>  
30   
31     <!-- Spring view分发器 -->  
32     <servlet>  
33         <servlet-name>dispatcher</servlet-name>  
34         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
35         <init-param>  
36             <param-name>contextConfigLocation</param-name>  
37             <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>  
38         </init-param>  
39         <load-on-startup>1</load-on-startup>  
40     </servlet>  
41     <servlet-mapping>  
42         <servlet-name>dispatcher</servlet-name>  
43         <url-pattern>*.do</url-pattern>  
44     </servlet-mapping>  
45   
46 
47 </web-app>

 

 

5 添加dispatcher-servlet.xml文件

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" 
 3        xmlns:aop="http://www.springframework.org/schema/aop" 
 4        xmlns:context="http://www.springframework.org/schema/context"
 5        xmlns:mvc="http://www.springframework.org/schema/mvc" 
 6        xmlns:tx="http://www.springframework.org/schema/tx" 
 7        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 8        xsi:schemaLocation="http://www.springframework.org/schema/aop 
 9         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
10         http://www.springframework.org/schema/beans 
11         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
12         http://www.springframework.org/schema/context 
13         http://www.springframework.org/schema/context/spring-context-3.0.xsd 
14         http://www.springframework.org/schema/mvc 
15         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
16         http://www.springframework.org/schema/tx 
17         http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
18 
19     <mvc:annotation-driven />
20     <context:component-scan base-package="zz.maven.example" />
21 
22     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
23         <property name="prefix" value="/WEB-INF/views/" />
24         <property name="suffix" value=".jsp" />
25     </bean>
26     
27 
28 </beans>

6 添加index.jsp文件

在webapp下建立views文件夹,在views文件夹中创建index.jsp文件,文件内容如下: 

 1 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 2 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5     <head>
 6         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7         <title>ZZ Hello Test!</title>
 8     </head>
 9     
10     <body>
11         <c:out value="${aaa}"></c:out>
12     </body>
13 </html>

这里要注意,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>这一行代码需要放在最前面,否则jstl标签库不能正常运行,网页上的

c:out 标签会无法正常显示

7 添加GeneralControl.java文件 

在src/main/java下创建一个包,包名为zz.maven.example,此包名需与dispacher-servlet.xml中的这行代码:

 <context:component-scan base-package="zz.maven.example" /> 定义的base-package一致

在包内创建一个GeneralControl.java文件,其内容如下:
 1 package zz.maven.example;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.ui.Model;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 
 7 @Controller 
 8 public class GeneralController {
 9 
10     @RequestMapping(value="index.do")
11     public void index_jsp(Model model){
12         model.addAttribute("aaa", "Hello world!");
13         System.out.println("index.jsp");
14     }
15 }
 

8 bug调试

    Bug No. 1  : index.jsp页面顶端出现如下红色错误:The superclass "javax.servlet.http.HttpServlet" was

     not found on the Java Build Path。

     Reason&Solution: Javaweb工程类中没有添加Tomcat运行时相关类导致。   

    1、右击web工程->属性或Build Path->Java Build Path->Libraries-> Add Libray->Server Runtime -》Tomcat Server

    2、切换到Java Build Path界面中的Order and Export,选择Tomcat。

    注意:按以上方法操作时,若打开Server Runtime后一片空白,需要设置Apache服务器。设置方法为:

            window->Preferences->Server->Runtime Environment ->add --> 选择Apache的版本后点Next,再填入你apache服务器软件的安装(解压后)地址                

           我选择了本机已经安装的版本的是apache tomcat 6.0,支持 j2ee1.2-1.4,Java EE 5 and 6 modules

 

    Bug No. 2 : 运行时报错: “严重: Error configuring application listener of class                        

          org.springframework.web.util.Log4jConfigListener java.lang.ClassNotFoundException:    

          org.springframework.web.util.Log4jConfigListener

          SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

          Reason&solution: pom.xml的头部删除这一行即可:

         <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

          "http://java.sun.com/dtd/web-app_2_3.dtd" >

 

  9 最终的代码结构和运行方式:

    最后,我们盘点下,总共添加了6个文件(如果jstl标签库出错,需要在webapp->WEB-INF-->lib下引入一个jstl.jar

,就算添加了7个文件吧)。最后的代码结构如下图:

    

 

    运行网站的方式为: 右键点击test-->Run As-->Run Configurations...

   

 

运行成功后,打开网页,输入网址:

运行 http://localhost:8080/test/index.do

可以看到显示的Hello World! 

此外网页的标题为:ZZ Hello Test!

 

posted on 2016-05-27 16:53  zzlab  阅读(899)  评论(1编辑  收藏  举报

导航