正文

SSM框架-SpringMVC詳解-mvc框架

5424

springmvc概述Springmvc是spring框架的一個模塊,spring和springmvc不用中間整合層整合。

Springmvc是一個基于mvc的web框架

表現(xiàn)層的三大任務(wù):

URL到controller的映射設(shè)計模式是一種都可以用的應(yīng)用編程思想。

在MVC設(shè)計模式中覺得, 所有應(yīng)用都可以分為三部分組成:

(1)控制程序流轉(zhuǎn)的控制器(Controller)

(2)封裝資料處理資料的模型(Model)

(3)負(fù)責(zé)展示資料的視圖(view)

springmvc的實現(xiàn)原理

(1) .玩家發(fā)送請求 至 前端控制器(DispatcherServlet);

提示:DispatcherServlet的作用:接收請求,調(diào)用其它組件處理請求,響應(yīng)結(jié) 果,等于轉(zhuǎn)發(fā)器、中央處理器,是整個流程控制的中心

(2) .前端控制器(DispatcherServlet)收到請求后調(diào)用處理器映射器 (HandlerMapping)

處理器映射器(HandlerMapping)尋找詳細(xì)的Controller(可以根據(jù)xml配置、注解進 行查找),并將Controller返回給DispatcherServlet;

(3) .前端控制器(DispatcherServlet)調(diào)用處理器適配器(HandlerAdapter)。處理 器適配器經(jīng)歷過適配調(diào)用詳細(xì)的Controller;(Controller– service — Dao — 資料庫)

Controller執(zhí)行完成后返回ModelAndView,

提示:Model(模型資料,即Controller處理的結(jié)果,Map) View(邏輯視圖名,即 負(fù)責(zé)展示結(jié)果的JSP頁面的名字)

處理器適配器(HandlerAdapter)將controller執(zhí)行的結(jié)果(ModelAndView)返回給前 端控制器(DispatcherServlet);

(4) .前端控制器(DispatcherServlet)將執(zhí)行的結(jié)果(ModelAndView)傳給視圖分析 器(ViewReslover)

視圖分析器(ViewReslover)根據(jù)View(邏輯視圖名)分析后返回詳細(xì)JSP頁面

(5) .前端控制器(DispatcherServlet)根據(jù)Model對View進行渲染(即將模型資料 填充至視圖中);

前端控制器(DispatcherServlet)將填充了資料的網(wǎng)頁響應(yīng)給玩家

springmvc實現(xiàn)第一步:創(chuàng)建maven項目springmvc

第二步:在pom文件中添加依賴

dependencies ? ?!– 單元測試 — ? ?dependency ?groupIdjunit/groupId ?artifactIdjunit/artifactId ?version4.10/version ?scopetest/scope ? ?/dependency ? ?!– SpringMVC的jar包 — ? ?dependency ?groupIdorg.springframework/groupId ?artifactIdspring-webmvc/artifactId ?version4.1.3.RELEASE/version ? ?/dependency ? ?!– servlet 和 jsp的jar包 — ? ?dependency ?groupIdjavax.servlet/groupId ?artifactIdservlet-api/artifactId ?version2.5/version ?scopeprovided/scope ? ?/dependency ? ?dependency ?groupIdjavax.servlet/groupId ?artifactIdjsp-api/artifactId ?version2.0/version ?scopeprovided/scope ? ?/dependency ? ?!– java對象轉(zhuǎn)換json的工具類 ? ?dependency ?groupIdcom.fasterxml.jackson.core/groupId ?artifactIdjackson-databind/artifactId ?version2.5.1/version ? ?/dependency ? ?–/dependencies第三步:web.xml中配置前端控制器

?xml version=”1.0″ encoding=”UTF-8″?web-app xmlns:xsi=”

?xml version=”1.0″ encoding=”UTF-8″?beans xmlns=”

restController=controller+responsebody:restController返回json對象

controller返回string:modelandview

controller+responsebody返回json對象

package com.tedu.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/* @Controller,如果目前類所在的包配置了Spring容器包掃描,有著 * 該注解的類,就會作為bean注冊到spring容器中,由spring容器 * 創(chuàng)建實例。 */@Controllerpublic class HelloController { ? ?/* @RequestMapping為目前途徑配置采訪路徑 ? ? * 當(dāng)瀏覽器采訪

在WEB-INF/pages/目錄下,創(chuàng)建home.jsp頁面。

%@ page language=”java” contentType=”text/html; charset=UTF-8″ ? ?pageEncoding=”UTF-8″%!DOCTYPE htmlhtmlheadmeta charset=”UTF-8″titleInsert title here/title/headbody ? ?h1day20-springmvc…h(huán)ome.jsp…/h1/body/html第七步:發(fā)送請求,進行測試

打開瀏覽器,輸入url地址: ?地址。

重定向和轉(zhuǎn)發(fā)重定向redirect和轉(zhuǎn)發(fā)forward的區(qū)別

1,重定向瀏覽器地址欄展現(xiàn)新的地址,轉(zhuǎn)發(fā)地址欄不變

2,重定向可以重定向其他網(wǎng)址,轉(zhuǎn)發(fā)就只能轉(zhuǎn)發(fā)到本網(wǎng)址中的途徑。

redirect重定向適合用于原先的網(wǎng)頁不繼續(xù)提供服務(wù)了。

@Controllerpublic class UserController { ? ?//重定向,原先的登錄地址 ? ?@RequestMapping(“/login”) ? ?public String login() { ?return “redirect:

轉(zhuǎn)發(fā)后瀏覽器的地址欄變?yōu)檗D(zhuǎn)發(fā)后的地址。

在chrome的調(diào)試窗口中network中調(diào)查status code

forward轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)后瀏覽器地址欄還是原來的地址。所以轉(zhuǎn)發(fā)前請求的參數(shù)在轉(zhuǎn)發(fā)后依然可以讀取到。

//第一輸入玩家名和密碼 ? ?@RequestMapping(“/loginByName”) ? ?@ResponseBody ? ?public String loginByNamePwd(String username,String password) { ? ?return “l(fā)ogin" ? ?} ?//再一次登錄時,還得輸入驗證碼 ? ?@RequestMapping(“/loginByCode”) ? ?public String loginByCode(String username,String password,String code) { ?//判斷驗證碼是否正確 ?return “forward:/loginByName" ? ?}

restful風(fēng)味@PathVariable用來將請求URL中的模板變量映射到功能處理途徑的參數(shù)上

形成RUSTFul形式,這將是未來的進步趨勢。它更加簡潔,安全。強化URL GET采訪方法。

@RestControllerpublic class OrderCotroller { ? ?@RequestMapping(“/order/{startTime}/{endTime}”) ? ?public String searchByDate(@PathVariable String startTime, ? ? ?@PathVariable String endTime) { ?return “restful startTime=”+startTime+”,endtime=”+endtime; ? ?}}瀏覽器采訪的URL

全自動將URL 中模板變量{startTime}和{endTime}綁定到@PathVariable注解的同名參數(shù)上,即入?yún)⒑髎tartTime=“2019-10-01”、endTime=“2021-10-10”。