開發(fā)Web應(yīng)用
展現(xiàn)信息
-
MVC
模型-
Controller
:獲取和處理數(shù)據(jù) -
View
:將數(shù)據(jù)渲染到HTML
中并在瀏覽器中展現(xiàn) Model
-
- 構(gòu)建領(lǐng)域類
- 應(yīng)用的領(lǐng)域指的是它要解決的主題范圍
-
Lombok
庫-
lombok
項(xiàng)目的產(chǎn)生就是為了省去我們手動(dòng)創(chuàng)建getter
和setter
方法等等一些基本組件代碼的麻煩晦攒,它能夠在我們編譯源碼的時(shí)候自動(dòng)幫我們生成getter
和setter
方法 - 常用注解
-
@Setter
注解在類或字段,注解在類時(shí)為所有字段生成setter
方法,注解在字段上時(shí)只為該字段生成setter
方法蘑拯。 -
@Getter
使用方法同上乙濒,區(qū)別在于生成的是getter
方法嘱腥。 -
@ToString
注解在類殿雪,添加toString
方法钧栖。 -
@EqualsAndHashCode
注解在類嘿悬,生成hashCode
和equals
方法实柠。 -
@NoArgsConstructor
注解在類,生成無參的構(gòu)造方法善涨。 -
@RequiredArgsConstructor
注解在類窒盐,為類中需要特殊處理的字段生成構(gòu)造方法,比如final
和被@NonNull
注解的字段钢拧。 -
@AllArgsConstructor
注解在類蟹漓,生成包含類中所有字段的構(gòu)造方法。 -
@Data
注解在類源内,為類的所有字段注解@ToString
葡粒、@EqualsAndHashCode
、@Getter
的便捷方法膜钓,同時(shí)為所有非final字段
注解@Setter
嗽交。
-
- 使用
-
依賴安裝
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
IDEA插件的安裝(搜索
Lombok plugin
),重啟IDEA設(shè)置中編譯器欄下啟用
annotation processors
-
-
@Data
可以很好地處理字段的泛型參數(shù)颂斜。- 為了在為具有泛型的類構(gòu)造對(duì)象時(shí)減少樣板夫壁,可以使用
staticConstructor
參數(shù)來生成私有構(gòu)造函數(shù),以及返回新實(shí)例的靜態(tài)方法沃疮。 - 通過這樣聲明:
@Data(staticConstructor =“of”)class Foo {private T x;}
- 可以通過寫入來創(chuàng)建
Foo
的新實(shí)例:Foo.of(5);
而不必寫:new Foo(5);
- 為了在為具有泛型的類構(gòu)造對(duì)象時(shí)減少樣板夫壁,可以使用
-
- 創(chuàng)建控制器類(
Controller
)-
@Slf4j
:Lombok
提供的注解在類中自動(dòng)生成一個(gè)
SLF4J(Simple Logging Facade for Java)Logger
-
等同于
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(YourController.class);
@Controller
:將類識(shí)別為控制器盒让,并且將其作為組件掃描的候選者-
@RequestMapping
:指定Controller處理的請(qǐng)求類型-
Spring MVC
的請(qǐng)求映射注解注解 描述 @RequestMapping
通用的請(qǐng)求處理 @GetMapping
處理 HTTP GET
請(qǐng)求@PostMapping
處理 HTTP POST
請(qǐng)求@PutMapping
處理 HTTP PUT
請(qǐng)求@DeleteMapping
處理 HTTP DELETE
請(qǐng)求@PatchMapping
處理 HTTP PATCH
請(qǐng)求
-
Model
:負(fù)責(zé)在控制器和展現(xiàn)數(shù)據(jù)的視圖之間傳遞數(shù)據(jù)。實(shí)際上司蔬,Model
屬性中的數(shù)據(jù)將會(huì)復(fù)制到Servlet Response屬性
中
-
- 設(shè)計(jì)視圖
- 常用視圖模版
JavaServer Pages(JSP)
-
Thymeleaf
- 增加一些額外元素屬性的HTML糯彬,這些屬性能夠指導(dǎo)模版如何渲染request數(shù)據(jù)
-
th:text
:執(zhí)行替換過程,將${}中的某個(gè)請(qǐng)求屬性替換到指定位置 -
th:each
:迭代一個(gè)元素集合葱她,為集合中的每個(gè)條目渲染HTML th:field
th:errors
th:if
FreeMarker
Mustache
Groovy
- 視圖庫一般與特定的
Web
框架解耦- 無法感知
Spring
模型的抽象撩扒,因此無法與控制器放到Model
中的數(shù)據(jù)協(xié)同工作 - 它們可以與
Servlet
的request屬性
協(xié)作- 在
Spring
將請(qǐng)求轉(zhuǎn)移到視圖之前,他會(huì)將模型數(shù)據(jù)復(fù)制到request屬性
中,這樣視圖模版就能訪問到它們了
- 在
- 無法感知
- 常用視圖模版
- 校驗(yàn)表單輸入
在處理代碼中加入檢驗(yàn)規(guī)則(例如
if/then代碼塊
)-
Spring
支持Java的Bean校驗(yàn)API(Bean Validation API
搓谆,也稱為JSR-303
)- 更容易地聲明檢驗(yàn)規(guī)則炒辉,不必在應(yīng)用程序代碼中顯示編寫聲明邏輯
-
Validation API
以及Validation API的Hibernate實(shí)現(xiàn)
驗(yàn)證注解 驗(yàn)證的數(shù)據(jù)類型 說明 @AssertFalse
Boolean
,boolean
驗(yàn)證注解的元素值是 false
@AssertTrue
Boolean
,boolean
驗(yàn)證注解的元素值是 true
@NotNull
任意類型 驗(yàn)證注解的元素值不是 null
@Null
任意類型 驗(yàn)證注解的元素值是 null
@Min(value=值)
BigDecimal
,BigInteger
,
byte
,short
,int
,long
泉手,
等任何Number
或CharSequence
(存儲(chǔ)的是數(shù)字)子類型驗(yàn)證注解的元素值大于等于 @Min
指定的value
值@Max(value=值)
和 @Min
要求一樣驗(yàn)證注解的元素值小于等于 @Max
指定的value
值@DecimalMin(value=值)
和 @Min
要求一樣驗(yàn)證注解的元素值大于等于 @DecimalMin
指定的value
值@DecimalMax(value=值)
和 @Min
要求一樣驗(yàn)證注解的元素值小于等于 @DecimalMax
指定的value
值@Digits(integer=
整數(shù)位數(shù), fraction=
小數(shù)位數(shù))
和 @Min
要求一樣驗(yàn)證注解的元素值的整數(shù)位數(shù)和小數(shù)位數(shù)上限 @Size(min=
下限,max=上限)
字符串黔寇、 Collection
、Map
斩萌、數(shù)組等驗(yàn)證注解的元素值的在 min
和max
(包含)指定區(qū)間之內(nèi)缝裤,如字符長度、集合大小@Past
java.util.Date
,java.util.Calendar;
Joda Time
類庫的日期類型驗(yàn)證注解的元素值(日期類型)比當(dāng)前時(shí)間早 @Future
與 @Past
要求一樣驗(yàn)證注解的元素值(日期類型)比當(dāng)前時(shí)間晚 @NotBlank
CharSequence
子類型驗(yàn)證注解的元素值不為空(不為 null
颊郎、去除首位空格后長度為0)憋飞,不同于@NotEmpty
,@NotBlank
只應(yīng)用于字符串且在比較時(shí)會(huì)去除字符串的首位空格@Length(min=
下限, max=上限)
CharSequence
子類型驗(yàn)證注解的元素值長度在 min
和max
區(qū)間內(nèi)@NotEmpty
CharSequence
子類型姆吭、Collection
榛做、Map
、
數(shù)組驗(yàn)證注解的元素值不為 null
且不為空(字符串長度不為0内狸、集合大小不為0)@Range(min=
最小值, max=
最大值)
BigDecimal
,BigInteger
,CharSequence
,
byte
,short
,int
,long
等
原子類型和包裝類型驗(yàn)證注解的元素值在最小值和最大值之間 @Email(regexp=
正則表達(dá)式,flag=
標(biāo)志的模式)
CharSequence
子類型
(如String
)驗(yàn)證注解的元素值是 Email
检眯,也可以通過regexp
和flag
指定自定義的email
格式@Pattern(regexp=
正則表達(dá)式,flag=
標(biāo)志的模式)
String
,任何CharSequence
的子類型驗(yàn)證注解的元素值與指定的正則表達(dá)式匹配 @Valid
任何非原子類型 指定遞歸驗(yàn)證關(guān)聯(lián)的對(duì)象如用戶對(duì)象中有個(gè)地址對(duì)象屬性昆淡,如果想在驗(yàn)證用戶對(duì)象時(shí)一起驗(yàn)證地址對(duì)象的話锰瘸,在地址對(duì)象上加 @Valid
注解即可級(jí)聯(lián)驗(yàn)證
使用視圖控制器
- 只將請(qǐng)求轉(zhuǎn)發(fā)到視圖而不做其他事情的控制器
- 實(shí)現(xiàn)
WebMvcConfigurer接口
- 提供了所有方法的默認(rèn)實(shí)現(xiàn),只需要覆蓋所需要的方法即可
-
addViewControllers()
:使用它注冊一個(gè)或多個(gè)視圖控制器
選擇視圖模版庫
- 如果使用
JSP
昂灵,需要將應(yīng)用構(gòu)建成WAR文件
并部署到傳統(tǒng)的Servlet容器
中 - 關(guān)閉模版緩存
- 在
application.properties
中添加spring.thymeleaf.cache=false
- 在