ssm實訓報告心得_Java開發學習心得(一):SSM環境搭建

Java開發學習心得(一):SSM環境搭建

有一點.NET的開發基礎,在學校學過基礎語法,對JAVA有點興趣,就簡單學習了一下,記錄一下從哪些方面入手的,暫時不打算深入到原理方面,先簡單搭下環境看看,所以有些地方可能講得不慎準確。

1 SSM框架

從網上的討論來看,SSM框架似乎正在慢慢被Spring Cloud的取代。

1.1 Spring Framework

Spring是一個開源的Java/Java EE全功能棧(full-stack)的應用程序框架,以Apache License 2.0開源許可協議的形式發布,也有.NET平臺上的移植版本。該框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一書中的代碼,最初由Rod Johnson和Juergen Hoeller等開發。

Spring Framework提供了一個簡易的開發方式,這種開發方式,將避免那些可能致使底層代碼變得繁雜混亂的大量的屬性文件和幫助類。 簡單來說,Spring是一個輕量級的控制反轉(IoC)面向切面(AOP)的容器框架。 如果學習JAVA Spring,這兩個東西應該是繞不開的,但是暫時理解不深刻,后面準備深入到代碼實現層面,與.NET進行一些比較。

控制反轉 IoC(Inversion of Control)

在IoC出現以前,組件之間的協調關系是由程序內部代碼來控制的,或者說,以前我們使用New關鍵字來實現兩組間之間的依賴關系的。 這種方式就造成了組件之間的互相耦合。IoC(控制反轉)就是來解決這個問題的,它將實現組件間的關系從程序內部提到外部容器來管理。 也就是說,由容器在運行期將組件間的某種依賴關系動態的注入組件中。

依賴注入(Dependency Injection):這就是DI,字面上理解,依賴注入就是將服務注入到使用它的地方。對象只提供普通的方法讓容器去決定依賴關系,容器全權負責組件的裝配,它會把符合依賴關系的對象通過屬性(JavaBean中的setter)或者是構造子傳遞給需要的對象。

相對于IoC而言,依賴注入(DI)更加準確地描述了IoC的設計理念。所謂依賴注入,即組件之間的依賴關系由容器在應用系統運行期來決定,也就是由容器動態地將某種依賴關系的目標對象實例注入到應用系統中的各個關聯的組件之中。

Spring核心思想,IoC與DI詳解

面向切面編程 AOP(aspect-oriented programming)

POP面向過程程序設計

OOP面向對象的程序設計

微服務

關于 Spring AOP (AspectJ) 你該知曉的一切

1.2 Spring MVC

Spring MVC屬于SpringFrameWork的后續產品,已經融合在Spring Web Flow里面。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。

1.2.1 spring boot

