Eclipse+Maven搭建Spring的Web工程

原创
2017/05/27 10:01
阅读数 220

###前言

本文主要是指导如何使用Eclipse搭建Maven的SpringWeb工程,默认读者已经懂得J2EE、Maven的基础知识与配置


##一. 准备工作

首先需要下载maven的压缩包,解压,配置本地库;给Eclipse安装maven插件 具体操作方法可参考:安装maven与插件

我的最终配置结果如图:

Eclipse的Maven配置


##二. 创建Maven项目

  1. 点击Eclipse的菜单:File->New->Other->Maven 选择 Maven Project 点击Next 选择Maven Project

  2. 选择项目类型,这里一般选择的是maven-archetype-webapp,这里特别要细心,因为可选类型比较多,容易**选错**,后面造成困扰又返工。选择maven-archetype-quickstart也可以,只是后面可能需要做点小修改

    选择maven-archetype-webapp

  3. 这里是列表文本填写Group Id和Artifact Id,Version:这里是定义你的工程的maven坐标信息,如果你的项目是为了最终导出maven包提供给其他人用,那么当你把包放在仓库中后,这里填写的Group Id和Artifact Id,Version就可以提供给引用方,在他的pom文件里面配置好,就可以下载到你的maven包了。

    我的信息如下,version先用系统的默认值 填写Group Id和Artifact Id,Version

  4. 这里是列表文本之后基本的配置就算完成了,可以点击Finish,生成项目,如图 生成项目


##三. 修改项目格式

有时候生成的项目格式不够标准,或者相关配置不正确,导致eclipse编辑、编译class或者导出maven包时出错,因此我们要修改相关配置,使项目规范。此步骤并非必须,有的maven项目新建后正常,不需要此步骤。总之操作都根据项目实际情况而定

  • ###切换java版本

    有的时候需要用到特殊版本,但eclipse的java版本可能并不匹配,尤其是新建了WorkSpace工作空间后,所以需要我们手动切换下。

    以我的项目为例,可以看到新建后的JavaJRE版本为1.6,我想切换成1.7,首先在eclipse中添加JRE1.7的java版本,并且我把1.7设为了默认 在window->Preferences->Java->Installed JREs中,点击Add,找到需要的JRE版本的安装路径

    eclipse添加JRE1.7

    之后,右击项目,在弹出的tab中选择最下面的properties,在弹出窗口中,选择Java Build Path->Libraries,可以看到JRE版本是默认的1.6,双击它,弹出的窗口里,换成刚刚找到的1.7() 切换JRE

    有时候切换JRE后,会报错:Java compiler level does not match the version of the installed Java project facet,尤其是从低版本切换到高版本的时候。这时候需要修改下Properties里面的配置

    具体也可参考:Project facets

    右击项目,在弹出的tab中选择最下面的properties,在弹出窗口中,选择Project Facets,将里面的java的版本切换到对应的level,我切换成了1.7 Project Facets

  • ###src/main/java等资源文件夹不全

    资源文件夹包括四个

    src/main/java

    src/main/resource

    src/test/java

    src/test/resource

    有时候新建工程后,并没有上述全部4个资源文件夹,就需要自己手动新建。新建方法大多程序员都清楚,选择项目,右击,选择New->resource folder 然后缺什么文件夹就填写什么文件夹名,之后点击确定就生成了对应的资源文件夹

    特殊情况时,当填写了对应的资源文件夹名时,会报错,说文件夹已经存在了。可是从左边的项目中并不能看到此文件夹。

    无法新建资源文件夹

    解决此问题,需要 右击项目,在弹出的tab中选择最下面的properties,在弹出窗口中,选择Java Build Path->source,可以看到这个文件夹的关联是**missing**,在这里删除掉对应的配置,然后重新新建,就可以了。

    删除资源文件夹关联

    需要注意的是,Java Build Path->source这个地方可以设置不同资源文件夹编译后的文件存放的文件位置,在Output folder中设置,此配置可能会影响本地编译测试或最后的打包结果,需要注意

  • ###Deployment Assembly 丢失

    Deployment Assembly 丢失问题解决


