教自己快速上手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();
}