Spring MVC快速入門
今天給大家介紹一下Spring MVC,讓我們學習一下如何利用Spring MVC快速的搭建一個簡單的web應用。
參考程式碼請戳右上角,下載下來後可以在Eclipse或者IntelliJ中匯入為一個Maven專案。
環境準備
- 一個稱手的文字編輯器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、Idea Intellij)
- Java環境(JDK 1.7或以上版本)
- Maven 3.0+(Eclipse和Idea IntelliJ內建,如果使用IDE並且不使用命令列工具可以不安裝)
一個最簡單的Web應用
使用Spring Boot框架可以大大加速Web應用的開發過程,首先在Maven專案依賴中引入spring-boot-starter-web
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tianmaying</groupId> <artifactId>spring-web-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-web-demo</name> <description>Demo project for Spring WebMvc</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.5.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
接下來建立src/main/java/Application.java
:
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; @SpringBootApplication @RestController public class Application { @RequestMapping("/") public String greeting() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
執行應用:mvn spring-boot:run
或在IDE中執行main()
方法,在瀏覽器中訪問http://localhost:8080,Hello
World!
就出現在了頁面中。只用了區區十幾行Java程式碼,一個Hello World應用就可以正確運行了,那麼這段程式碼究竟做了什麼呢?我們從程式的入口SpringApplication.run(Application.class,
args);
開始分析:
-
SpringApplication
是Spring Boot框架中描述Spring應用的類,它的run()
方法會建立一個Spring應用上下文(Application Context)。另一方面它會掃描當前應用類路徑上的依賴,例如本例中發現spring-webmvc
(由spring-boot-starter-web
傳遞引入)在類路徑中,那麼Spring Boot會判斷這是一個Web應用,並啟動一個內嵌的Servlet容器(預設是Tomcat)用於處理HTTP請求。 -
Spring WebMvc框架會將Servlet容器裡收到的HTTP請求根據路徑分發給對應的
@Controller
類進行處理,@RestController
是一類特殊的@Controller
,它的返回值直接作為HTTP Response的Body部分返回給瀏覽器。 -
@RequestMapping
註解表明該方法處理那些URL對應的HTTP請求,也就是我們常說的URL路由(routing),請求的分發工作是有Spring完成的。例如上面的程式碼中http://localhost:8080/ 根路徑就被路由至greeting()
方法進行處理。如果訪問http://localhost:8080/hello ,則會出現 404 Not Found錯誤,因為我們並沒有編寫任何方法來處理
/hello`請求。
使用@Controller
實現URL路由
現代Web應用往往包括很多頁面,不同的頁面也對應著不同的URL。對於不同的URL,通常需要不同的方法進行處理並返回不同的內容。
匹配多個URL
@RestController
public class Application {
@RequestMapping("/")
public String index() {
return "Index Page";
}
@RequestMapping("/hello")
public String hello() {
return "Hello World!";
}
}
@RequestMapping
可以註解@Controller
類:
@RestController
@RequestMapping("/classPath")
public class Application {
@RequestMapping("/methodPath")
public String method() {
return "mapping url is /classPath/methodPath";
}
}
method
方法匹配的URL是/classPath/methodPath"
。
提示
可以定義多個@Controller
將不同URL的處理方法分散在不同的類中。
URL中的變數——PathVariable
在Web應用中URL通常不是一成不變的,例如微博兩個不同使用者的個人主頁對應兩個不同的URL: http://weibo.com/user1 和http://weibo.com/user2。 我們不可能對於每一個使用者都編寫一個被@RequestMapping
註解的方法來處理其請求,Spring
MVC提供了一套機制來處理這種情況:
@RequestMapping("/users/{username}")
public String userProfile(@PathVariable("username") String username) {
return String.format("user %s", username);
}
@RequestMapping("/posts/{id}")
public String post(@PathVariable("id") int id) {
return String.format("post %d", id);
}
在上述例子中,URL中的變數可以用{variableName}
來表示,同時在方法的引數中加上@PathVariable("variableName")
,那麼當請求被轉發給該方法處理時,對應的URL中的變數會被自動賦值給被@PathVariable
註解的引數(能夠自動根據引數型別賦值,例如上例中的int
)。
支援HTTP方法
對於HTTP請求除了其URL,還需要注意它的方法(Method)。例如我們在瀏覽器中訪問一個頁面通常是GET方法,而表單的提交一般是POST方法。@Controller
中的方法同樣需要對其進行區分:
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginGet() {
return "Login Page";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginPost() {
return "Login Post Request";
}
Spring MVC最新的版本中提供了一種更加簡潔的配置HTTP方法的方式,增加了四個標註:
@PutMapping
@GetMapping
@PostMapping
@DeleteMapping
在Web應用中常用的HTTP方法有四種:
- PUT方法用來新增的資源
- GET方法用來獲取已有的資源
- POST方法用來對資源進行狀態轉換
- DELETE方法用來刪除已有的資源
這四個方法可以對應到CRUD操作(Create、Read、Update和Delete),比如部落格的建立操作,按照REST風格設計URL就應該使用PUT方法,讀取部落格使用GET方法,更新部落格使用POST方法,刪除部落格使用DELETE方法。
每一個Web請求都是屬於其中一種,在Spring MVC中如果不特殊指定的話,預設是GET請求。
比如@RequestMapping("/")
和@RequestMapping("/hello")
和對應的Web請求是:
- GET
/
- GET
/hello
實際上@RequestMapping("/")
是@RequestMapping("/",
method = RequestMethod.GET)
的簡寫,即可以通過method
屬性,設定請求的HTTP方法。
比如PUT /hello
請求,對應於@RequestMapping("/hello",
method = RequestMethod.PUT)
基於新的標註@RequestMapping("/hello", method = RequestMethod.PUT)
可以簡寫為@PutMapping("/hello")
。@RequestMapping("/hello")
與GetMapping("/hello")
等價。
模板渲染
在之前所有的@RequestMapping
註解的方法中,返回值字串都被直接傳送到瀏覽器端並顯示給使用者。但是為了能夠呈現更加豐富、美觀的頁面,我們需要將HTML程式碼返回給瀏覽器,瀏覽器再進行頁面的渲染、顯示。
一種很直觀的方法是在處理請求的方法中,直接返回HTML程式碼,但是這樣做的問題在於——一個複雜的頁面HTML程式碼往往也非常複雜,並且嵌入在Java程式碼中十分不利於維護。更好的做法是將頁面的HTML程式碼寫在模板檔案中,渲染後再返回給使用者。為了能夠進行模板渲染,需要將@RestController
改成@Controller
:
import org.springframework.ui.Model;
@Controller
public class HelloController {
@RequestMapping("/hello/{name}")
public String hello(@PathVariable("name") String name, Model model) {
model.addAttribute("name", name);
return "hello"
}
}
在上述例子中,返回值"hello"
並非直接將字串返回給瀏覽器,而是尋找名字為hello
的模板進行渲染,我們使用Thymeleaf模板引擎進行模板渲染,需要引入依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
接下來需要在預設的模板資料夾src/main/resources/templates/
目錄下新增一個模板檔案hello.html
:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
th:text="'Hello, ' + ${name} + '!'"
也就是將我們之前在@Controller
方法裡新增至Model
的屬性name
進行渲染,並放入<p>
標籤中(因為th:text
是<p>
標籤的屬性)。模板渲染還有更多的用法,請參考Thymeleaf官方文件。
處理靜態檔案
瀏覽器頁面使用HTML作為描述語言,那麼必然也脫離不了CSS以及JavaScript。為了能夠瀏覽器能夠正確載入類似/css/style.css
, /js/main.js
等資源,預設情況下我們只需要在src/main/resources/static
目錄下新增css/style.css
和js/main.js
檔案後,Spring
MVC能夠自動將他們釋出,通過訪問/css/style.css
, /js/main.js
也就可以正確載入這些資源。
檔案上傳
Spring MVC還能夠支援更為複雜的HTTP請求——檔案資源。我們在網站中經常遇到上傳圖片、附件一類的需求,就是通過檔案上傳技術來實現的。
處理檔案的表單和普通表單的唯一區別在於設定enctype
——multipart編碼方式則需要設定enctype
為multipart/form-data
。
<form method="post" enctype="multipart/form-data">
<input type="text" name="title" value="tianmaying">
<input type="file" name="avatar">
<input type="submit">
</form>
這裡我們還設定了
<input type='text'>
的預設值為tianmaying
。
該表單將會顯示為一個文字框、一個檔案按鈕、一個提交按鈕。然後我們選擇一個檔案:chrome.png
,點選表單提交後產生的請求可能是這樣的:
請求頭:
POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
請求體:
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="title"
tianmaying
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="avatar"; filename="chrome.png"
Content-Type: image/png
... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
這便是一個multipart編碼的表單。Content-Type
中還包含了boundary
的定義,它用來分隔請求體中的每個欄位。正是這一機制,使得請求體中可以包含二進位制檔案(當然檔案中不能包含boundary
)。檔案上傳正是利用這種機制來完成的。
如果不設定<form>
的enctype
編碼,同樣可以在表單中設定type=file
型別的輸入框,但是請求體和傳統的表單一樣,這樣伺服器程式無法獲取真正的檔案內容。
在服務端,為了支援檔案上傳我們還需要進行一些配置。
控制器邏輯
對於表單中的文字資訊輸入,我們可以通過@RequestParam
註解獲取。對於上傳的二進位制檔案(文字檔案同樣會轉化為byte[]
進行傳輸),就需要藉助Spring提供的MultipartFile
類來獲取了:
@Controller
public class FileUploadController {
@PostMapping("/upload")
@ResponseBody
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
byte[] bytes = file.getBytes();
return "file uploaded successfully."
}
}
通過MultipartFile
的getBytes()
方法即可以得到上傳的檔案內容(<form>
中定義了一個type="file"
的,在這裡我們可以將它儲存到本地磁碟。另外,在預設的情況下Spring僅僅支援大小為128KB的檔案,為了調整它,我們可以修改Spring的配置檔案src/main/resources/application.properties
:
multipart.maxFileSize: 128KB
multipart.maxRequestSize: 128KB
修改上述數值即可完成配置。
HTML表單
HTML中支援檔案上傳的表單元素仍然是<input>
,只不過它的型別是file
:
<html>
<body>
<form method="POST" enctype="multipart/form-data" action="/upload">
File to upload: <input type="file" name="file"><br />
Name: <input type="text" name="name"><br /> <br />
<input type="submit" value="Upload"> Press here to upload the file!
</form>
</body>
</html>
multipart/form-data
表單既可以上傳檔案型別,也可以和普通表單一樣提交其他型別的資料,在Spring MVC的@RequestMapping
方法引數中用@RequestParam
標註即可(也可以利用資料繫結機制,繫結一個物件)
攔截器Interceptor
Spring MVC框架中的Interceptor,與Servlet API中的Filter十分類似,用於對Web請求進行預處理/後處理。通常情況下這些預處理/後處理邏輯是通用的,可以被應用於所有或多個Web請求,例如:
- 記錄Web請求相關日誌,可以用於做一些資訊監控、統計、分析
- 檢查Web請求訪問許可權,例如發現使用者沒有登入後,重定向到登入頁面
- 開啟/關閉資料庫連線——預處理時開啟,後處理關閉,可以避免在所有業務方法中都編寫類似程式碼,也不會忘記關閉資料庫連線
Spring MVC請求處理流程
上圖是Spring MVC框架處理Web請求的基本流程,請求會經過DispatcherServlet
的分發後,會按順序經過一系列的Interceptor
並執行其中的預處理方法,在請求返回時同樣會執行其中的後處理方法。
在DispatcherServlet
和Controller
之間哪些豎著的彩色細條,是攔截請求進行額外處理的地方,所以命名為攔截器(Interceptor)。
HandlerInterceptor介面
Spring MVC中攔截器是實現了HandlerInterceptor
介面的Bean:
public interface HandlerInterceptor {
boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception;
void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception;
void afterCompletion(HttpServletRequest request,
HttpServletResponse response,
Object handler, Exception ex) throws Exception;
}
preHandle()
:預處理回撥方法,若方法返回值為true
,請求繼續(呼叫下一個攔截器或處理器方法);若方法返回值為false
,請求處理流程中斷,不會繼續呼叫其他的攔截器或處理器方法,此時需要通過response
產生響應;postHandle()
:後處理回撥方法,實現處理器的後處理(但在渲染檢視之前),此時可以通過ModelAndView
對模型資料進行處理或對檢視進行處理afterCompletion()
:整個請求處理完畢回撥方法,即在檢視渲染完畢時呼叫
HandlerInterceptor
有三個方法需要實現,但大部分時候可能只需要實現其中的一個方法,HandlerInterceptorAdapter
是一個實現了HandlerInterceptor
的抽象類,它的三個實現方法都為空實現(或者返回true
),繼承該抽象類後可以僅僅實現其中的一個方法:
public class Interceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
// 在controller方法呼叫前列印資訊
System.out.println("This is interceptor.");
// 返回true,將強求繼續傳遞(傳遞到下一個攔截器,沒有其它攔截器了,則傳遞給Controller)
return true;
}
}
配置Interceptor
定義HandlerInterceptor
後,需要建立WebMvcConfigurerAdapter
在MVC配置中將它們應用於特定的URL中。一般一個攔截器都是攔截特定的某一部分請求,這些請求通過URL模型來指定。
下面是一個配置的例子:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LocaleInterceptor());
registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");
registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*");
}
}
@ModelAttribute
方法使用@ModelAttribute標註
@ModelAttribute
標註可被應用在方法或方法引數上。
標註在方法上的@ModelAttribute
說明方法是用於新增一個或多個屬性到model上。這樣的方法能接受與@RequestMapping
標註相同的引數型別,只不過不能直接被對映到具體的請求上。
在同一個控制器中,標註了@ModelAttribute
的方法實際上會在@RequestMapping
方法之前被呼叫。
以下是示例:
// Add one attribute
// The return value of the method is added to the model under the name "account"
// You can customize the name via @ModelAttribute("myAccount")
@ModelAttribute
public Account addAccount(@RequestParam String number) {
return accountManager.findAccount(number);
}
// Add multiple attributes
@ModelAttribute
public void populateModel(@RequestParam String number, Model model) {
model.addAttribute(accountManager.findAccount(number));
// add more ...
}
@ModelAttribute
方法通常被用來填充一些公共需要的屬性或資料,比如一個下拉列表所預設的幾種狀態,或者寵物的幾種型別,或者去取得一個HTML表單渲染所需要的命令物件,比如Account
等。
@ModelAttribute
標註方法有兩種風格:
- 在第一種寫法中,方法通過返回值的方式預設地將新增一個屬性;
- 在第二種寫法中,方法接收一個
Model
物件,然後可以向其中新增任意數量的屬性。
可以在根據需要,在兩種風格中選擇合適的一種。
一個控制器可以擁有多個@ModelAttribute
方法。同個控制器內的所有這些方法,都會在@RequestMapping
方法之前被呼叫。
@ModelAttribute
方法也可以定義在@ControllerAdvice
標註的類中,並且這些@ModelAttribute
可以同時對許多控制器生效。
屬性名沒有被顯式指定的時候又當如何呢?在這種情況下,框架將根據屬性的型別給予一個預設名稱。舉個例子,若方法返回一個
Account
型別的物件,則預設的屬性名為"account"。可以通過設定@ModelAttribute
標註的值來改變預設值。當向Model
中直接新增屬性時,請使用合適的過載方法addAttribute(..)
-即帶或不帶屬性名的方法。
@ModelAttribute
標註也可以被用在@RequestMapping
方法上。這種情況下,@RequestMapping
方法的返回值將會被解釋為model的一個屬性,而非一個檢視名,此時檢視名將以檢視命名約定來方式來確定。
方法引數使用@ModelAttribute標註
@ModelAttribute
標註既可以被用在方法上,也可以被用在方法引數上。
標註在方法引數上的@ModelAttribute
說明了該方法引數的值將由model中取得。如果model中找不到,那麼該引數會先被例項化,然後被新增到model中。在model中存在以後,請求中所有名稱匹配的引數都會填充到該引數中。
這在Spring MVC中被稱為資料繫結,一個非常有用的特性,我們不用每次都手動從表格資料中轉換這些欄位資料。
@RequestMapping(path = "/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute Pet pet) { }
以上面的程式碼為例,這個Pet型別的例項可能來自哪裡呢?有幾種可能:
- 它可能因為
@SessionAttributes
標註的使用已經存在於model中 - 它可能因為在同個控制器中使用了
@ModelAttribute
方法已經存在於model中——正如上一小節所敘述的 - 它可能是由URI模板變數和型別轉換中取得的(下面會詳細講解)
- 它可能是呼叫了自身的預設構造器被例項化出來的
@ModelAttribute
方法常用於從資料庫中取一個屬性值,該值可能通過@SessionAttributes
標註在請求中間傳遞。在一些情況下,使用URI模板變數和型別轉換的方式來取得一個屬性是更方便的方式。這裡有個例子:
@RequestMapping(path = "/accounts/{account}", method = RequestMethod.PUT)
public String save(@ModelAttribute("account") Account account) {
}
這個例子中,model屬性的名稱("account")與URI模板變數的名稱相匹配。如果配置了一個可以將String
型別的賬戶值轉換成Account
型別例項的轉換器Converter<String,
Account>
,那麼上面這段程式碼就可以工作的很好,而不需要再額外寫一個@ModelAttribute
方法。
下一步就是資料的繫結。WebDataBinder
類能將請求引數——包括字串的查詢引數和表單欄位等——通過名稱匹配到model的屬性上。成功匹配的欄位在需要的時候會進行一次型別轉換(從String型別到目標欄位的型別),然後被填充到model對應的屬性中。
進行了資料繫結後,則可能會出現一些錯誤,比如沒有提供必須的欄位、型別轉換過程的錯誤等。若想檢查這些錯誤,可以在標註了@ModelAttribute
的引數緊跟著宣告一個BindingResult
引數:
@RequestMapping(path = "/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result) {
if (result.hasErrors()) {
return "petForm";
}
// ...
}
拿到BindingResult
引數後,可以檢查是否有錯誤,可以通過Spring的<errors>
表單標籤來在同一個表單上顯示錯誤資訊。
BindingResult
被用於記錄資料繫結過程的錯誤,因此除了資料繫結外,還可以把該物件傳給自己定製的驗證器來呼叫驗證。這使得資料繫結過程和驗證過程出現的錯誤可以被蒐集到一起,然後一併返回給使用者:
相關推薦
Spring MVC快速入門教程
必看!!!
這篇文章講的很好很實用,應對Spring MVC基礎知識足夠了
文章轉載自:https://www.tianmaying.com/tutorial/spring-mvc-quickstart
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Spring MVC快速入門
今天給大家介紹一下Spring MVC,讓我們學習一下如何利用Spring MVC快速的搭建一個簡單的web應用。
參考程式碼請戳右上角,下載下來後可以在Eclipse或者IntelliJ中匯入為一個Maven專案。
環境準備
一個稱手的文字編輯器(例如Vim、Em
spring IOC快速入門,屬性註入,註解開發
復雜 void erl main http val rri prop turn 我們使用spring框架也會使用到配置文件,我們需要在src下創建一個關於spring的配置文件,一般情況名稱叫applicationContext.xml
基本約束:
<!DOCT
【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6)
red 數據庫結構 varchar model 菜單 錯誤提示 edi 還需 問題 目錄
【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6)
【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6)
【第三篇】ASP.NET MVC快速入
【第三篇】ASP.NET MVC快速入門之安全策略(MVC5+EF6)
對象 code word 單身 script ticket bsp 金額 class 【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6)
【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6)
【第三篇】ASP.NET MVC快速入門之
Spring Boot 快速入門
支持 map dem ext hub 微服務 tools eset 核心 什麽是spring boot
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員
Spring MVC學習入門筆記
分享圖片 快捷 png epo 為什麽 學習 -c ava 報錯 使用Spring步驟
添加依賴
創建xml文件
配置(需要被管理的類)bean
實例化上下文類
GetBean對象
使用idea新建一個maven項目,在pom.xml中添加依賴:
<depe
Spring Boot快速入門(五):使用MyBatis(註解形式)進行數據庫操作
訪問 ins name ont clas assert xxx main apach 原文地址:https://lierabbit.cn/articles/7
添加依賴
新建項目選擇web,MyBatis,MySQL三個依賴
對於已存在的項目可以在bulid.gradle
Spring Boot快速入門(六):thymeleaf
return 之前 err static 默認 示例 圖片資源 css 官網 原文地址:https://lierabbit.cn/articles/8
靜態資源
在我們開發Web應用的時候,需要引用大量的js、css、圖片等靜態資源。
Spring Boot的默認位置是re
Spring MVC工程入門
程序員 ati exp ssi resources VC 接下來 文件 internal SpringMVC是一個MVC架構的具體實現,由於其良好的模塊解耦和依賴註入等特性,近年來在各大企業運用非常廣泛。SpringMVC是一個web框架,它常見的配置是采用xml文件配置,
Spring Boot快速入門 (一)
environ UC .get 實體 MF proc this random rop 1、IDE工具的安裝和使用
1.1、下載IDE
Spring Tool Suite
Eclipse
1.2、介紹
maven是學習Spring Boot必備之一
Spring
【第四篇】ASP.NET MVC快速入門之完整示例(MVC5+EF6)
redirect name php sql語句 rop 方法 輸入框 一次 編輯 目錄
【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6)
【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6)
【第三篇】ASP.NET MVC快速入門
【番外篇】ASP.NET MVC快速入門之免費jQuery控件庫(MVC5+EF6)
south ade 批量刪除 HP 存儲 重新 mode eve 穩定 目錄
【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6)
【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6)
【第三篇】ASP.NET MVC快速入門之安全策略
【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6)
c項目 教程 建數據庫 因此 F5 ctr 文件頭部 lec 跨站請求偽造 目錄
【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6)
【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6)
【第三篇】ASP.NET MVC快速入門之安全
筆記61 Spring Boot快速入門(一)
user demo model 前端 req oot 項目 htm 顯示 IDEA+Spring Boot快速搭建
一、IDEA創建項目
略
項目創建成功後在resources包下,屬性文件application.properties中,把數據庫連接屬性加上,同時可以設置服
筆記67 Spring Boot快速入門(七)
判斷瀏覽器 業務 src tar rate sort col font list SpringBoot+Restful+JSON
一、Restful風格
在Web開發的過程中,method常用的值是get和post。可事實上,method值還可以是put和delete等
Spring Boot快速入門
static 創建 mcr 快速 stat space 沒有 existing -i 簡介
在您第1次接觸和學習Spring框架的時候,是否因為其繁雜的配置而退卻了?在你第n次使用Spring框架的時候,是否覺得一堆反復黏貼的配置有一些厭煩?那麽您就不妨來試試使用Sprin
Spring Boot快速入門實戰
一 新建pom檔案
1 程式碼
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
&l
Spring MVC HelloWorld入門及執行機制 (一)
介紹
SpringMVC是一款Web MVC框架。 它跟Struts框架類似,是目前主流的Web MVC框架之一。
文章通過例項來介紹SpringMVC的入門知識。
目錄
例項
maven依賴springmvc jar:
<dependency> <gr
Spring Boot 快速入門示例
原文地址:Spring Boot 快速入門示例
越來越多的公司選擇使用 Spring Boot 來開發系統,它到底有什麼優點?為什麼越來越受歡迎?
Spring Boot 簡介
Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spri