##四. 编写Hello World

项目第一个测试程序都是hello world ,我们也不例外,编写hello world来测试整个服务正常编写与启动

###配置pom

双击我们刚新建项目的pom.xml,发现里面的dependences中,依赖包只有junit一项,因为我们是spring工程,因此需要把spring相关的dependence加上,如下:

    <properties>  
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
        <springversion>3.2.4.RELEASE</springversion>  
        <junitversion>3.8.1</junitversion>  
    </properties> 
  
    <dependencies>
    	<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junitversion}</version>
            <scope>test</scope>
        </dependency>
    
        <!-- spring核心包 -->  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-core</artifactId>  
            <version>${springversion}</version>  
        </dependency>
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-web</artifactId>  
            <version>${springversion}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-oxm</artifactId>  
            <version>${springversion}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-tx</artifactId>  
            <version>${springversion}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-jdbc</artifactId>  
            <version>${springversion}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-webmvc</artifactId>  
            <version>${springversion}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-aop</artifactId>  
            <version>${springversion}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-context-support</artifactId>  
            <version>${springversion}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-test</artifactId>  
            <version>${springversion}</version>  
        </dependency>

        <!-- 添加Servlet -->  
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>

    </dependencies>

配置完成后,保存。在工程上,右击,选择maven->Update Project···,下载依赖包,完成后,可以看到 添加pom依赖

如果下载不成功,可以看看maven下载的日志,其中概率很大的两个原因是:maven远程库网络不通;下载产生了.lastUpdated文件在maven本地库中,项目无法正常引用。

如果是连不到maven远程库,需要更换maven库的地址或者镜像地址,换成国内的库地址试试(在settings.xml中修改)。

如果是生成.lastUpdated文件,则需要删除本地库内的.lastUpdated文件,然后重新Update Project,直到正确下载。

###编写Spring MVC的代码

spring包已经正常引用了,因此可以按照spring MVC模式去编写Web代码

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>  
   
<web-app  
        version="3.0"  
        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_3_0.xsd">  
        
  	<display-name>Archetype Created Web Application</display-name>
  
  	<!-- 配置spring -->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	  	<init-param>  
	    	<param-name>contextConfigLocation</param-name>  
	    	<!--默认是:<param-value>/WEB-INF/classes/[servlet-name]-servlet.xml</param-value>-->
	   		<param-value>classpath*:/spring-mvc.xml</param-value>
		</init-param>  
	</servlet>

    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>  
  
</web-app>

上面指定的spring配置文件名为:spring-mvc.xml,放在classpath下,我放在了src/main/resource

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xsi:schemaLocation="http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd 
        http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd 
        ">
    
    <!-- 配置扫描的包,会扫描路径下所有包中的含有注解的类(如@Controller, @Service等) -->
    <context:component-scan base-package="org.leisu.*" />

    <!-- 注册HandlerMapper、HandlerAdapter两个映射类 <mvc:annotation-driven />会注册两个映射类,负责将请求映射到类和方法中 -->
    <mvc:annotation-driven />
    <!-- 因为配置的spring是拦截所有请求,所以需要配置<mvc:default-servlet-handler />,来让静态资源通过(如js, css文件等) -->
    <mvc:default-servlet-handler />
    <!-- 视图解析器 , 视图解析器是将Controller类返回的视图名加上配置的前后缀进行展示-->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    
</beans>

之后就是java文件,编写Controller

package org.leisu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorldController {

	
	@RequestMapping(value="/helloWorld")
	public String helloWorld(){
		
		return "HelloWorld";
	}
	
}

映射到的jsp文件为 HelloWorld.jsp,在view目录下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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">
        <title>Hello World</title>
    </head>
    <body>
        <h2>Hello World</h2>
    </body>
</html>

###配置Tomcat服务器 在server中,点击,配置Tomcat服务器,找到本地下载解压好的tomcat地址

Tomcat服务器

将新项目添加到此tomcat的托管工程下

加托管工程

加载完成后,启动服务(绿色三角箭头)

##五. 验证 在浏览器中输入地址,得到正确结果,说明程序成功启动

验证

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部