国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringMVC原理分析 | Controller配置、RestFul風(fēng)格

這篇具有很好參考價(jià)值的文章主要介紹了SpringMVC原理分析 | Controller配置、RestFul風(fēng)格。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

SpringMVC原理分析 | Controller配置、RestFul風(fēng)格

??wei_shuo的個(gè)人主頁(yè)

??wei_shuo的學(xué)習(xí)社區(qū)

??Hello World !


Controller配置

控制器Controller

  • 控制器復(fù)雜提供訪問(wèn)應(yīng)用程序的行為,通常通過(guò)接口定義注釋定義的兩種方法實(shí)現(xiàn)
  • 控制器負(fù)責(zé)解析用戶的請(qǐng)求并將其轉(zhuǎn)換為一個(gè)模型
  • SpringMVC中一個(gè)控制器可以包含多個(gè)方法

實(shí)現(xiàn)Controller接口

Controller是一個(gè)接口,在org.springframework.web.servlet.mvc包下,接口只有一個(gè)方法

//實(shí)現(xiàn)Controller接口的類可以獲得控制器的功能
public interface Controller {
    //處理請(qǐng)求且返回一個(gè)模型與視圖對(duì)象
    @Nullable
    ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;
}

接口方法實(shí)現(xiàn)Controller

  • 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <!--配置DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
  • 配置springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--自動(dòng)掃描包,讓指定包下的注釋生效,由IOC容器統(tǒng)一管理-->
    <context:component-scan base-package="com.wei.controller"/>

    <!--過(guò)濾靜態(tài)資源-->
    <mvc:default-servlet-handler/>

    <!--配置annotation-driven使:處理器映射器 和 處理器適配器 自動(dòng)完成實(shí)例的注入-->
    <mvc:annotation-driven/>

    <!--視圖解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <!--前綴-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后綴-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
  • 編寫(xiě)Controller類(ControllerTest1)
package com.wei.controller;


import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//實(shí)現(xiàn)了Controller類說(shuō)明這就是控制器
public class ControllerTest1 implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //創(chuàng)建模型和視圖對(duì)象
        ModelAndView modelAndView = new ModelAndView();
        封裝數(shù)據(jù),向模型添加屬性msg與值,可以在jsp頁(yè)面取出、渲染
        modelAndView.addObject("msg","ControllerTest1");
        //視圖跳轉(zhuǎn)
        modelAndView.setViewName("test");

        //返回視圖模型對(duì)象
        return modelAndView;
    }
}
  • test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>

缺點(diǎn):一個(gè)控制器只要一個(gè)方法,如果多個(gè)方法需要多個(gè)Controller,使用這種方法比較麻煩

注解方法實(shí)現(xiàn)Controller

@Controller注解的類會(huì)自動(dòng)添加到Spring上下文中,被這個(gè)注解的類,返回String,并且有具體頁(yè)面跳轉(zhuǎn),就會(huì)被視圖解析器解析

@Controller控制器(注入服務(wù))

@Component(把普通pojo實(shí)例化到spring容器中,相當(dāng)于配置文件中的 )

@Service服務(wù)(注入dao)

@Respository(現(xiàn)dao訪問(wèn))

  • Spring可以使用掃描機(jī)制找到應(yīng)用程序中所有基于注解的控制器類,為保證Spring能找到控制器,需要在配置文件中聲明組件掃描
<!--自動(dòng)掃描包,讓指定包下的注釋生效,由IOC容器統(tǒng)一管理-->
<context:component-scan base-package="com.wei.controller"/>
  • 增加一個(gè)ControllerTest類,使用注解實(shí)現(xiàn)
package com.wei.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

//@Controller注解的類會(huì)自動(dòng)添加到Spring上下文中,被這個(gè)注解的類,返回String,并且有具體頁(yè)面跳轉(zhuǎn),就會(huì)被視圖解析器解析
@Controller
public class ControllerTest2 {

    @RequestMapping("/t2")
    public String test1(Model model){

        model.addAttribute("msg","ControllerTest2");

        return "test";	// /WEB-INF/jsp/test.jsp
    }
}

RequestMapping配置

  • @RequestMapping注解用于映射url到控制器或一個(gè)特定的處理程序方法,可用于類或方法上
  • 用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑
  • 訪問(wèn)路徑為:http://localhost:8080/項(xiàng)目名/c3/t1
package com.wei.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/c3")
public class ControllerTest3 {
    @RequestMapping({"/t1"})
    //或者  @RequestMapping({"/c3/t1"})
    public String test1(Model model){
        model.addAttribute("msg","ControllerTest3");
        return "test";
    }
}

RestFul

概念

RestFul是一種網(wǎng)絡(luò)應(yīng)用程序的設(shè)計(jì)風(fēng)格和開(kāi)發(fā)方式,基于HTTP,可以使用XML格式定義或JSON格式定義。RestFul適用于移動(dòng)互聯(lián)網(wǎng)廠商作為業(yè)務(wù)接口的場(chǎng)景,實(shí)現(xiàn)第三方OTT調(diào)用移動(dòng)網(wǎng)絡(luò)資源的功能,動(dòng)作類型為新增、變更、刪除所調(diào)用資源

