成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringMVC學(xué)習(xí)---第二課-創(chuàng)新互聯(lián)

SpringMVC學(xué)習(xí)---第二課
  • SpirngMVC注解式開(kāi)發(fā)
    • 注解
    • 對(duì)請(qǐng)求提交方式的定義
    • 五種數(shù)據(jù)的提交方式
    • 請(qǐng)求參數(shù)中文亂碼問(wèn)題的解決
    • 處理器方法的返回值
    • SpringMVC的四種跳轉(zhuǎn)方式
    • SpringMVC支持的默認(rèn)參數(shù)類型
  • SpringMVC的攔截器
    • 攔截器說(shuō)明
    • 攔截器的應(yīng)用場(chǎng)景
    • 攔截器執(zhí)行原理

在鎮(zhèn)遠(yuǎn)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,鎮(zhèn)遠(yuǎn)網(wǎng)站建設(shè)費(fèi)用合理。SpirngMVC注解式開(kāi)發(fā) 注解

通過(guò)***@RequestMapping*** 注解可以定義處理器對(duì)于請(qǐng)求的映射規(guī)則。該注解可以注解在方法上,也可以注解在類上,但意義是不同的。value 屬性值常以“/”開(kāi)始。@RequestMapping 的 value 屬性用于定義所匹配請(qǐng)求的 URI。

當(dāng)@RequestMapping注解在類上時(shí),說(shuō)明是有著相同的公共請(qǐng)求路徑

當(dāng)@RequestMapping注解出現(xiàn)在方法上時(shí),說(shuō)明是對(duì)每個(gè)方法請(qǐng)求的路徑

以下代碼發(fā)送的請(qǐng)求分別是:/項(xiàng)目名/zar/hello 和 /項(xiàng)目名/zar/two

@Controller //這個(gè)是聲明類是Controller,將類加入springmvc管理
@RequestMapping("/zar")  //聲明相同的公共路徑
public class HelloSpringMvc {//相當(dāng)于一個(gè)控制器處理的方法
@RequestMapping("/hello")
public String one() {return "main";
}
@RequestMapping("/two")
public String two() {return "main";
}

一個(gè)@Controller 所注解的類中,可以定義多個(gè)處理器方法。當(dāng)然,不同的處理器方法所匹配的 URI 是不同的。

對(duì)請(qǐng)求提交方式的定義

對(duì)于@RequestMapping,其有一個(gè)屬性 method,用于對(duì)被注解方法所處理請(qǐng)求的提交

方式進(jìn)行限制,即只有滿足該 method 屬性指定的提交方式的請(qǐng)求,才會(huì)執(zhí)行該被注解方法。

Method 屬性的取值為 RequestMethod 枚舉常量。
常用的為 RequestMethod.GET 與RequestMethod.POST,分別表示提交方式的匹配規(guī)則為 GET 與 POST 提交。

@RequestMapping(value = "/hello",method = RequestMethod.POST)
public String one() {return "main";
}

瀏覽器的常用請(qǐng)求方式有
在這里插入圖片描述

只要指定了處理器方法匹配的請(qǐng)求提交方式為 POST,則相當(dāng)于指定了請(qǐng)求發(fā)送的方式:要么使用表單請(qǐng)求,要么使用 AJAX 請(qǐng)求。其它請(qǐng)求方式被禁用。

若不指定 method 屬性,則無(wú)論是 GET 還是 POST 提交方式,均可匹配。即對(duì)于請(qǐng)求的提交方式無(wú)要求。

五種數(shù)據(jù)的提交方式
  1. 單個(gè)數(shù)據(jù)注入

在方法中聲明一個(gè)和表單提交的參數(shù)名稱相同的參數(shù),由框架按照名稱直接注入。

在這里插入圖片描述

  1. 對(duì)象封裝注入

在方法中聲明一個(gè)自定義的實(shí)體類參數(shù),框架調(diào)用實(shí)體類中相應(yīng)的setter方法注入屬性值,只要保證實(shí)體類中成員變量的名稱與提交請(qǐng)求的name屬性值一致即可。

在這里插入圖片描述

  1. 動(dòng)態(tài)占位符提交(只限于超鏈接)

使用框架提供的一個(gè)注解@PathVariable,將請(qǐng)求url中的值作為參數(shù)進(jìn)行提取,只能是超鏈接。

在這里插入圖片描述

  1. 請(qǐng)求參數(shù)名稱與形參名稱不一致

請(qǐng)求與形參中的名字不對(duì)應(yīng),可以使用
@RequestParam(value=“name1”,required=true)String namea來(lái)進(jìn)行參數(shù)名稱綁定。
在這里插入圖片描述

