VMware Workstation虛擬機器如何上外網,如何與實體機互聯
阿新 • • 發佈:2022-05-11
Spring MVC2
原理
DispatcherServlet:前段控制器 總控制器
作用攔截所有的請求 :把請求交給對應的控制器
控制器有兩種:
1.DispatcherServlet
攔截請求把請求交給對應的controller
2.我們自定義的Contraller
處理請求,返回結果
假設DispatcherServlet類不工作 ,或者例項化比較晚,所有的controller都沒有辦法處理請求了 DispatcherServlet一定第一時間就要被例項化
怎麼保證第一時間被例項化
放在web.xml檔案中
二:怎麼用
對於我們說,框架搭建好之後,我們程式設計師主要把精力放在controller service dao jsp即可
剩下的工作交給 spring mvc的一套流程即可
1.comtroller 跟傳統的servletbi有什麼優點
a:不需要繼承很多的類
b:可以寫很多額方法
一個類只需要寫一個Controller即可
與這個類相關的所有的方法都可以寫在這個controller中
c:傳參比較方便
三:登入的案例
現在已經成功的呼叫Controller
怎末把值從頁面傳遞到controller的登入方法?
知道登入後的資料封裝到request裡的 ,只有獲取到request就可以了
1.先按照熟悉的方式獲取 獲取 request
a.現在pox.xml裡面新增servlet的jar包
<!--加入servlet依賴(servlet的jar)--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!--jsp的依賴(jsp相關的jar加進來)--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency>
b.向contraller注入了一個物件了 from中的資料預設放在request中
(官方不是推薦的)
2.第二種方法把值從頁面傳遞到controller
只要和form表單的對應好,資料就會自動的對映到controller中,我們不應在手動的從request中取值
由contoller完成
3.第三種的方法把值從頁面傳遞到controller
如果要傳的值很多可以傳一個物件進去
3.第三種的方法把值從頁面傳遞到controller
如果要傳的值很多可以傳一個物件進去
user中的資料從request(HttpServletRequest)拿到值後放到物件中
怎末來的?
users的資料來自DispatchServlet,DispatcherServlet的資料來自HttpServlet
一句話DispatcherServlet可以拿到HttpServlet(包括HttpServletRequest)中的值
通過反射放到controller的Users物件中
注意:
DispatcherServlet先從request中獲取值,利用反射例項化controller中引數例項,利用反射賦值
,對於我們來說引數一直即可
4.第四種第三種的方法把值從頁面傳遞到controller
這種好處 RequestParam 註解中值,跟後面的繫結的值可以不一樣
二:出參
登入成功後返回物件
將controller傳給jsp頁面展示出來
1.model
注意:
spring mvc 預設不識別el表示式 解決 在成功頁面新增 <%@ page isELIgnored="false" %> 2.map 只要記住一句話 把要返回的引數,放在Map中就可以 頁面通過EL表示式就可以拿到值 原理: controller 中的值給了DispatcharServle ,把值方法request 第三中 ModelAndView