Spring Boot就是Spring,它做了那些沒有它你也會去做的Spring Bean配置。它使用“習慣優于配置”(項目中存在大量的配置,此外還內置了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的項目快速運行起來。使用Spring Boot很容易創建一個獨立運行(運行jar,內嵌Servlet容器)、準生產級別的基于Spring框架的項目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

正常的Spring MVC構建需要

  • 一個項目結構,其中有一個包含必要依賴的Maven或者Gradle構建文件,最起碼要有Spring MVC和Servlet API這些依賴。
  • 一個web.xml文件(或者一個WebApplicationInitializer實現),其中聲明了Spring的DispatcherServlet。
  • 一個啟動了Spring MVC的Spring配置
  • 一控制器類,以“hello World”相應HTTP請求。
  • 一個用于部署應用程序的Web應用服務器,比如Tomcat。

spring boot 特點

  • 自動配置:針對很多Spring應用程序常見的應用功能,Spring Boot能自動提供相關配置
  • 起步依賴:告訴Spring Boot需要什么功能,它就能引入需要的庫。
  • 命令行界面:這是Spring Boot的可選特性,借此你只需寫代碼就能完成完整的應用程序,無需傳統項目構建。
  • Actuator:讓你能夠深入運行中的Spring Boot應用程序,一套究竟。

使用Spring Boot的方法之一:Spring Initializr

  • 通過Web構建 http://start.spring.io/

c87567b32fbdbf9add00c2c70a7c45cc.png
  • IDEA
  • 目前IDEA只支持Java8的JDK

168fcc34083679b642b7cd4a66a8f700.png

2.Apache Maven,是一個軟件(特別是Java軟件)項目管理及自動構建工具,由Apache軟件基金會所提供。基于項目對象模型(Project Object Model,POM)概念,Maven利用一個中央信息片斷能管理一個項目的構建、報告和文檔等步驟(生命周期)。

b1816da42c9f26d7de21fcbb6812089d.png
  1. 選擇需要的依賴

bc37f712015b2925428adec178850951.png
  1. pom.xml
<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><!-- 添加classpath依賴 --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 開發者工具,當classpath下有文件更新自動觸發應用重啟 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!-- maven編譯插件,用于創建可執行jar包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

構建啟動的三種方式

  1. 在IDE(或者命令行工具中的java)啟動main函數,IDE中一般都自帶Maven,能夠幫助我們下載安裝Maven依賴。

94513a020716c50741c7c59daba67950.png

2. 運行mvn spring-boot:run命令,但是此種方法要求你在本地環境中必須安裝Maven 使用命令行有兩種方式,一種是直接找到Maven項目視圖中的spring boot啟動命令直接運行

608c1a70aece0494f26b3f07b8a72e33.png

dba0a0aea7951c49942a45746039a0c9.png

另一種是直接輸入命令

9e3e6651fc75c11825b83926bc40d640.png

3. 使用mvn package命令進行打包,生成一個可以直接運行的 JAR 文件,路徑是項目文件中的target目錄,使用“java -jar”命令就可以直接運行。

ad733d0fde2a5f5140b847d3d0f8e46c.png

d5c2568a4b626bc56afb9cf6861a7978.png

不管使用哪種方法都可以啟動項目,然后訪問http://localhost:8080就可以打開網站看到控制器里面的內容了

應用入口

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@SpringBootApplication
public class DemoApplication {@RequestMapping("/")public String index(){return "Hello Spring Boot";}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

對main函數所在的類進行修改,時期能接收Http請求并返回內容。

  • main()方法啟動了一個HTTP服務器程序,這個程序默認監聽8080端口,并將HTTP請求轉發給我們的應用來處理
  • @Controller標注表示Application類是一個處理HTTP請求的控制器,該類中所有被@RequestMapping標注的方法都會用來處理對應URL的請求,@ResponseBody標注告訴Spring MVC直接將字符串作為Web響應(Reponse Body)返回,如果@ResponseBody標注的方法返回一個對象,則會自動將該對象轉換為JSON字符串返回
  • index()方法上包含@GetMapping("/")標注,意味著在瀏覽器中訪問http://localhost:8080/(不考慮協議、host和port信息后的路徑為"/")后瀏覽器發送的請求會交給該方法進行處理
  • index()方法直接返回一個字符串,那么相當于直接將字符串"Hello World"作為HTTP請求的響應返回給瀏覽器,于是我們在瀏覽器中可以看到相應的返回值
  • 一個啟動了Spring MVC的Spring配置
  • 一控制器類,以“hello World”相應HTTP請求。
  • 一個用于部署應用程序的Web應用服務器,比如Tomcat。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java中boolean類型占用多少個字節

原文地址&#xff1a;http://www.cnblogs.com/wangtianze/p/6690665.html?utm_sourceitdadao&utm_mediumreferral ----------------------- 為什么要問這個問題&#xff0c;首先在Java中定義的八種基本數據類型中&#xff0c;除了其它七種類型都有明確的內存占用字節數外…

java虛引用作用_深入理解Java中的引用(二)——強軟弱虛引用

深入理解Java中的引用(二)——強軟弱虛引用在上一篇文章中介紹了Java的Reference類&#xff0c;本篇文章介紹他的四個子類&#xff1a;強引用、軟引用、弱引用、虛引用。強引用(StrongReference)強引用是我們在代碼中最普通的引用。示例代碼如下&#xff1a;Object o new Obje…

SQL查詢表的列名

SELECT COLUMN_NAME FROM DBA_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;

java老鳥123怎么樣_java入門123——一個老鳥的java學習心得.doc

java入門123——一個老鳥的java學習心得java入門123——一個老鳥的java學習心得篇一&#xff1a;java初學者學習心得學習Java心得體會學習了一學期的Java課程,覺得是該總結自己的心得體會了。開始學習任何一門課(包括java)&#xff0c;興趣最重要。一直覺得自己在學計算機編程語…

ruby 爬蟲爬取拉鉤網職位信息,產生詞云報告

思路&#xff1a;1.獲取拉勾網搜索到職位的頁數 2.調用接口獲取職位id 3.根據職位id訪問頁面&#xff0c;匹配出關鍵字 url訪問采用unirest&#xff0c;由于拉鉤反爬蟲&#xff0c;短時間內頻繁訪問會被限制訪問&#xff0c;所以沒有采用多線程&#xff0c;而且每個頁面訪問時間…

評論語義分析 分詞 分類python_用python調用ICTCLAS50進行中文分詞

直接上源碼吧tokenizer類&#xff1a;#_*_encoding:utf-8_*_from ctypes import *class tokenizer:def __init__(self):self._stext[、,“,”,&#xff0c;,。,《,》,&#xff1a;,&#xff1b;,!,‘,’,?,&#xff1f;,&#xff01;,, ,] #枚舉標點符號包括空格self._stopwor…

java對日期Date類進行加減運算、年份加減,月份加減

JAVA處理日期時間常用方法&#xff1a; 1.Java.util.Calendar Calendar 類是一個抽象類&#xff0c;它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉換提供了一些方法&#xff0c;并為操作日歷字段&#xff08;例如獲得下星期的日期&#xff09…

idle擴展插件_Python3.4學習筆記之 idle 清屏擴展插件用法分析

本文實例講述了Python3.4 idle 清屏擴展插件用法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;python idle 清屏問題的解決&#xff0c;使用python idle都會遇到一個常見而又懊惱的問題——要怎么清屏?在stackoverflow看到這樣兩種答案&#xff1a;1.在shell中輸入…

內存堆和棧的區別

原文鏈接&#xff1a;http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html -------------------------------------------------------------------------------- 在計算機領域&#xff0c;堆棧是一個不容忽視的概念&#xff0c;我們編寫的C語言程序基本上都要用…

MYSQL安裝和配置

Win10安裝MySQL5.7.22 解壓縮版&#xff08;手動配置 1.下載地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接點擊下載項 下載后&#xff1a; 2.可以把解壓的內容隨便放到一個目錄&#xff0c;我的是如下目錄&#xff08;放到C盤的話&#xff0…

python刪除過期文件_python刪除過期文件的方法

本文實例講述了python刪除過期文件的方法。分享給大家供大家參考。具體實現方法如下&#xff1a;# remove all jpeg image files of an expired modification date mtime# you could also use creation date (ctime) or last access date (atime)# os.stat(filename) returns …

【很久之前的一篇老文章】一位程序員工作10年總結的13個忠告

展望未來&#xff0c;總結過去10年的程序員生涯&#xff0c;給程序員小弟弟小妹妹們的一些總結性忠告。 走過的路&#xff0c;回憶起來是那么曲折&#xff0c;把自己的一些心得體會分享給程序員兄弟姐妹們&#xff0c;雖然時代在變化&#xff0c;但是很可能你也會走我已經做過的…

apply()與call()的區別

一直都沒太明白apply()與call()的具體使用原理&#xff0c;今日閑來無事&#xff0c;決定好好研究一番。 JavaScript中的每一個Function對象都有一個apply()方法和一個call()方法&#xff0c;它們的語法分別為&#xff1a; /*apply()方法*/ function.apply(thisObj[, argArray]…

java代碼執行了兩次_Java中JComboBox的itemStateChanged事件執行兩次的解釋

今天做項目&#xff0c;用到了JComboBox&#xff0c;即下拉列表框。為了在被選中的項發生改變時獲得被選中的項&#xff0c;所以使用的ItemStateChanged事件&#xff0c;可是問題就來了&#xff0c;每次觸發該事件&#xff0c;它都執行兩次&#xff0c;屢試不爽。一開始以為是代…

python連接mongo_使用簡單的Python連接訪問MongoDB

繼續來聊MongoDB。MongoDB作為了一個數據庫產品軟件&#xff0c;除了服務器Server端進程(mongod)外&#xff0c;還提供了比較豐富的訪問連接接口。我們最常用的就是兩個類型&#xff0c;一個是原生mongo shell&#xff0c;另一個就是應用程序語言訪問接口。1、從Mongo Shell到應…

spring與mybatis三種整合方法

原文鏈接&#xff1a;http://www.cnblogs.com/wangmingshun/p/5674633.html ------------------------------------------------------------------------------------------------- 1、采用MapperScannerConfigurer&#xff0c;它將會查找類路徑下的映射器并自動將它們創建成…

js常用的2中排序方法:冒泡排序和快速排序

冒泡排序&#xff1a;例如9 4 5 6 8 3 2 7 10 1 首先&#xff1a;9和4比較 4放前 4 9 5 6 8 3 2 7 10 1 4和5比較 4不動 4 9 5 6 8 3 2 7 10 1 4和6比較 4不動 4 9 5 6 8 3 2 7 10 1 4和3比較 3放前 3 9 5 6 8 4 2 7 10 1 3和2比較 2放前 2 9 5 6 8…

java 注冊頁面正則式_Java使用正則表達式對注冊頁面進行驗證功能實現

本文給大家介紹java使用正則表達式對注冊頁面進行驗證的代碼&#xff0c;代碼如下所示&#xff1a;package regex;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class registered {public static void main(String[] args)…

python 編程效率_如何有效提升數據分析效率?五大Python技巧

如何有效提升數據分析效率&#xff1f;相信這是所有數據分析工作者都想解決的問題。本文整理了五大python技巧&#xff0c;分別是Pandas Profiling&#xff1b;使用 Cufflinks 和 Plotly 繪制 Pandas 數據&#xff1b;IPython 魔術命令&#xff1b;Jupyter 中的格式編排&#x…

please select a vaild python interpret

當 JetBrains PyCharm 2017.1.3 x64 遇到 please select a vaild python interpret 錯誤時&#xff1a; 進入PyCharm setting 選項&#xff0c;搜索 interpret