  1. 使用HttpRequestServlet對(duì)象提取

在方法參數(shù)中聲明一個(gè)request對(duì)象,使用request的getParameter()獲取表單提交的數(shù)據(jù),這樣得到的數(shù)據(jù)還要手工進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。

public String five(HttpServletRequest request){int age=new Integer(request.getParameter("stuage"));
String name=request.getParameter("stuname");
System.out.println(age+"*********"+name);
    return "main";
}
請(qǐng)求參數(shù)中文亂碼問(wèn)題的解決

對(duì)于前面所接收的請(qǐng)求參數(shù),若含有中文,則會(huì)出現(xiàn)中文亂碼問(wèn)題。

Spring 對(duì)于請(qǐng)求參數(shù)中的中文亂碼問(wèn)題,給出了專門的字符集過(guò)濾器: CharacterEncodingFilter 類。

在 web.xml 中注冊(cè)字符集過(guò)濾器,即可解決 Spring 的請(qǐng)求參數(shù)的中文亂碼問(wèn)題。不過(guò),最好將該過(guò)濾器注冊(cè)在其它過(guò)濾器之前。因?yàn)檫^(guò)濾器的執(zhí)行是按照其注冊(cè)順序進(jìn)行的。

encodeorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceRequestEncodingtrueforceResponseEncodingtrueencode/*
處理器方法的返回值
  1. 第一種:ModelAndView

若處理器方法處理完后,需要跳轉(zhuǎn)到其它資源,且又要在跳轉(zhuǎn)的資源間傳遞數(shù)據(jù),此時(shí)處理器方法返回 ModelAndView 比較好。
若該處理器方法只是進(jìn)行跳轉(zhuǎn)而不傳遞數(shù)據(jù),或只是傳遞數(shù)據(jù)而并不向任何資源跳轉(zhuǎn)(如對(duì)頁(yè)面的 Ajax 異步響應(yīng)),則不需要返回這個(gè)

  1. 第二種:String

處理器方法返回的字符串可以指定邏輯視圖名,通過(guò)視圖解析器解析可以將其轉(zhuǎn)換為物理視圖地址。

配置視圖解析器
在這里插入圖片描述

  1. 第三種:無(wú)返回值void

對(duì)于處理器方法返回 void 的應(yīng)用場(chǎng)景,應(yīng)用在AJAX 響應(yīng)處理。若處理器對(duì)請(qǐng)求處理后,無(wú)需跳轉(zhuǎn)到其它任何資源,此時(shí)可以讓處理器方法返回 void。

  1. 第四種:返回對(duì)象類型

處理器方法也可以返回 Object 對(duì)象。這個(gè) Object 可以是 Integer,自定義對(duì)象,Map,List 等。但返回的對(duì)象不是作為邏輯視圖出現(xiàn)的,而是作為直接在頁(yè)面顯示的數(shù)據(jù)出現(xiàn)的。返回對(duì)象,需要使用**@ResponseBody 注解**,將轉(zhuǎn)換后的 JSON 數(shù)據(jù)放入到響應(yīng)體中。
Ajax請(qǐng)求多用于Object返回值類型。
由于轉(zhuǎn)換器底層使用了Jackson 轉(zhuǎn)換方式將對(duì)象轉(zhuǎn)換為JSON 數(shù)據(jù),所以需要添加Jackson的相關(guān)依賴。

com.fasterxml.jackson.corejackson-databind2.9.8
SpringMVC的四種跳轉(zhuǎn)方式

默認(rèn)的跳轉(zhuǎn)是請(qǐng)求轉(zhuǎn)發(fā),直接跳轉(zhuǎn)到j(luò)sp頁(yè)面展示

還可以使用框架提供的關(guān)鍵字redirect:,進(jìn)行一個(gè)重定向操作 ,包括重定向頁(yè)面和重定向action,

使用框架提供的關(guān)鍵字forward:,進(jìn)行服務(wù)器內(nèi)部轉(zhuǎn)發(fā)操作,包括轉(zhuǎn)發(fā)頁(yè)面和轉(zhuǎn)發(fā)action。

當(dāng)使用redirect:和forward:關(guān)鍵字時(shí),視圖解析器中前綴后綴的拼接就無(wú)效了。

測(cè)試四種跳轉(zhuǎn)方式,前端代碼

請(qǐng)求轉(zhuǎn)發(fā)頁(yè)面(默認(rèn))
請(qǐng)求轉(zhuǎn)發(fā)action
重定向頁(yè)面
重定向action

測(cè)試四種跳轉(zhuǎn)方式后端代碼

@Controller
public class JumpAction {@RequestMapping("/one")
    public String one(){System.out.println("請(qǐng)求轉(zhuǎn)發(fā)頁(yè)面(默認(rèn))");
        //以前的訪問(wèn)方式        //request.getRequestDispatcher("/admin/main.jsp").forward(request,response);
        //地址欄的變化:  http://localhost:8080/one.action
        //return "main"; //默認(rèn)的訪問(wèn)方式是自動(dòng)拼接前綴和后綴進(jìn)行跳轉(zhuǎn)
        return "forward:/fore/user.jsp";
		//只要使用了forward:就可以屏蔽前綴和后綴的拼接,自己手工構(gòu)建返回的全部路徑+.jsp
    }


    @RequestMapping("/two")
    public String two(){System.out.println("請(qǐng)求轉(zhuǎn)發(fā)action");
        //觀察地址欄的變化:  http://localhost:8080/two.action
        return "forward:/other.action";   
        //不使用forward:,就會(huì)是這樣的路徑  /admin/other.action/.jsp
    }

    @RequestMapping("/three")
    public String three(){System.out.println("重定向頁(yè)面");
        //觀察地址欄的變化  http://localhost:8080/admin/main.jsp
        return "redirect:/admin/main.jsp";
        //只要使用了redirect:就可以屏蔽前綴和后綴的拼接
    }


    @RequestMapping("/four")
    public String four(){System.out.println("重定向action");
        //觀察地址欄的變化  http://localhost:8080/other.action
        return "redirect:/other.action";
        //只要使用了redirect:就可以屏蔽前綴和后綴的拼接
    }
}
SpringMVC支持的默認(rèn)參數(shù)類型

1. HttpServletRequest 對(duì)象
2. HttpServletResponse 對(duì)象
3. HttpSession 對(duì)象
4. Model/ModelMap 對(duì)象 
5. Map對(duì)象

SpringMVC的攔截器 攔截器說(shuō)明

SpringMVC 中的 Interceptor 攔截器,它的主要作用是攔截指定的用戶請(qǐng)求,并進(jìn)行相應(yīng)的預(yù)處理與后處理。
其攔截的時(shí)間點(diǎn)在“處理器映射器根據(jù)用戶提交的請(qǐng)求映射出了所要執(zhí)行的處理器類,并且也找到了要執(zhí)行該處理器類的處理器適配器,在處理器適配器執(zhí)行處理器之前”。
當(dāng)然,在處理器映射器映射出所要執(zhí)行的處理器類時(shí),已經(jīng)將攔截器與處理器組合為了一個(gè)處理器執(zhí)行鏈,并返回給了中央調(diào)度器。

攔截器的應(yīng)用場(chǎng)景
  1. 日志記錄:記錄請(qǐng)求信息的日志
  2. 權(quán)限檢查,如登錄檢查
  3. 性能檢測(cè):檢測(cè)方法的執(zhí)行時(shí)間
攔截器執(zhí)行原理

preHandle():在請(qǐng)求被處理之前進(jìn)行操作

該方法在處理器方法執(zhí)行之前執(zhí)行。其返回值為 boolean,若為 true,則緊接著會(huì)執(zhí)行處理器方法,且會(huì)將 afterCompletion()方法放入到一個(gè)專門的方法棧中等待執(zhí)行。

postHandle():在請(qǐng)求被處理之后,但結(jié)果還沒(méi)有渲染前進(jìn)行操作,可以改變響應(yīng)結(jié)果

該方法在處理器方法執(zhí)行之后執(zhí)行。處理器方法若最終未被執(zhí)行,則該方法不會(huì)執(zhí)行。由于該方法是在處理器方法執(zhí)行完后執(zhí)行,且該方法參數(shù)中包含 ModelAndView,所以該方法可以修改處理器方法的處理結(jié)果數(shù)據(jù),且可以修改跳轉(zhuǎn)方向。

afterCompletion:所有的請(qǐng)求響應(yīng)結(jié)束后執(zhí)行善后工作,清理對(duì)象,關(guān)閉資源

當(dāng)preHandle()方法返回 true 時(shí),會(huì)將該方法放到專門的方法棧中,等到對(duì)請(qǐng)求進(jìn)行響應(yīng)的所有工作完成之后才執(zhí)行該方法。即該方法是在中央調(diào)度器渲染(數(shù)據(jù)填充)了響應(yīng)頁(yè)面之后執(zhí)行的,此時(shí)對(duì) ModelAndView 再操作也對(duì)響應(yīng)無(wú)濟(jì)于事。afterCompletion 最后執(zhí)行的方法,清除資源,例如在 Controller 方法中加入數(shù)據(jù)等。

在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站欄目:SpringMVC學(xué)習(xí)---第二課-創(chuàng)新互聯(lián)
分享鏈接:http://jinyejixie.com/article48/dhodhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站App開(kāi)發(fā)、虛擬主機(jī)、響應(yīng)式網(wǎng)站手機(jī)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
库车县| 竹山县| 武胜县| 太湖县| 深水埗区| 公主岭市| 云龙县| 靖西县| 长治市| 青冈县| 长寿区| 潞西市| 绍兴市| 桑植县| 龙川县| 潜江市| 武汉市| 和龙市| 贵溪市| 绍兴市| 柳河县| 鹿邑县| 长春市| 大兴区| 丹寨县| 修武县| 磐石市| 巍山| 浦北县| 枞阳县| 固原市| 蕲春县| 南皮县| 信宜市| 庄河市| 澄江县| 响水县| 凭祥市| 景宁| 鹿邑县| 临高县|