1. springmvc中如何執行到方法的
spring 是在配置的bean裡面的屬性,中依賴注入的,調用set方法。
2. 什麼是springmvc
SpringMvc是spring的一個模塊 基於MVC的一個框架 無需中間整合層來整合
什麼是MVC ?mvc在b/s下的應用:
首先請求發送request請求到C(control 接收用戶請求響應用戶) 然後控制器到M模型(pojo、action、service、)層處理 處理結果完了返回控制器 控制器要經過視圖渲染 最後返回終端(response)
在b/s系統下模型無法將數據直接填充到視圖 還是要返回控制器
MVC是一個設計模式 是開發程序的一種解決方案
前端控制器 DispatcherServlet
處理執行鏈HandlerExcutionChian
處理器映射器 HandlerMapping
處理器適配器 HandlerAdapter 去執行Handler
前端控制器 DispatcherServlet 請求執行Handler 處理完 返回 ModelAndView (模型和視圖的結合體) 前端控制器接收到ModelAndView後請求視圖解析器 返回view 前端控制器將視圖進行渲染
SpringMvc整個的執行流程:
1、發起請求到前端控制器(DispatcherServlet)
2、前端控制器請求HandlerMapping查找Handler(可以根據xml、註解進行查找)
3、處理器映射器HandlerMapping向前端控制器DispatcherServlet返回Handler
4、前端控制器DispatcherServlet 調用處理器適配器HandlerAdapter 執行Handler
5、處理器適配器HandlerAdapter 執行Handler
6、Handler執行完給處理器適配器返回ModelAndView
7、處理器適配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底層對象 包括model和view)
8、前端控制器請求視圖解析器去解析視圖
根據邏輯視圖名解析成真正的視圖(jsp)
9、視圖解析器向前端控制器返回view
10、前端控制器進行視圖渲染
視圖渲染將模型數據(模型數據在ModelAndView對象中)填充到request域
11、前端控制器向用戶響應結果
組件:
1、前端控制器 DispatcherServlet(不需要程序員開發)
作用:接收請求、響應結果 相當於轉發器
有了DispatcherServlet 就減少了其它組件之間的耦合度
2、處理器映射器HandlerMapping(不需要程序員開發)
作用:根據請求的URL來查找Handler
3、處理器適配器HandlerAdapter
作用:按照特定的規則(HandlerAdapter要求的規則)去執行Handler
注意:在編寫Handler的時候要按照HandlerAdapter要求的規則去編寫,這樣適配器HandlerAdapter才可以正確的去執行Handler
4、處理器Handler(需要程序員開發)
5、視圖解析器 View Resolver(不需要程序員開發)
作用:進行視圖的解析 根據視圖邏輯名解析成真正的視圖(view)
6、視圖View(需要程序員開發jsp)
View是一個介面, 它的實現類支持不同的視圖類型(jsp,freemarker,pdf。。。)
3. springmvc開發的文件怎麼運行
使用springMVC也可以代替struts2,當然只是代替業務分發的功能,struts2的一些其他功能它是沒有的,不然要struts2有什麼用。
下面我用springMVC代替struts2去整合hibernate實現簡單的員工查詢功能。
使用springMVC有兩個配置文件需要配置,一個是applicationContext.xml、另一個是web.xml,在applicationContext.xml裡面配置事務管理器以及屬性注入等。web.xml裡面要添加一個springMVC的servlet的注冊和映射(DispatcherServlet),這個servlet是springMVC的核心控制器,專門處理各個請求的,然後根據相應的參數分發給相應的業務控制器處理,業務控制器處理完之後就會返回一字元串給核心控制器,核心控制器再根據該字元串重定向或者轉發到相應的頁面。還必須給該核心控制器建一個配置文件,其形式為:核心控制器servlet名-servlet.xml,如springMVC-servlet.xml.該配置文件放在WEB-INF下面。
applicationContext.xml的內容如下:
4. Spring MVC如何執行一個Controller之後5分鍾後執行另一個方法
return "xxx"
xxx代表你訪問的Controller 路徑
5. spring springmvc mybaties怎樣tomcat一啟動就執行一個方法
spring配置文件中,為某個對象定義加上init-method="XXX"(作為bean節點的屬性),其中XXX就是需要執行的方法名,該方法沒有參數。
如果需要參數的話,就要用變通的方式,定義一個類,需要的參數作為屬性傳遞給該類,然後定義一個沒有參數的方法,使用那些屬性。
最後在spring配置中按上述的方式定義init-method
6. springmvc怎麼通過攔截器得到執行的方法
呃··回答錯地方了 在web.xml配置 spring org.springframework.web.servlet.DispatcherServlet 1 spring *.do ------------------------------------------- spring-servlet.xml 的配置掃包,自動匹配你的方法
7. springmvc 如何在java代碼中發送請求到一個controller,執行controller方法
這樣是沒有意義的,controller可以執行但是你裡面的httpservletrequest是空的並且無法返回到頁面因為java程序不會主動回應只有前端訪問了才會返回
8. springmvc ctrl 方法執行前統一執行一個自定義方法,並且接受的參數與具體要執行的方法樣
還是不太明白 大致上 當你執行ctrl 方法時候 就調用 一下 你的自定義方法就可以了 如果是參數的話 可以 通過JSON 傳入多個 比如 在一個JSON串中拼接 一個類名 和方法名 然後 在 controller 拿到JSON 從 JSON 拿到 類名 與方法名 獲得實際類與方法的代碼如下:
packagetest;
importjava.lang.reflect.Method;
publicclassTest{
//獲得類和方法
publicstaticvoidmain(String[]args)throwsException{
//類名
StringclassName="test.test1";
//方法名
StringmethodName="sayHello";
//載入類
Classclz=Class.forName(className);
//獲得類
Objectobj=clz.newInstance();
//獲取方法那個String.class就是參數類型
Methodm=obj.getClass().getDeclaredMethod(methodName,String.class);
//調用方法
Stringresult=(String)m.invoke(obj,"aaa");
System.out.println(result);
}
}
//測試類
packagetest;
publicclasstest1{
publicStringsayHello(Strings){
System.out.println(s);
return"hello!";
}
}
/**以下是輸出結果
aaa
hello!
*/
總的來講 就是通過 反射機制 具體 怎麼實現 還得看自己 我這只是個例子
9. 在springMVC中,怎麼根據參數來調用不同的方法!但是,不是用if...else...!!!
在方法上添加@RequestMapping註解
例:@RequestMapping(params={"method=login"})
10. springmvc怎麼在啟動時自己執行一個線程
調用線程跟spring mvc沒有任何關系,只要調用start()方法即可啟動線程,至於線程安全問題,如果線程run()方法中沒有對於資料庫的修改操作的話,無需考慮這點