教自己快速上手springMVC

版权声明:如果转载或使用本博客,请标明出处 https://blog.csdn.net/Black1499/article/details/83998664

一、了解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();
}

猜你喜欢

转载自blog.csdn.net/Black1499/article/details/83998664