RestFul就是資源定位及資源操作的風(fēng)格,不是標(biāo)準(zhǔn)也不是協(xié)議,只是一種風(fēng)格,基于RestFul風(fēng)格設(shè)計(jì)的軟件可以更高效、有層次、易于實(shí)現(xiàn)緩存機(jī)制

傳統(tǒng)方式

package com.wei.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

//@Controller注解的類會(huì)自動(dòng)添加到Spring上下文中,被這個(gè)注解的類,返回String,并且有具體頁(yè)面跳轉(zhuǎn),就會(huì)被視圖解析器解析
@Controller
public class RestFulController {

    @RequestMapping("/add")
    public String test1(int a, int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "結(jié)果為:" + result);
        return "test";
    }
}

SpringMVC原理分析 | Controller配置、RestFul風(fēng)格

RestFul方式

@PathVariable:讓方法參數(shù)的值對(duì)應(yīng)綁定到一個(gè)URL模板變量上

package com.wei.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

//@Controller注解的類會(huì)自動(dòng)添加到Spring上下文中,被這個(gè)注解的類,返回String,并且有具體頁(yè)面跳轉(zhuǎn),就會(huì)被視圖解析器解析
@Controller
public class RestFulController {

    @RequestMapping("/add/{a}/")
    public String test1(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "結(jié)果為:" + result);
        return "test";
    }
}

SpringMVC原理分析 | Controller配置、RestFul風(fēng)格

方式一:

@GetMapping("/add/{a}/")
@PostMapping("/add/{a}/")
@PutMapping("/add/{a}/")
@DeleteMapping("/add/{a}/")
@PatchMapping("/add/{a}/")

package com.wei.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

//@Controller注解的類會(huì)自動(dòng)添加到Spring上下文中,被這個(gè)注解的類,返回String,并且有具體頁(yè)面跳轉(zhuǎn),就會(huì)被視圖解析器解析
@Controller
public class RestFulController {


//    @GetMapping("/add/{a}/")
//    @PostMapping("/add/{a}/")
//    @PutMapping("/add/{a}/")
//    @DeleteMapping("/add/{a}/")
//    @PatchMapping("/add/{a}/")

    @GetMapping("/add/{a}/")
    public String test1(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "test1結(jié)果為:" + result);
        return "test";
    }

    @PostMapping("/add/{a}/")
    public String test2(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "test2結(jié)果為:" + result);
        return "test";
    }
}
方式二:
package com.wei.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

//@Controller注解的類會(huì)自動(dòng)添加到Spring上下文中,被這個(gè)注解的類,返回String,并且有具體頁(yè)面跳轉(zhuǎn),就會(huì)被視圖解析器解析
@Controller
public class RestFulController {

    @RequestMapping(value = "/add/{a}/",method = RequestMethod.GET)
    public String test1(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "test1結(jié)果為:" + result);
        return "test";
    }

    @RequestMapping(value = "/add/{a}/",method = RequestMethod.POST)
    public String test2(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "test2結(jié)果為:" + result);
        return "test";
    }
}

?? 結(jié)語(yǔ):創(chuàng)作不易,如果覺(jué)得博主的文章賞心悅目,還請(qǐng)——點(diǎn)贊??收藏??評(píng)論??


SpringMVC原理分析 | Controller配置、RestFul風(fēng)格文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-500707.html

