激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JAVA學習之一步步搭建spring框架

JAVA學習之一步步搭建spring框架

2021-01-20 14:06教練_我要踢球 Java教程

這篇文章主要介紹了JAVA學習之一步步搭建spring框架,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

作為一個服務端開發感覺一直挺排斥框架這種東西的,總覺得什么實現邏輯都幫你封裝在里面了,你只需要配置這配置那個,出了問題也不知道怎么排查,之前即使寫web程序也寧愿使用jetty這樣的嵌入式的web server實現,自己寫servlet,總感覺從main函數開始都在自己的掌控范圍之內,但是這樣的方式的確有點原始,也看到各種各樣的開源系統使用spring實現web服務,雖然代碼總是能夠看明白,但是還是不曉得一步步是怎么搭建的,于是抽出一個周末折騰折騰,不搞不知道,原來這玩意能把一個不熟悉的用戶搞崩潰,本文主要介紹我是如何搭建一個spring環境的(話說還真的分不清spring和springmvn),雖然在大多數web開發看來這是雕蟲小技。

本文使用的環境是eclipse luna+spring比較新的一個版本(按照我選擇版本的規則是除非有什么新功能新版本才用,否則盡量不使用最新的版本,然后選擇較新的n個版本中使用人數比較多的,例如本文選用的spring版本是4.3.7.release)。

下面就從純工程的角度上解釋如何一步步的搭建這樣的環境的,沒有原理,有原理也是我純屬猜測的,沒有看過源碼。

詳細步驟

第一步:創建一個maven工程

這是再熟悉不過的流程了,但是一般我不推薦選擇archetype,只是創建一個simple project就可以了,前者總是創建失?。▌摻╝rchetype模式的可以讓ide做更多的事情)。其實在何謂maven工程,在我看來就是一個帶有pom.xml的java工程罷了,然后再把代碼的路徑設置為src/main/java類似這樣的結構,所以我們只需要用ide幫我們創建一個帶有pom.xml的工程就可以了,我們自己寫一個dependency和build參數。

配置的時候除了填寫正確的group id 和artifact id,主要把packaging選擇為war,這樣可以在tomcat下運行。

第二步:修改工程配置

這里需要修改的配置有兩個,只需要注意修改之后的樣子就可以了:

1、project facets:雖然不知道這里配置什么的,但是一次次的吃了這個的虧,這里要配置的是java選擇1.6以上(最好1.7吧),然后選擇dynamic web module,下方出現如下的界面:

JAVA學習之一步步搭建spring框架

如果沒出現則可以先勾掉dynamic web module,然后保存,然后再次點進去project facets,選擇dynamic web module,這時候就出現了這樣的界面,注意最好不要選擇3.0,之前遇到過3.0不兼容的問題,jdk1.7 + 2.5版本是可以正常運行的。

點進去“further configuration avaliable…”進行配置,將context directory修改成,并選擇生成web.xml,保存。如下圖:

JAVA學習之一步步搭建spring框架

此時你會看到你的工程結構如下圖,src/main目錄下出現了java/resources/webapp三個目錄。

JAVA學習之一步步搭建spring框架

2、配置deployment assembly,這里配置的source和deploy path,表示在工程部署的時候會將source目錄下的內容拷貝到tomcat部署目錄/deploy path下。這里需要配置的如下圖所示:

JAVA學習之一步步搭建spring框架

例如第一條表示會將工程中src/main/java目錄下的源代碼編譯之后放到部署目錄/web-inf/classes目錄下,最后一條表示會將該工程的maven依賴拷貝到部署目錄/web-inf/lib目錄下。據我觀察發現,其實tomcat目錄運行過程中會將部署部署目錄/web-inf/classes、部署目錄/web-inf/lib加入到classpath中,所以將配置文件和編譯完成的class文件放到classes下,依賴的jar放到lib目錄下都是可以在啟動java程序時找得到的。

第三步:下載spring依賴

spring的jar比較多,最基本的功能也需要如下的幾個dependency:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<properties >
    <spring.version >4.3.7.release </spring.version>
 </properties >
 
 <dependencies >
    <dependency>
      <groupid> org.springframework</groupid >
      <artifactid> spring-context</artifactid >
      <version> ${spring.version}</version >
    </dependency>
    <dependency>
      <groupid> org.springframework</groupid >
      <artifactid> spring-core</artifactid >
      <version> ${spring.version}</version >
    </dependency>
    <dependency>
      <groupid> org.springframework</groupid >
      <artifactid> spring-beans</artifactid >
      <version> ${spring.version}</version >
    </dependency>
    <dependency >
      <groupid> org.springframework</groupid >
      <artifactid> spring-web</artifactid >
      <version> ${spring.version}</version >
    </dependency>
    <dependency>
      <groupid> org.springframework</groupid >
      <artifactid> spring-webmvc </artifactid>
      <version> ${spring.version}</version >
    </dependency>
 </dependencies >

