文章目錄
- 一,SpringMVC
- --1,概述
- --2,原理
- --3,創建Module
- --4,入門案例
- 二,SpringMVC的回應
- --1,概述
- --2,測驗
- 三,SpringMVC決議get請求的引數
- --1,概述
- --2,測驗
- --3,常見問題
一,SpringMVC
–1,概述
框架: 是一個結構,框架提供了很多的類,由框架控制每個類呼叫的程序流程
SSM框架里,第一個S就是指SpringMVC,是一個框架.
是Spring框架的一個后續產品,遵循了MVC的設計模式,保證了程式間的松耦合.
SpringMVC主要作用:1,接受請求(決議請求引數) 2,做出回應
MVC的設計模式:
M是Model模型,用來封裝資料
V是View視圖,用來展示資料
C是Controller控制器,用來控制瀏覽器如何請求,做出資料回應
好處: 提高代碼的復用性 , 松耦合
–2,原理
1,前端控制器DispatcherServlet:
當瀏覽器發送請求成功后,充當這調度者的角色,負責調度每個組件.
2,處理器映射器HandlerMapping:
根據請求的URL路徑,找到能處理請求的類名和方法名
url: http://localhost:8080/hi , 找到Hello類里的hi()
3,處理器配接器HandlerAdapter:
正式開始處理業務,并把回傳結果的結果交給DispatcherServlet
4,視圖決議器ViewResolver:
找到正確的,能展示資料的視圖,準備展示資料
5,視圖渲染View:
展示資料
–3,創建Module
選中Project-右鍵-New-Module-選擇Maven-next-輸入Module的名字-next-finish

–4,入門案例
1, 匯入jar包(被Spring Boot整合好了)
2, 準備一個啟動類RunApp,用來啟動服務器
package cn.tedu.mvc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//標記著這是springboot的啟動類
@SpringBootApplication
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);//運行當前類
}
}
3, 準備一個類,補充方法
訪問鏈接: http://localhost:8080/car/get
得到資料:123
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//完成springmvc的角色,接受請求和給出回應
//是MVC設計模式里的C控制器,接受請求和給出回應
@RestController
//標記著這個類是Controller是一個控制器+接受請求
@RequestMapping("car")//規定了url怎么訪問這個類
public class HelloController {
//測驗: http://localhost:8080/car/get
@RequestMapping("get")//規定了url怎么訪問這個方法
public String show(){
return "123";
}
}
4, 測驗
啟動服務器,打開瀏覽器,訪問正確的URL地址

二,SpringMVC的回應
–1,概述
SpringMVC可以接受請求,和做出回應資料,型別可以非常豐富
–2,測驗
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//完成springmvc的角色,接受請求和給出回應
//是MVC設計模式里的C控制器,接受請求和給出回應
@RestController
//標記著這個類是Controller是一個控制器+接受請求+回應JSON串
@RequestMapping("car")//規定了url怎么訪問這個類
public class HelloController {
//測驗: http://localhost:8080/car/get
@RequestMapping("get")//規定了url怎么訪問這個方法
public String show(){
return "123";
}
//測驗: http://localhost:8080/car/abc
@RequestMapping("abc")
public int show2(){
return 100;
}
// SpringMVC框架除了能回傳字串,整數以外,還能回傳物件資訊
//測驗: http://localhost:8080/car/get2
@RequestMapping("get2")
public Car get(){
Car c = new Car();
//給客戶端準備資料
c.setId(718);
c.setName("保時捷");
c.setType("Cayman T");
c.setColor("紅色");
c.setPrice(641000);
return c; //把物件資訊 變成JSON字串在瀏覽器展示
}
}
三,SpringMVC決議get請求的引數
–1,概述
請求方式8種,常見的就是get post
restful風格的資料,用來簡化了get的寫法
http://localhost:8080/car/insert?id=1&name=張三&age=18
http://localhost:8080/car/insert/1/張三/18
–2,測驗
package cn.tedu.mvc;
import org.junit.Test;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//Springmvc決議get的請求引數
// http://localhost:8080/car/insert?id=1&name=張三&age=18
@RestController//接受請求做出回應
@RequestMapping("get")//規定了瀏覽器的訪問方式
public class GetController{
//測驗 http://localhost:8080/get/param4?id=100&name=BMW&type=X6&color=red&price=9.9
@RequestMapping("param4")
//public String param4(int id,String name,String type,String color,double price){
public Car param4(Car c){//直接用物件接受引數,框架會自動封裝屬性的值
return c;
}
//測驗 http://localhost:8080/get/param3?id=100&name=張三&price=9.9
@RequestMapping("param3")
public String param3(int id,String name,double price){
return id+name+price;
}
//測驗 http://localhost:8080/get/param2?id=100&name=張三
@RequestMapping("param2")
public void param2(int id,String name){
System.out.println(id);
System.out.println(name);
}
//測驗 http://localhost:8080/get/param?id=100
@RequestMapping("param")
public String param(int id){
return "您的請求引數里id="+id ;
}
@Test //單元測驗方法
public void get1(){
String url ="http://localhost:8080/car/insert?id=1&name=張三&age=18";
String[] a = url.split("\\?")[1].split("&");
for(String s : a){
String data = s.split("=")[1];
System.out.println(data);
}
}
}
–3,常見問題
404: Not Found,沒找到你想訪問的資源
400: 引數型別不匹配
Controller類里的方法: public void add(int a){ }
URL的方法: http://localhost:8080/add?a=jack
500: 服務器內部出錯,IDEA已經拋出例外了
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/293405.html
標籤:其他
