• 使用Eclipse构建Maven的SpringMVC项目


     

            首先Eclipse需要安装Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e。

            用MyEclipse安装Maven插件,建出的Maven项目有些问题。一是,发布tomcat的时候resources总是不会被发布到tomcat下;二是,把WEB-INF下的classes改到target下的classes,但是不知道为什么MyEclipse要么仍然在WEB-INF下生成class。要么真不在WEB-INF生成classes了但是发布tomcat的时候,class文件一个都不会给你发布过去,超级郁闷。但是使用Eclipse构建Maven项目后,使用MyEclipse打开就没问题了。

            用maven的好处:我感觉最主要就是自动下载jar包和它所依赖的包,这样可以保证了多人开发时jar版本不同的问题。再就是文件结构清晰,java文件,资源文件,测试文件都分的很清楚。

            将介绍两种方法:一,直接建立Maven项目方法;二、建立Dynamic Web project转成Maven项目方法。

    一、直接建立Maven项目方法

    1、建立Maven项目

            接下来使用Eclipse的maven构建一个web项目,以构建SpringMVC项目为例:

    1.1 选择建立Maven Project

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

    image

    1.2 选择项目路径

    Use default Workspace location默认工作空间。

    image

    1.3 选择项目类型

    在Artifact Id中选择maven-archetype-webapp

    image

    1.4 输入Group ID和 Artifact ID,以及Package

    Group ID一般写大项目名称。Artifact ID是子项目名称。

    例如Spring的web包,Group ID:org.springframework,artifactId:spring-web。

    Package是默认给你建一个包,不写也可以。

    image

    1.5 刚建立好后的文件结构如下图

    image

    如果这里显示的内容多,一般是Filters设置的问题。或perspective为JavaEE模式,改成Java模式就可以了。

    2、配置Maven项目

    接下来就需要更改好多配置了。

    2.1 添加Source文件夹

    接下来需要添加src/main/java,src/test/java ,src/test/resources三个文件夹。右键项目根目录点击New -> Source Folder,

    建出这三个文件夹。注意不是建普通的Folder,而是Source Folder。

    image

    2.2 更改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.

    image

    2.3 把项目变成Dynamic Web项目
    2.3.1 右键项目,选择Project Facets,点击Convert to faceted from

    image

    2.3.2 配置Project Facets

    选择java且版本1.6,勾选Dynamic Web Module的Version为2.5。(3.0为Java7的)。

    如果提示错误,可能需要在Java Compiler设置Compiler compliance level 为1.6。或者需要在此窗口的Java的Version改成1.6。

    image

    另:如果报错 cannot ….. Dynamic Web Module to 2.5

    image

    在workspace中打开 org.eclipse.wst.common.project.facet.core.xml文件

    image

    修改java version 1.6,jst.web version 2.5,保存重启eclipse

    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
      <fixed facet="wst.jsdt.web"/>
      <installed facet="java" version="1.6"/>
      <installed facet="jst.web" version="2.5"/>
      <installed facet="wst.jsdt.web" version="1.0"/>
    </faceted-project>
    2.3.3 配置 Modify Faceted Project

    点击Further configuration available…,弹出Modify Faceted Project窗口

    此处是设置web.xml文件的路径,我们输入src/main/webapp。

    Generate web.xml deployment descriptor自动生成web.xml文件,可选可不选。

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

    上面步骤设置完成后,点击OK,Properties窗口会关闭,在右键项目打开此窗口。在左侧列表中会出现一个Deployment Assembly,点击进去后,如下图:

    image

    此处列表是,部署项目时,文件发布的路径。

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

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

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

    设置完成效果图

    image

    3、向maven项目中添加jar包

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

    3.1 在pom.xml中添加所需要的jar包

    使用Maven POM editor打开项目中的pom.xml文件,选择Dependencies,在Dependencies栏目点击Add进行,首先弹出一个搜索按钮,例如输入spring-web,就会自动搜索关于spring-web相关的jar包,我们选择3.0.5版本的spring。将spring包全部添加进来。需要添加的其他jar包有:junit、jstl。或者点击pom.xml直接编辑pom.xml文件。这样可以直接copy过来dependencies内容。

    image

    3.2设置jar包的scope

    image

    当添加进入一个jar包后,有一些属性需要设置,最重要的就是scope,它有以下几种取值:

    1. compile,缺省值,适用于所有阶段,会随着项目一起发布。

    2. provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。

    3. runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

    4. test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

    5. system,类似provided,需要显式提供包含依赖的jar,Maven不会在 Repository中查找它。

    通常SpringMVC项目所需要配置scope的jar包如下图:

    image

    有的时候发现servlet-api还是被打包到lib下面了,此时肯定会报错。就需要把maven插件中的WTP也安装一下。

    Eclipse在线安装路径:http://m2eclipse.sonatype.org/sites/m2e-extras。选择for Eclipse WTP。

    4、构建SpringMVC框架

    4.1 编辑web.xml文件

    需要添加log4j,字符过滤,Spring 的dispatcher等。

    webx.xml代码如下:

    Xml代码

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                                 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
             version="2.5" >
        
        <!-- 区分项目名称,防止默认重名 -->
        <context-param>
            <param-name>webAppRootKey</param-name>
            <param-value>maven.example.root</param-value>
        </context-param>
    
        <!-- Spring的log4j监听器 -->
        <listener>
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>
    
        <!-- 字符集 过滤器  -->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- Spring view分发器 -->
        <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    
    </web-app>

    4.2 编写Spring配置文件dispatcher-servlet.xml

    如要添加MVC驱动、注解检测、视图解析等。dispatcher-servlet.xml代码如下:

    Xml代码

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" 
           xmlns:aop="http://www.springframework.org/schema/aop" 
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc" 
           xmlns:tx="http://www.springframework.org/schema/tx" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd 
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
        <mvc:annotation-driven />
        <context:component-scan base-package="com.xujj" />
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>
    
    </beans>
    4.3 编写一个Controller层测试类

    编写一个SpringMVC的Controller层测试类。此类只有一个方法做地址映射,并向页面传递一个数据。代码如下:

    Java代码

    package com.xujj.springweb.ctrl;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class GeneralController {
        
        @RequestMapping(value="index.do")
        public void index(Model model){
            model.addAttribute("xujj","Hello World");
            System.out.println("");
        }
    
    }
    4.4 编写index.jsp页面

    首先在src/main/webapp/WEB-INF下建文件夹views。此处和dispatcher-servlet.xml配置文件中的prefix属性路径要一样。

    在views下建index.jsp文件

    我们使用jstl获取Controlleradd的数据。

    Jsp页面代码如下:

    Html代码

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    </body>
        <c:out value="${xujj}}"></c:out>
    </html>
     

    5,发布到tomcat

    这个就没啥说的了。

    Eclipse下Tomcat常用设置:http://limingnihao.iteye.com/admin/blogs/825394

    6,测试

    访问地址:http://localhost:8080/springweb/

    转自:http://limingnihao.iteye.com/blog/830409

  • 相关阅读:
    NumberFormat 类
    ExtJs自学教程(1):一切从API開始
    机器学习笔记——贝叶斯学习
    装饰模式
    Cocos2d-x 动手实现游戏主循环
    Solr使用入门指南
    3D数学读书笔记——矩阵进阶
    学习笔记一:关于directx sdk的安装于一些概念
    oracle-db安装
    java实现第六届蓝桥杯切开字符串
  • 原文地址:https://www.cnblogs.com/xujj/p/2452788.html
Copyright © 2020-2023  润新知