1. 程式人生 > 其它 >kill 程序_如何查殺stopped程序

kill 程序_如何查殺stopped程序

技術標籤:springmvc

SpringMVC

1.什麼是Spring MVC ?簡單介紹下你對 springMVC的理解?

​ Spring MVC是一個基於Java的實現了MVC設計模式的請求驅動型別的輕量級Web框架,通過把 Model,View,Controller 分離,將web 層進行職責解耦,把複雜的web應用分成邏輯清晰的幾部分,簡化開發,減少出錯,方便組內開發人員之間的配合。

2.什麼是MVC模式

MVC 模式代表 Model-View-Controller(模型-檢視-控制器) 模式。這種模式用於應用程式的分層開發。

  • Model(模型) - 模型代表一個存取資料的物件或 JAVA POJO。它也可以帶有邏輯,在資料變化時更新控制器

  • View(檢視) - 檢視代表模型包含的資料的視覺化

  • Controller(控制器) - 控制器作用於模型和檢視上。它控制資料流向模型物件,並在資料變化時更新檢視。它使檢視與模型分離開

    微信截圖_20200728164746

3.springMVC流程

[外鏈圖片轉存中…(img-8613TiqH-1608618056312)]

(1)使用者傳送請求至前端控制器DispatcherServlet;
(2) DispatcherServlet 收到請求後,呼叫HandlerMapping處理器對映器,請求獲取Handle;
(3)處理器對映器根據請求url找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一併返回給 DispatcherServlet;

(4)DispatcherServlet 呼叫 HandlerAdapter 處理器介面卡;
(5)HandlerAdapter 經過適配呼叫 具體處理器(Handler,也叫後端控制器);
(6)Handler 執行完成返回ModelAndView;
(7) HandlerAdapter 將 Handler 執 行 結 果 ModelAndView 返 回 給DispatcherServlet;
(8)DispatcherServlet 將 ModelAndView 傳給 ViewResolver 檢視解析器進行解析;

(9)ViewResolver 解析後返回具體 View;
(10)DispatcherServlet 對View進行渲染檢視(即將模型資料填充至檢視中)

(11)DispatcherServlet 響應使用者。

4.Springmvc 的優點

(1)可以支援各種檢視技術,而不僅僅侷限於 JSP/httl/freemarker;
(2)與 Spring 框架整合(如IoC 容器、AOP 等);
(3)清晰的角色分配:前端控制器(dispatcherServlet) , 請求到處理器對映
(handlerMapping), 處理器介面卡(HandlerAdapter), 檢視解析器(ViewResolver)。
(4) 支援各種請求資源的對映策略。

5.Spring MVC 的主要元件

(1)前端控制器 DispatcherServlet(不需要程式設計師開發)
作用:接收請求、響應結果,相當於轉發器,有了DispatcherServlet 就減少了其它元件之間的耦合度。
(2)處理器對映器HandlerMapping(不需要程式設計師開發)
作用:根據請求的 URL來查詢 Handler
(3)處理器介面卡HandlerAdapter
注意:在編寫 Handler 的時候要按照 HandlerAdapter 要求的規則去編寫,這樣介面卡 HandlerAdapter才可以正確的去執行 Handler。

(4)處理器 Handler(需要程式設計師開發)
(5)檢視解析器 ViewResolver(不需要程式設計師開發)
作用:進行檢視的解析,根據檢視邏輯名解析成真正的檢視(view)
(6)檢視View(需要程式設計師開發 jsp)
View是一個介面, 它的實現類支援不同的檢視型別(jsp, freemarker,pdf等等)

6.SpringMVC 怎麼樣設定重定向和轉發的

(1)轉發:在返回值前面加"forward:",譬如"forward:user.do?name=method4"
(2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"

7.SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?

​ 是單例模式,所以在多執行緒訪問的時候有執行緒安全問題,不要用同步,會影響效能的,解決方案是在控制器裡面不能寫靜態變數、儘量不寫全域性變數。

package com.usian.controller;
import java.util;
public class TestController{
    private List<User> list = null;
    
    @RequestMapping("/testa")
    public String testa(User user){
        list = userService.queryUserList(user);
        //.......
        
        return list;
    }
    @RequestMapping("/testb")
    public String testb(User user){
        list = userService.queryUserList(user);
        
        // return list;
        List<User> list =new ArrayList<>();
        User u = new User();
        u.setId(2);
        u.setName("zs");
        list.add(u);
        User u2 = new User();
        u2.setId(1);
        u2.setName("ls");
        list.add(u);
        System.out.println(list.size());  // 2
        System.out.println(list);
        [{2,"zs"},{1,"ls"}]
    }
}

8.SpringMVC 常用的註解有哪些

@RequestMapping:用於處理請求 url 對映的註解,可用於類或方法上。用於類 上,則表示類中的所有響應請求的方法都是以該地址作為父路徑。

@RequestBody:註解實現接收 http 請求的json資料,將json轉換為 java物件。

@ResponseBody:註解實現將 conreoller 方法返回物件轉化為 json 物件響應給 客戶。

@RequestParam , 將 請 求 的 參 數 綁 定 到 方 法 中 的 參 數 上 @RequestParam(value = “name”, required = false) String name

@PathVariable , 用 於 對 應 restful 風 格 url 中 的 參 數 @RequestMapping(value= “/happy/{dayid}”) findPet(@PathVariable String dayid)

9.如果在攔截請求中,我想攔截 get 方式提交的方法,怎麼配置

可以在@RequestMapping註解裡面加上 method=RequestMethod.GET

10.怎樣在方法裡面得到 Request,或者 Session?

直接在方法的形參中宣告request, SpringMvc就自動把 request 物件傳入

11.如何解決 get 和 post 亂碼問題?

解 決 post 請 求 亂 碼 : 我 們 可 以 在 web.xml 裡 邊 配 置 一 個 CharacterEncodingFilter 過濾器。 設定為 utf-8.

解決 get 請求的亂碼:有兩種方法。對於 get 請求中文引數出現亂碼解決方法有兩 個:

  1. 修改 tomcat 配置檔案新增編碼與工程編碼一致。
  2. 另 外 一 種 方 法 對 參 數 進 行 重 新 編 碼 String userName = New String(Request.getParameter(“userName” ).getBytes(“ISO8859-1” ),“utf-8” );

12.怎麼樣把ModelMap裡面的資料放入Session裡面?

可以在類上面加上@SessionAttributes註解,裡面包含的字串就是要放入session裡面的key

13.過濾器與攔截器的區別

①攔截器是基於動態代理的,而過濾器是基於函式回撥。
②攔截器不依賴於servlet容器,通過動態代理實現,過濾器依賴於servlet容器。
③攔截器可以在方法前後,異常前後等呼叫,而過濾器只能在請求前和請求後各呼叫一次。
④攔截器可以利用依賴注入,因此在Spring框架程式中,優先攔截器。
⑤過濾器是servlet容器的,攔截器是spring框架的