SpringMVC入門詳解

一、瞭解SpringMVC

Spring Web MVC簡稱爲Spring MVC,它是Spring提供給Web應用的框架設計。早期的web開發中,主要是jsp+java bean的方式,jsp頁面中充斥的大量的java代碼,同時又有前端的設計,這樣前後臺嚴重依賴,無法實現前後端分離。現在的前後端提倡分離,通過json數據進行交互。SpringMVC的強大之處在於結構靈活,幾乎可以使用各種視圖,包括json、jsp、xml、pdf等,能夠滿足手機端、頁面端、和平板電腦端的各類請求。

Spring web MVC框架提供了MVC(模型 - 視圖 - 控制器)架構和用於開發靈活和鬆散耦合的Web應用程序的組件。 MVC模式導致應用程序的不同方面(輸入邏輯,業務邏輯和UI邏輯)分離,同時提供這些元素之間的鬆散耦合。**模型(Model)**封裝了應用程序數據,通常它們將由POJO類組成。**視圖(View)**負責渲染模型數據,一般來說它生成客戶端瀏覽器可以解釋HTML輸出。**控制器(Controller)**負責處理用戶請求並構建適當的模型,並將其傳遞給視圖進行渲染。

二、快速使用

關於配置,這裏就不進行贅訴,直接訪問我的這篇博客https://blog.csdn.net/Black1499/article/details/83961684,複製粘貼即可

這裏我們直接給出一個例子,在代碼中學習他的簡單使用,十分簡單

注意所有返回的都是jsp頁面,可愛spring-web.xml中配置。

@Controller // 該註解表示這是一個控制器
@RequestMapping("/emp") // 所有請求的公共部分
public class EmpController {

    // 注入EmployeeMapper對象
    @Autowired
    EmployeeMapper employeeMapper;

    // 兩種返回頁面方面
    // 第一種
    //請求,默認爲get請求
    @RequestMapping("/index")
    public ModelAndView index(){
        ModelAndView mv = new ModelAndView();
        // 添加屬性,類似request.setAttribute(name,value);
        mv.addObject("empList",employeeMapper.selectAll());
        // 設置視圖名稱
        mv.setViewName("index");
        return mv;
    }
    
    // 第二種,推薦使用,簡單靈活
	// 該請求可以簡寫成@PostMapping("indexs")
    @RequestMapping(value = "indexs",method = RequestMethod.POST)
	
    public String indexs(Model model){
        // 添加屬性,類似request.setAttribute(name,value);
        model.addAttribute("empList",employeeMapper.selectAll());
        // 返回頁面
        return "indexs";
		// 重定向
		// return "redirect:/index";
    }
}

三、參數的處理

1. 接收普通參數

接收多個參數,注意這裏參數的名稱和類型要和實體類中一樣

@PostMapping("/addEmp")//接收普通參數
public String addEmp(String name,String sex,String phone){
    // ......
}

接收一個實體類,當參數太多時,上面的那種寫法顯然不合適。這時我們可以直接傳入一個實體類。

@PostMapping("/addEmp")//接收普通參數
public String addEmp(Employee emp){
    // 這裏可以直接使用emp的所有屬性
}

2、@RequestParam獲取參數

@GetMapping("/findById")
public String findById(@RequestParam("emp_id")long empId){
    // ....
    return "";
}

如果當參數爲空時會拋出異常,如果允許參數爲空設置requied參數爲false即可,默認爲true

@GetMapping("/findById")
public String findById(@RequestParam(value = "empId",required = false)long empId){
    // ....
    return "";
}

3、獲取請求中的屬性參數((@RequestAttribute)

@GetMapping("/deleteById")
public String deleteById(@RequestAttribute("empId") long empId){
    // ....
    return "";
}

同樣如果你想獲得session中的屬性參數,使用**@SessionAttribute**註解即可

4、通過URL傳參(@PathVariable)

@GetMapping("/findById/{id}")
public String getById(@PathVariable("id") long id){
    // ....
    return "";
}

5、獲得json參數(@RequestBody)

@PostMapping("/add")
public String add(@RequestBody Employee employee){
    // ....
    return "";
}

6、添加session(@SessionAttributes)

@SessionAttributes只能用到類上面,無法用到方法上

@Controller // 該註解表示這是一個控制器
@RequestMapping("/emp") // 所有請求的公共部分
@SessionAttributes(value = {"empList"})
public class EmpController {

    // 注入EmployeeMapper對象
    @Autowired
    EmployeeMapper employeeMapper;


    @RequestMapping("/index")
    public ModelAndView index(){
        ModelAndView mv = new ModelAndView();
       // 這裏springMVC找到了empList,會自動幫助我們創建一個session並保存
        mv.addObject("empList",employeeMapper.selectAll());
        // 設置視圖名稱
        mv.setViewName("index");
        return mv;
    }
}

7、使用@ModelAttribute註解

**注意:**被@ModelAttribute註釋的方法會在此controller每個方法執行前被執行,因此對於一個controller映射多個URL的用法來說,要謹慎使用。

// 該註解最爲常用的用法,用來設置一個實體類,
// 該controller類中的每個方法調用前,都會調用一下這個方法
@ModelAttribute 
public Employee setEmployee(){
    Employee employee = new Employee();
    employee.setId("1");
    // ......
    return employee;
}

8、返回json字符串(@ResponseBody)

@PostMapping("listAll")
@ResponseBody
public List<Employee> listAll(){
    // ssm會幫助我們把返回對象自動轉換成json字符串
    return employeeMapper.selectAll();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章