spring的不同的依賴使用的版本要保持一致。

第四步:編寫代碼

我們寫一個簡單的controller,這個controller返回一個“hello ${username}”字符串。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.fengyu.test;
 
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.bind.annotation.requestparam;
import org.springframework.web.bind.annotation.responsebody;
import org.springframework.web.bind.annotation.restcontroller;
 
@restcontroller
@requestmapping("/test" )
public class simplecontroller {
    @requestmapping(value = "hello", method = requestmethod.get)
    @responsebody
    public string helloworld(@requestparam ("user") string username) {
        return "hello " + username + " !" ;
    }
}

第五步:spring配置文件

spring配置文件一般取名叫”applicationcontext.xml”,當然這個不是spring默認的配置名,還是需要在web.xml中指定,這里我們只配置spring的配置文件,其實spring配置中主要是對一些bean的配置,這里我們暫時不需要創建任何bean,就只需要簡單地加一下掃描路徑就可以了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<beans xmlns= "http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
    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 ">
 
  < context:annotation-config />
  <!-- 自動掃描web包 ,將帶有注解的類 納入spring容器管理 -->
  <context:component-scan base-package="com.fengyu.test"></context:component-scan>
</beans>

這種配置文件一般放在src/main/resources目錄下,前面我們已經配置部署拷貝的設置,他會在部署時被拷貝到web-inf/classes/目錄下,這里只配置了兩項其中context:annotation-config是告訴spring識別注解配置,后面的scan表示要掃描的類的package。

第六步:配置web.xml

web.xml使我們第二步配置時自動生成的,它是tomcat啟動時需要依賴的配置,里面可以配置一些servlet、filter、listener等,對于簡單使用spring而言,一般只配置一個servlet,所有的請求都有這個servlet進行路由處理。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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_2_5.xsd" id= "webapp_id" version ="2.5">
  <servlet >
    <servlet-name> dispatcherservlet</servlet-name >
    <servlet-class> org.springframework.web.servlet.dispatcherservlet</servlet-class >
    <init-param>
      <param-name> contextconfiglocation</param-name >
      <param-value> classpath:applicationcontext.xml</param-value >
    </init-param>
    <load-on-startup> 1</ load-on-startup>
  </servlet >
  <servlet-mapping >
    <servlet-name> dispatcherservlet</servlet-name >
    <url-pattern> /</ url-pattern>
  </servlet-mapping >
</web-app>

可以看到我們只配置了一個dispatcherservlet,它處理所有的url請求,它初始化需要的配置文件會classpath下找applicationcontext.xml,剛才已經介紹,在部署的時候resources下的文件會拷貝到web-inf/classes目錄下并且加入到java啟動的classpath下。

第七步:部署tomcat

首先需要下載一個tomcat,tomcat 7.x是一個不錯的選擇,由于tomcat是綠色的(大多數java實現的都是綠色的),可以直接解壓,然后在eclipse中配置。在eclipse中window->server->runtime environment中add一個tomcat實例,注意需要選擇jdk,需要選擇當前jdk支持的版本。

然后再下方任務欄里面找到servers,如果沒有可以再window->show view中選擇servers添加,添加了之后可以在這里create a new server。選擇剛剛創建的tomcat實例,然后從avaliable的resources中選擇一個加入到右邊configured中(avaliable是根據工程中是否有web.xml生成的)。

第八步:配置tomcat

雙擊新創建的tomcat server,進入overview頁面,這個頁面可以配置這個工程運行tomcat實例,主要配置包括端口號,部署目錄等等,如果端口或文件不沖突的話盡量不要修改,需要修改的一處是server options中勾選上“publish module contexts to separate xml files”,雖然不知道這個是做什么的,但是血和淚的教訓告訴我要選上這個,直接保存。

第九步:啟動tomcat

這里可能有人要問了,為什么eclipse上沒有配置tomcat的插件啊,我到哪里去啟動tomcat!難道沒有那個貓頭就不行了嗎?說實話,配置那個貓頭經常遇到網絡問題失敗,于是不再嘗試了,而直接通過右擊第七步創建的tomcat實例就可以完成貓頭所能完成的所有功能,為什么還配置那個插件呢?右鍵start,然后祈禱啟動的時候不要出現什么錯誤,出現錯誤就google一下吧,基本上spring的問題都有人踩過坑的。

第十步:測試

