日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

SpringMVC @Controller和@RequestMapping注解

作者:ezezeez 更新時間: 2022-07-16 編程語言

URLBasedViewResolver

UrlBasedViewResolver 是對 ViewResolver 的一種簡單實現,主要提供了一種拼接 URL 的方式來解析視圖。

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">            
    <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceViewResolver"/> <!--不能省略-->
    <!--前綴-->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!--后綴-->
    <property name="suffix" value=".jsp"/>  
 </bean>

Spring MVC接口

Spring MVC 涉及到的組件有 DispatcherServlet(前端控制器)、HandlerMapping(處理器映射器)、HandlerAdapter(處理器適配器)、Handler(處理器)、ViewResolver(視圖解析器)和 View(視圖)。下面對各個組件的功能說明如下。
1)DispatcherServlet
DispatcherServlet 是前端控制器,從圖 1 可以看出,Spring MVC 的所有請求都要經過 DispatcherServlet 來統一分發。DispatcherServlet 相當于一個轉發器或中央處理器,控制整個流程的執行,對各個組件進行統一調度,以降低組件之間的耦合性,有利于組件之間的拓展。
2)HandlerMapping
HandlerMapping 是處理器映射器,其作用是根據請求的 URL 路徑,通過注解或者 XML 配置,尋找匹配的處理器(Handler)信息
3)HandlerAdapter
HandlerAdapter 是處理器適配器,其作用是根據映射器找到的處理器(Handler)信息,按照特定規則執行相關的處理器(Handler)
4)Handler
Handler 是處理器,和 Java Servlet 扮演的角色一致。其作用是執行相關的請求處理邏輯,并返回相應的數據和視圖信息,將其封裝至 ModelAndView 對象中。
5)View Resolver
View Resolver 是視圖解析器,其作用是進行解析操作,通過 ModelAndView 對象中的 View 信息將邏輯視圖名解析成真正的視圖 View(如通過一個 JSP 路徑返回一個真正的 JSP 頁面)。
6)View
View 是視圖,其本身是一個接口,實現類支持不同的 View 類型(JSP、FreeMarker、Excel 等)。

以上組件中,需要開發人員進行開發的是處理器(Handler,常稱Controller)和視圖(View)。通俗的說,要開發處理該請求的具體代碼邏輯,以及最終展示給用戶的界面。

注意:由于 Spring MVC 結構比較復雜,所以學習的時候也要掌握學習方法。首先要明確 Spring MVC 是一個工具,既然是工具,那么我們就需要先掌握工具的使用方法,不要陷入細節中,深入淺出,慢慢通過實際運用來加深對其的理解。

Controller注解

在 net.biancheng.controller 包中創建控制器類 IndexController

package net.biancheng.controller;

import org.springframework.stereotype.Controller;

@Controller
public class IndexController {
    // 處理請求的方法
}

springmvcDemo 應用的配置文件 springmvc-servlet.xml 中添加以下代碼:

<!-- 使用掃描機制掃描控制器類,控制器類都在net.biancheng.controller包及其子包下 -->
<context:component-scan base-package="net.biancheng.controller" />

RequestMapping注解

  1. value 屬性
@RequestMapping(value="toUser")
@RequestMapping("toUser")
  1. path屬性
@RequestMapping(path="toUser")
  1. name屬性
@RequestMapping(value = "toUser",name = "獲取用戶信息")
  1. method屬性
@RequestMapping(value = "toUser",method = RequestMethod.GET) 

@RequestMapping(value = "toUser",method = {RequestMethod.GET,RequestMethod.POST})
  1. params屬性
@RequestMapping(value = "toUser",params = "type")
public String toUser() {
    return "showUser";
}
  1. header屬性
@RequestMapping(value = "toUser",headers = "Referer=http://www.xxx.com") 
  1. consumers屬性
@RequestMapping(value="toUser",consumers="application/json");
  1. produces屬性
    produces 屬性用于指定返回的內容類型
@RequestMapping(value="toUSer",produces="application/json,charst=utf-8");

通過請求URL進行映射

1)方法級別注解
@Controller
public class IndexController{
@RequestMapping(value="/index/login")
public String login(){
return "login";
}
@RequestMapping(value="/index/register")
public String register(){
return "register";
}
}

2)類級別注解

@Controller
@RequestMapping("/index")
public class IndexController{

@RequestMapping("/login")
  public Sting login(){
  return "login";
  }

}

通過請求參數、請求方法進行映射

package net.biancheng.controller;

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

@Controller
public class IndexController {
    @RequestMapping(value = "/index/success" method=RequestMethod.GET, Params="username")
    public String success(@RequestParam String username) {    
        return "index";
}

編寫請求處理方法?

1)請求處理方法中常出現的參數類型

package net.biancheng.controller;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/index")
public class IndexController {
    @RequestMapping("/login")
    public String login(HttpSession session,HttpServletRequest request) {
        session.setAttribute("skey", "session范圍的值");
        session.setAttribute("rkey", "request范圍的值");
        return "login";
    }
}

2)請求處理方法常見的返回類型

請求處理方法可以返回如下類型的對象:
ModelAndView
Model
包含模型屬性的 Map
View
代表邏輯視圖名的 String
void
其它任意Java類型

最常見的返回類型就是代表邏輯視圖名稱的 String 類型,例如前面幾節中的請求處理方法。

web.xml
springmvc-servlet.xml
User.java
UserController.java
index.jsp
login.jsp
register.jsp
當用戶單擊“注冊”超鏈接時,控制器會將該請求轉發給 UserController 的 getLogin 方法處理,處理后跳轉到 /WEB-INF/jsp 下的 register.jsp 視圖。同理,當單擊“登錄”超鏈接時,控制器處理后轉到 /WEB-INF/jsp下的 login.jsp 視圖。

原文鏈接:https://blog.csdn.net/qq_44174346/article/details/125737862

欄目分類
最近更新