日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC的Controller

發(fā)布時(shí)間:2024/4/13 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC的Controller 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(一)編寫控制器。

?

注:如果WEB-INF下存在index.jsp,”/”將會(huì)優(yōu)先訪問index.jsp,所以需要將index.jsp刪除或重命名。

對(duì)應(yīng)的home.jsp

?

游覽器訪問:

?

(二)向視圖傳遞模型

web應(yīng)用中,我們常需要把數(shù)據(jù)渲染到視圖中,下面就看看如何用SpringMVC實(shí)現(xiàn)查詢用戶列表的功能。

1.首先定義一個(gè)用戶bean

?

2.定義一個(gè)獲取用戶列表的service,這里我直接創(chuàng)建一個(gè)List

?

3.控制器的編寫。

在新的方法里,新加入了一個(gè)Model形參(其實(shí)就是Map,甚至可以把Model換成Map),這樣,users就可以將產(chǎn)生的信息傳遞到視圖。

?

值得一提的是,在向Model添加數(shù)據(jù)時(shí),如果不寫key,模型的Key將會(huì)根據(jù)類型推斷出(本例中,List<User>就是userList)。

不僅如此,我們甚至可以不使用Model,就像下面這樣

?

因?yàn)闆]有指定請(qǐng)求路徑,默認(rèn)會(huì)是方法名“/allUser”。當(dāng)處理器方法返回對(duì)象或集合時(shí),這個(gè)值會(huì)放到模型中,模型的key會(huì)根據(jù)類型推斷得出。而視圖的名稱會(huì)根據(jù)請(qǐng)求的路徑推斷得出“allUser”。

4.最后是視圖的渲染

視圖使用了EL表達(dá)式和jstl,如果是Servlet3.0話,EL默認(rèn)是關(guān)閉的,需要加上<%@ page isELIgnored="false" %>來開啟。

?

5.測(cè)試

?

三、對(duì)請(qǐng)求的處理

Web中,客戶端可以通過表單、url等方式,向服務(wù)端提交數(shù)據(jù)或查詢數(shù)據(jù)。那么SpringMVC是如何對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行接受的呢?

(一)請(qǐng)求處理

SpringMVC中,對(duì)于表單數(shù)據(jù)、Url參數(shù)都可以通過@RequestParam(“name”)進(jìn)行接收。在下例中,需要在查詢用戶時(shí)進(jìn)行分頁,這時(shí)就需要傳遞兩個(gè)參數(shù):

max 從第幾個(gè)用戶開始

count 一次需要查詢的用戶數(shù)

?

對(duì)于這個(gè)兩個(gè)值為空的情況,還需要設(shè)置一個(gè)默認(rèn)的值。

?

?

(二)路徑占位符

SpringMVC提供了路徑占位符的功能,這樣就可以使Url變Restful

?

這樣,當(dāng)我們Url為“users/13”時(shí),SpringMVC就會(huì)自動(dòng)截取13并賦值給userId

對(duì)了,如果方法的參數(shù)名與占位符的名稱一致的話,我們還可以去掉@PathVariableValue屬性,就像下面這樣。

四、對(duì)表單的處理

(一)表單數(shù)據(jù)處理

在上面的基礎(chǔ)上,我們添加一個(gè)注冊(cè)功能,以此來說明SpringMvc對(duì)表單的處理。

  • Controller中添加訪問注冊(cè)頁面的方法
  • ?

      2.創(chuàng)建一個(gè)注冊(cè)頁面register.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>用戶注冊(cè)</title> </head> <body><h1>用戶注冊(cè)</h1><form method="post">用戶名:<input type="text" name="name"/><br/>密碼:<input type="password" name="password"><br/><input type="submit" value="提交"></form> </body> </html> View Code

    這里的form標(biāo)簽沒有設(shè)置action屬性。在這種情況下,表單會(huì)提交到與展現(xiàn)這個(gè)頁面相同的URL路徑上,如本例的“/register”上。

      3.Controller添加接受表單數(shù)據(jù)的方法

    ?

    ?

    此處有3點(diǎn)需要注意。

    (1)因?yàn)楸韱翁峤粸镻ost,所以需要在對(duì)應(yīng)的controller也要設(shè)置接受post請(qǐng)求。

    (2)我們?cè)诜椒ㄖ蟹帕艘粋€(gè)User對(duì)象,這個(gè)對(duì)象有idnamepassword等屬性,這些屬性會(huì)被請(qǐng)求中同名的參數(shù)填充。

    (3)當(dāng)在返回的值前添加redirect”前綴時(shí),InternalResourceViewResolver視圖解析器會(huì)將值解析成重定向規(guī)則,而不是視圖的名稱。

    (二)校驗(yàn)表單

    如果用戶在提交表單時(shí)忘記填寫name或者password,我們目前的程序依然會(huì)正常執(zhí)行,這顯然是不合理的,

    Spring3.0開始,SpringMVC提供了對(duì)Java校驗(yàn)API的支持,我們可以根據(jù)注解方便的進(jìn)行表單校驗(yàn)。

    下表列出了這些注解:

    @AssertFalse

    所注解的元素必須為Boolean類型,并且為false

    @AssertTrue

    所注解的元素必須為Boolean類型,并且為true

    @DecimalMax

    所注解的元素必須為數(shù)字,并且值要小于等于給定的BigDecimalString

    @DecimalMin

    所注解的元素必須為數(shù)字,并且值要大于等于給定的BigDecimalString

    @Digits

    所注解的元素必須為數(shù)字,并且值必須為指定位數(shù)

    @Future

    所注解的元素必須為一個(gè)將來的日期

    @Max

    所注解的元素必須為數(shù)字,并且值要小于等于給定的

    @Min

    所注解的元素必須為數(shù)字,并且值要大于等于給定的

    @NotNull

    所注解的元素必須不為null

    @Null

    所注解的元素必須為null

    @Past

    所注解的元素必須為一個(gè)過去的日期

    @Pattern

    所注解的元素必須匹配給定的正則表達(dá)式

    @Size

    所注解的元素必須為String、集合或數(shù)組,且長度要符合給定的范圍

    下面我們就把這些規(guī)則應(yīng)用到我們的User實(shí)體中

    首先,需要添加Java校驗(yàn)APi的依賴

    <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version> </dependency>

    然后在需要驗(yàn)證的實(shí)體類添加對(duì)應(yīng)的校驗(yàn)注解:

    ?

    ?

    我們需要在Controller方法啟用校驗(yàn)功能它才會(huì)生效,如下所示

    ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/chenkeyu/p/7718250.html

    總結(jié)

    以上是生活随笔為你收集整理的SpringMVC的Controller的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。