天天看點

spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格

1控制器Controller

控制器複雜提供通路應用程式的行為,通常通過接口定義或注解定義兩種方法實作。

控制器負責解析使用者的請求并将其轉換為一個模型。

在Spring MVC中一個控制器類可以包含多個方法

在Spring MVC中,對于Controller的配置方式有很多種

1實作Controller接口

public interface Controller {
	@Nullable
	ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;

}

           

1 編寫一個Controller類:HelloController

package com.zs.controller;

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

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

//注意:這裡我們先導入Controller接口
public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //ModelAndView 模型和視圖
        ModelAndView mv = new ModelAndView();

        //封裝對象,放在ModelAndView中。Model
        mv.addObject("msg","HelloSpringMVC!");
        //封裝要跳轉的視圖,放在ModelAndView中
        mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
        return mv;
    }

}

           

2編寫完畢後,去Spring配置檔案中注冊請求的bean

3 編寫前端hello.jsp,注意在WEB-INF/jsp目錄下編寫,對應我們的視圖解析器

<%--
  Created by IntelliJ IDEA.
  User: DELL
  Date: 2021/1/24
  Time: 9:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>

           

4配置Tomcat運作測試

spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格

實作接口Controller定義控制器是較老的辦法

缺點是:一個控制器中隻有一個方法,如果要多個方法則需要定義多個Controller;定義的方式比較麻煩

2使用注解@Controller

@Controller注解類型用于聲明Spring類的執行個體是一個控制器

Spring可以使用掃描機制來找到應用程式中所有基于注解的控制器類,為了保證Spring能找到你的控制器,需要在配置檔案中聲明元件掃描

<!-- 自動掃描包,讓指定包下的注解生效,由IOC容器統一管理 -->
    <context:component-scan base-package="com.zs.controller"/>
           

增加一個HelloController,使用注解實作

package com.zs.controller;

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

@Controller //自動裝配springIOC容器中
public class HelloController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        // 封裝資料
        model.addAttribute("msg","Hello,SpringMVCAnnotation");
        return "hello"; //會被視圖解析器處理
    }
}

           

運作tomcat測試

spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格

注解方式是平時使用的最多的方式

2RequestMapping

@RequestMapping

@RequestMapping注解用于映射url到控制器類或一個特定的處理程式方法。可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該位址作為父路徑。

1隻注解在方法上面

@Controller //自動裝配springIOC容器中
public class HelloController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        // 封裝資料
        model.addAttribute("msg","Hello,SpringMVCAnnotation");
        return "hello"; //會被視圖解析器處理
    }
}
           

http://localhost:8080/hello

2 同時注解類與方法

@Controller//自動裝配springIOC容器中
@RequestMapping("/zs")
public class HelloController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        // 封裝資料
        model.addAttribute("msg","Hello,SpringMVCAnnotation");
        return "hello"; //會被視圖解析器處理
    }
}

           

http://localhost:8080/zs/hello

3RestFul 風格

Restful就是一個資源定位及資源操作的風格。不是标準也不是協定,隻是一種風格。基于這個風格設計的軟體可以更簡潔,更有層次,更易于實作緩存等機制

傳統方式操作資源 :通過不同的參數來實作不同的效果!方法單一,post 和 get

http://127.0.0.1/item/queryItem.action?id=1 查詢,GET

http://127.0.0.1/item/saveItem.action 新增,POST

http://127.0.0.1/item/updateItem.action 更新,POST

http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST

使用RESTful操作資源 :可以通過不同的請求方式來實作不同的效果!如下:請求位址一樣,但是功能可以不同!

http://127.0.0.1/item/1 查詢,GET

http://127.0.0.1/item 新增,POST

http://127.0.0.1/item 更新,PUT

http://127.0.0.1/item/1 删除,DELETE

1傳統風格

spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格

2RestFul風格

@PathVariable 注解,讓方法參數的值對應綁定到一個URI模闆變量上

spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格
spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格
spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格
spirngMVC(3)——控制器Controller、RequestMapping、RestFul 風格1控制器Controller2RequestMapping3RestFul 風格