javascript
(SpringMVC)概述和简单使用
文章目錄
- 1. 什么是SpringMVC
- 1.1 概述
- 1.2 中心控制器
- 1.3 SpringMVC執行原理
- 2. 簡單使用
- 2.1 配置版
- 2.2 注解版
- 3. 總結
1. 什么是SpringMVC
1.1 概述
Spring MVC是Spring Framework的一部分,是基于Java實現MVC的輕量級Web框架。
查看官方文檔:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web
Spring MVC的特點:
-
輕量級,簡單易學
-
高效 , 基于請求響應的MVC框架
-
與Spring兼容性好,無縫結合
-
約定優于配置
-
功能強大:RESTful、數據驗證、格式化、本地化、主題等
-
簡潔靈活
Spring的web框架圍繞DispatcherServlet [ 調度Servlet ] 設計。
DispatcherServlet的作用是將請求分發到不同的處理器。從Spring 2.5開始,使用Java 5或者以上版本的用戶可以采用基于注解形式進行開發,十分簡潔;
1.2 中心控制器
Spring的web框架圍繞DispatcherServlet設計。DispatcherServlet的作用是將請求分發到不同的處理器。從Spring 2.5開始,使用Java 5或者以上版本的用戶可以采用基于注解的controller聲明方式。
Spring MVC框架像許多其他MVC框架一樣, 以請求為驅動 , 圍繞一個中心Servlet分派請求及提供其他功能,DispatcherServlet是一個實際的Servlet (它繼承自HttpServlet 基類)。
1.3 SpringMVC執行原理
⑴ 用戶發送請求至前端控制器DispatcherServlet
⑵ DispatcherServlet收到請求調用HandlerMapping處理器映射器。
⑶ 處理器映射器根據請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
⑷ DispatcherServlet通過HandlerAdapter處理器適配器調用處理器
⑸ 執行處理器(Controller,也叫后端控制器)。
⑹ Controller執行完成返回ModelAndView
⑺ HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet
⑻ DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
⑼ ViewReslover解析后返回具體View
⑽ DispatcherServlet對View進行渲染視圖(即將模型數據填充至視圖中)。
⑾ DispatcherServlet響應用戶。
2. 簡單使用
2.1 配置版
1.新建一個Moudle 添加web的支持!
2.確定導入了SpringMVC 的依賴!
3.配置web.xml , 注冊DispatcherServlet
<?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"><!--1.注冊DispatcherServlet--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--關聯一個springmvc的配置文件:【servlet-name】-servlet.xml--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!--啟動級別-1--><load-on-startup>1</load-on-startup></servlet><!--/ 匹配所有的請求;(不包括.jsp)--><!--/* 匹配所有的請求;(包括.jsp)--><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>4.編寫SpringMVC 的 配置文件!名稱:springmvc-servlet.xml : [servletname]-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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--添加 處理映射器--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!-- 添加 處理器適配器--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!--視圖解析器:DispatcherServlet給他的ModelAndView--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"><!--前綴--><property name="prefix" value="/WEB-INF/jsp/"/><!--后綴--><property name="suffix" value=".jsp"/></bean> </beans>5.編寫業務Controller ,要么實現Controller接口,要么增加注解;需要返回一個ModelAndView,裝數據,封視圖;
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中。Modelmv.addObject("msg","HelloSpringMVC!");//封裝要跳轉的視圖,放在ModelAndView中mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jspreturn mv;}}6.將自己的類交給SpringIOC容器,注冊bean
<!--Handler--><bean id="/hello" class="com.zh.controller.HelloController"/>7.寫要跳轉的jsp頁面,顯示ModelandView存放的數據,以及我們的正常頁面;
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> ${msg} </body> </html>8.配置Tomcat 啟動測試!
可能遇到的問題:訪問出現404,排查步驟:
-
查看控制臺輸出,看一下是不是缺少了什么jar包。
-
如果jar包存在,顯示無法輸出,就在IDEA的項目發布中,添加lib依賴!
-
重啟Tomcat 即可解決!
不建議使用,太麻煩。
2.2 注解版
1.配置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"><!--1.注冊servlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--通過初始化參數指定SpringMVC配置文件的位置,進行關聯--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!-- 啟動順序,數字越小,啟動越早 --><load-on-startup>1</load-on-startup></servlet><!--所有請求都會被springmvc攔截 --><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping> </web-app>/ 和 /* 的區別:< url-pattern > / </ url-pattern > 不會匹配到.jsp, 只針對我們編寫的請求;即:.jsp 不會進入spring的 DispatcherServlet類 。< url-pattern > /* </ url-pattern > 會匹配 *.jsp,會出現返回 jsp視圖 時再次進入spring的DispatcherServlet 類,導致找不到對應的controller所以報404錯。
2.添加Spring MVC配置文件
在視圖解析器中把所有的視圖都存放在/WEB-INF/目錄下,這樣可以保證視圖安全,因為這個目錄下的文件,客戶端不能直接訪問。
-
讓IOC的注解生效
-
靜態資源過濾 :HTML . JS . CSS . 圖片 , 視頻 …
-
MVC的注解驅動
-
配置視圖解析器
3.創建Controller
package com.zh.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;@Controller public class HelloController {//真實訪問地址 : 項目名/hello@RequestMapping("/hello")public String hello(Model model){//向模型中添加屬性msg與值,可以在JSP頁面中取出并渲染model.addAttribute("msg","Hello,SpringMVC");//web-inf/jsp/hello.jspreturn "hello";} }@Controller是為了讓Spring IOC容器初始化時自動掃描到;
@RequestMapping是為了映射請求路徑;
方法中聲明Model類型的參數是為了把Action中的數據帶到視圖中;
方法返回的結果是視圖的名稱hello,加上配置文件中的前后綴變成WEB-INF/jsp/hello.jsp。
4.創建視圖層
在WEB-INF/ jsp目錄中創建hello.jsp , 視圖可以直接取出并展示從Controller帶回的信息;
可以通過EL表示取出Model中存放的值,或者對象;
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> ${msg} </body> </html>5.配置tomcat運行
3. 總結
實現步驟:
1.新建一個web項目
2.導入相關jar包
3.編寫web.xml , 注冊DispatcherServlet
4.編寫springmvc配置文件
5.接下來就是去創建對應的控制類 , controller
6.最后完善前端視圖和controller之間的對應
7.測試運行調試.
web.xml和springmvc配置文件基本都是寫死的完全不用動,只需要編寫控制類中的相關代碼即可。
使用springMVC必須配置的三大件:
處理器映射器、處理器適配器、視圖解析器
通常,我們只需要手動配置視圖解析器,而處理器映射器和處理器適配器只需要開啟注解驅動即可,而省去了大段的xml配置
總結
以上是生活随笔為你收集整理的(SpringMVC)概述和简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (Spring)声明式事务
- 下一篇: (SpringMVC)RestFul和C