啟動完成之后,一般不會出現什么錯誤,打開瀏覽器輸入http://localhost:8080/springtest/test/hello?user=world,此時就可以看到如下的輸出:

JAVA學習之一步步搭建spring框架

出現了我們想要的結果,此時的心情只能用愉悅來形容,但是我們指定了需要攜帶user參數,如果url中不帶參數則出現如下的錯誤:

JAVA學習之一步步搭建spring框架

如果不希望出現這樣的情況可以再helloworld這個參數的@requestparam修改為@requestparam(value=”user”,required=false, defaultvalue=”world”),當然這只是一個非常小的example說明注解的強大,spring還提供了豐富的注解來實現不同的需求,簡直就是用配置和注解來編程。

第十一步:復雜數據結構

上面的測試都是返回一個string,但是我們一般開發的時候會涉及到復雜的數據結構,大家一般都會用json來作為通信的序列化工具,那么怎么在spring中支持json呢?在測試這個之前,先看一下現在對于復雜數據結構(例如map)怎么返回的。
我們在controller中添加一個函數:

?
1
2
3
4
5
6
7
@requestmapping(value = "hellomap" , method = requestmethod.get)
@responsebody
public map<string, string> hellomap(@requestparam(value="user" ,required=false, defaultvalue= "world") string username) {
   map<string, string> ret = new hashmap<string, string>();
    ret.put( "hello", username );
    return ret ;
}

然后再瀏覽器中測試一下,出現如下的錯誤” the resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request “accept” headers.”,這個感覺是因為accept默認只接受text格式,而這個接口的返回值沒有返回text對象。

如果要支持json,其實只需要在spring中配置一下message-converters就可以了,每一個json庫都提供這樣的converter的,我們這里以fastjson作為示例吧,首先需要在pom.xml添加fastjson的依賴。然后在applicationcontext.xml中添加如下配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<mvc:annotation-driven>
      <mvc:message-converters register-defaults="false" >
         <bean
             class= "com.alibaba.fastjson.support.spring.fastjsonhttpmessageconverter" >
            <property name= "supportedmediatypes">
                <list>
                   <value> text/html; charset=utf-8</value >
                   <value> application/json; charset=utf-8</value >
                </list>
            </property>
         </bean>
      </mvc:message-converters>
  </mvc:annotation-driven>

這時候再重試剛才的url發現可以返回map轉換成json的樣子了。

JAVA學習之一步步搭建spring框架

第十一步:折騰

好了,上面的示例已經足夠完成一個比較簡單的web服務了,當然我們還沒有前端,只不過是通常作為服務端提供的http服務罷了,不過有了spring我們可以省去大量的代碼,當然通過http+json提供服務端接口比thrift等rpc框架要中一些,效率或許要低一些,但是它的優勢是比較簡單啊,調試比較方便啊。。。感覺大量的前端和服務端通信大都使用這樣的方式。

總結

學會了spring框架的搭建,媽媽再也不用擔心我寫web接口了,當然spring還能夠適配各種各樣的組件,例如通常使用的mybatis連接數據庫,jedis連接redis等;還有豐富的功能讓你盡量通過配置和注解降低不必要的代碼。最近比較好的spring boot貌似也是web開發神器。這個以后有時間再折騰。

當然本文只是記錄了血淚歷程,spring小白是如何一步步的搭建spring開發環境的,大神輕噴。。

本文代碼可以在 https://github.com/terry-chelsea/spring-demo.git  找到

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/yu616568/article/details/70739976

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久久www成人免费精品 | 激情宗合| 一区二区三区欧美视频 | 精品一区二区三区在线观看国产 | 国产亲子伦在线观看 | 成人在线视频在线观看 | 精品一区二区三区免费毛片爱 | 1314av| 国产亚洲精品久久久久久久久久 | 亚洲成人欧美 | 精品成人一区二区三区 | 女18一级大黄毛片免费女人 | 奇米影视亚洲精品一区 | 爱视频福利 | 国产精品视频导航 | 港台三级在线观看 | 黄污网站在线 | h色视频在线观看 | 福利在线国产 | www.54271.com | 色阁阁69婷婷| hd性videos意大利复古 | 日韩av电影在线免费观看 | 一级免费 | 狠狠操操| 国产一区二区三区四区五区精品 | 91精品久久久久久 | 黄色7777| 欧美黄色一级带 | 亚洲成人第一区 | 日日碰日日操 | 91精品动漫在线观看 | 92精品国产自产在线 | 中国国语毛片免费观看视频 | sm高h视频 | 草久视频在线观看 | 国产精品wwww| 欧美一级在线免费 | chengrenzaixian | 美国一级免费视频 | 中文日韩字幕 |