網站首頁 編程語言 正文
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注解
- value 屬性
@RequestMapping(value="toUser")
@RequestMapping("toUser")
- path屬性
@RequestMapping(path="toUser")
- name屬性
@RequestMapping(value = "toUser",name = "獲取用戶信息")。
- method屬性
@RequestMapping(value = "toUser",method = RequestMethod.GET)
@RequestMapping(value = "toUser",method = {RequestMethod.GET,RequestMethod.POST})
- params屬性
@RequestMapping(value = "toUser",params = "type")
public String toUser() {
return "showUser";
}
- header屬性
@RequestMapping(value = "toUser",headers = "Referer=http://www.xxx.com")
- consumers屬性
@RequestMapping(value="toUser",consumers="application/json");
- 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
- 上一篇:SpringMVC 傳遞參數
- 下一篇:SpringMVC基礎工作原理以及實例
相關推薦
- 2022-03-15 const定義簡單數據類型修改會報錯,而復雜數據類型則不會
- 2022-03-30 Golang中omitempty關鍵字的具體實現_Golang
- 2022-07-26 論網頁檢查preview和response一個是漢字一個是亂碼怎么解決
- 2023-03-23 React?Native中WebView與html雙向通信遇到的坑_React
- 2022-04-15 python3?cmp實現方式_python
- 2022-10-08 ASP.NET?MVC在基控制器中處理Session_實用技巧
- 2024-07-13 Spring AOP 基于注解的方式實現切面遍程
- 2022-09-12 Shell編程之/bin/bash和/bin/sh的區別淺析_linux shell
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支