到了這里,關(guān)于SpringMVC原理分析 | Controller配置、RestFul風(fēng)格的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringMVC第八階段:Restful風(fēng)格

    Restful 一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。它主要用于客戶端和服務(wù)器交互類的軟件?;谶@個(gè)風(fēng)格設(shè)計(jì)的軟件可以更簡(jiǎn)潔,更有層次,更易于實(shí)現(xiàn)緩存等機(jī)制。 REST(英文:Representational State Transfer,簡(jiǎn)稱REST)描述了一個(gè)架構(gòu)樣

    2024年02月08日
    瀏覽(19)
  • SpringMVC | SpringMVC中的 “JSON數(shù)據(jù)交互“ 和 “RESTful設(shè)計(jì)風(fēng)格“

    SpringMVC | SpringMVC中的 “JSON數(shù)據(jù)交互“ 和 “RESTful設(shè)計(jì)風(fēng)格“

    作者簡(jiǎn)介 :一只大皮卡丘,計(jì)算機(jī)專業(yè)學(xué)生,正在努力學(xué)習(xí)、努力敲代碼中! 讓我們一起繼續(xù)努力學(xué)習(xí)! 該文章 參考學(xué)習(xí)教材 為: 《Java EE企業(yè)級(jí)應(yīng)用開(kāi)發(fā)教程 (Spring + Spring MVC +MyBatis)》 黑馬程序員 / 編著 文章以課本知識(shí)點(diǎn) + 代碼為主線,結(jié)合自己看書(shū)學(xué)習(xí)過(guò)程中的理解和

    2024年04月10日
    瀏覽(32)
  • 【Spring教程30】Spring框架實(shí)戰(zhàn):從零開(kāi)始學(xué)習(xí)SpringMVC 之 Rest風(fēng)格簡(jiǎn)介與RESTful入門(mén)案例

    【Spring教程30】Spring框架實(shí)戰(zhàn):從零開(kāi)始學(xué)習(xí)SpringMVC 之 Rest風(fēng)格簡(jiǎn)介與RESTful入門(mén)案例

    歡迎大家回到《Java教程之Spring30天快速入門(mén)》,本教程所有示例均基于Maven實(shí)現(xiàn),如果您對(duì)Maven還很陌生,請(qǐng)移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環(huán)境》,本文的上一篇為《SpringMVC 之 服務(wù)器響應(yīng)》 REST(Representational State Transfer),表現(xiàn)形式狀態(tài)轉(zhuǎn)

    2024年02月04日
    瀏覽(23)
  • RESTful:理解REST架構(gòu)風(fēng)格、RESTful API

    一、REST架構(gòu)風(fēng)格 REST(英文Representational State Transfer)是一種基于客戶端和服務(wù)器的架構(gòu)風(fēng)格,用于構(gòu)建可伸縮、可維護(hù)的Web服務(wù)。REST的核心思想是,將Web應(yīng)用程序的功能作為資源來(lái)表示,使用統(tǒng)一的標(biāo)識(shí)符(URI)來(lái)對(duì)這些資源進(jìn)行操作,并通過(guò)HTTP協(xié)議(GET、POST、PUT、DELET

    2024年02月07日
    瀏覽(23)
  • Restful風(fēng)格

    準(zhǔn)備工作 第一步: 創(chuàng)建Maven工程然后手動(dòng)添加 web模塊 第二步: 在 pom.xml 文件中指定Maven工程的打包方式 war 第三步: 引入依賴,由于Maven的傳遞性,我們不必將所有需要的包全部配置依賴,只需要配置最頂端的依賴,其他依賴靠傳遞性導(dǎo)入 第四步: 在web.xml文件中配置SpringMVC的前端控制

    2024年02月07日
    瀏覽(20)
  • Restful風(fēng)格筆記

    Restful風(fēng)格筆記

    @RestController注解 在類上添加@RestController可以默認(rèn)類中的所有方法都帶有@ResponseBody注解,可以省去一個(gè)個(gè)添加的麻煩。 路徑變量 @PathVariable注解可以讓控制方法接收前端傳來(lái)的請(qǐng)求中的路徑變量。例如下面這個(gè)例子,無(wú)論前端傳來(lái)1還是100這個(gè)id都能被控制方法中的requestId這個(gè)

    2024年02月10日
    瀏覽(23)
  • restful風(fēng)格接口命名規(guī)范

    (一)rest 1.概念 REST即表述性狀態(tài)傳遞(英文:Representational State Transfer,簡(jiǎn)稱REST)是Roy Fielding博士在2000年他的博士論文中提出來(lái)的一種軟件架構(gòu)風(fēng)格。它是一種針對(duì)網(wǎng)絡(luò)應(yīng)用的設(shè)計(jì)和開(kāi)發(fā)方式,可以降低開(kāi)發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。 可理解為: URL定位資源,用H

    2024年02月02日
    瀏覽(20)
  • 【SpringBoot】| 接口架構(gòu)風(fēng)格—RESTful

    【SpringBoot】| 接口架構(gòu)風(fēng)格—RESTful

    目錄 ? 一:接口架構(gòu)風(fēng)格—RESTful 1.?認(rèn)識(shí)RESTful 2.?RESTful 的注解 1.?認(rèn)識(shí)RESTful (1)接口 ①接口: API(Application Programming Interface,應(yīng)用程序接口)是一些預(yù)先定義的接口(如函數(shù)、HTTP接口),或指軟件系統(tǒng)不同組成部分銜接的約定。 用來(lái)提供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件

    2024年02月13日
    瀏覽(20)
  • RESTful 風(fēng)格是指什么

    RESTful( Representational State Transfer )是一種基于 HTTP 協(xié)議的軟件架構(gòu)風(fēng)格,用于設(shè)計(jì)網(wǎng)絡(luò)應(yīng)用程序的接口。它的設(shè)計(jì)理念是利用 HTTP 協(xié)議中的方法(如 GET、POST、PUT、DELETE 等)來(lái)對(duì)資源進(jìn)行 CRUD ,使得客戶端和服務(wù)器之間的通信變得簡(jiǎn)單、靈活和可擴(kuò)展。 下面是 RESTful 風(fēng)格的

    2024年02月21日
    瀏覽(28)
  • 課程8:RESTful風(fēng)格API接口

    2023年05月11日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包