码迷,mamicode.com
首页 > 其他好文 > 详细

一个未知项目的开始

时间:2014-12-10 12:27:21      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

一系列的文章,每一篇完成一个功能或者解决一个问题。每一篇的文章按照  目标--操作流程--存在问题--原理--解决问题 这样的思路进行。

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

目标:

搭建Maven+Spring+Spring MVC的JAVAEE项目,也想看清Web开发的本质吧。

开发的平台使用基于Eclipse的STS(Spring Tool Suite)

Maven的版本是自己下载的3.2.3,不是Eclipse自带的Maven

Spring的版本使用最新的发布版本Spring framework 4.1.2release版本(这里标记一下,后面要谈一下对Spring的认识以及自己的学习)

Spring MVC的版本也就是同Spring一样的版本吧,毕竟是属于Spring的框架中的一块

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

流程:

 

1、新建Maven项目

 

bubuko.com,布布扣

前面的流程和后面的流程都不需要注意什么,一直按照要求写便可以了,只是在这一步要注意一点

选择项目类型的时候要选择maven-archetype-webapp,这里的主要作用就是生成文件的目录以及定义项目的属性和source文件夹(也就是项目运行时默认的环境目录是什么)classpath

填写完成之后生成的目录结构如图:

bubuko.com,布布扣

这里的java build path 需要加一个 tomcat的server runtime 否则的话jsp是无法解析的

至于jsp的原理或者说是servlet的原理需要深究一下,以后要研究一下这里mark一下。。。。

-------------------------------------------------------------------------------------------------------------------------------------------------

下面就是要向pom.xml中加入相应的依赖,这里我们只加入最小的依赖集,后面每次加入新的功能,需要新的jar包则更改pom文件。

 

首先加入web依赖

 

<properties>
      <!-- GenericProperties -->
      <java.version>1.8</java.version>
      <project.buildsourceEncoding>UTF-8</project.buildsourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      
      <!-- Web -->
      <jsp.version>2.3.1</jsp.version>
      <jstl.version>1.2</jstl.version>
      <servlet.version>3.1.0</servlet.version>
  </properties>
  
  <dependencies>
      <!-- Web Dependencies -->
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>${jsp.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
      </dependency>
</dependencies>

 

这里加入的servlet-api与jsp-api都是编译时需要的,在我们部署项目到web容器中时web容器一般都会提供这两个jar包,举个例子就是tomcat。

如果不加入这两个jar包那么就会发现jsp文件就会报错,因为找不到相应的class;但是如果buildpath加入tomcat的server runtime报错就会消失,由此可见这两个的关系了。

至于jstl,这个我也不是很明白,这里也标记一下等以后搞清楚

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面加入Sping的依赖,这里我们将Sping和Spring MVC分开加入,因为Spring在很多地方都能够使用而Spring MVC是同Structs相同的分层组件,Spring是管理组件。

<!-- Spring framework -->
        <spring-framework.version>4.1.2.RELEASE</spring-framework.version>
        <!-- Spring -->
        <!-- core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <!-- context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <!-- Expression -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <!-- Transaction -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <!-- Spring AOP -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.4</version>
        </dependency>
        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- SpringTest -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- Spring jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <!-- Spring ORM -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

这里使用了spring jdbc和spring orm两个jar包,暂时使用,最终我们都会把它换成orm,不使用spring自带的jdbc去数据库查询,统一使用其他的orm进行统一查询

 

这里还有一个注意点就是Spring-core包需要一个依赖的包commons-collection

<!-- spring dependency -->
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>

有个很重要的一点就是maven依赖的传递性,很多上面的依赖其实只需要依赖一个其他的便可以都导入进来,但是我们不可能去查询每一个依赖的pom文件所以我们把我们需要的dependency全部加入带我们的pom文件中

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

现在加入Spring MVC的包

        <!-- Spring MVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <!-- Spring Web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面需要修改project facets

修改的原因呢,是因为maven新建项目时支持的java版本和Dynamic Web Module的版本都是比较低的我们需要进行修改到更高的版本,进入

bubuko.com,布布扣

 

这里的修改是一个比较蛋疼的事情,网上也没有给出一个比较好的方案,只能到navigator界面寻找org.eclipse.wst.common.project.facet.core.xml文件

直接在里面进行修改

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="java" version="1.8"/>
  <installed facet="jst.web" version="3.0"/>
</faceted-project>
这种修改时很不人性化的修改,因为不是自动生成啊。。。。。

针对这点,不知道说好还是不好,我也是很犹豫不知道该怎么评论这个东西

 

还有一个就是web程序的入口web.xml的重写

自动生成的web.xml是这样的

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

这里明显和我们的web版本不符合,这里是2.3,我们下需要的是3.0所以需要进行修改(这里猜想maven生成的web项目应该都是以java1.5和web2.3为基础,所以我们上一步改的那么吃力)

我们要将web.xml改成下面的样子

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
  <display-name>Archetype Created Web Application</display-name>
</web-app>

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

现在这个项目基本就搭好了,可以用tomcat跑这个项目了

 

存在的问题

1、Spring的jar包很多,不知道引入哪一些,因为maven依赖的传递性,引入一个依赖可能就会引入其他的依赖,所以可能会有一些的依赖不需要进行定义。但是我害怕有的依赖会没有引入,所以

把自己需要的依赖全部引入进来便不会觉得少了。

2、maven自动生成的web项目有一些问题,我们前面提到过,这个我不知道是我的配置问题还是说是本身就是这样,改动还是比较麻烦的,这个要看有没有啥好的解决方法。

 

现在这个项目基本就搭建完成了,后面我们要陆续添加新的功能

一个未知项目的开始

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/wangcansun/p/4154822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!