springMVC学习

springMVC学习

推荐另外一篇更详细的springMVC

一、什么是springMVC

Spring MVC(模型-视图-控制器)是基于Servlet API构建的Web原始框架。采用MVC设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。主要通过分离模型、视图、控制器在应用程序中的角色,将业务逻辑从界面中解耦。

模型(Model):表示应用程序的数据和业务逻辑,负责对数据库进行操作;

视图(View):负责进行展示数据

控制器(Controller):接收用户的请求,并调用模型来处理业务逻辑

在这里插入图片描述

二、springMVC的工作流程

在这里插入图片描述

1.用户通过向浏览器发起HttpRequest请求到前端控制器DispatcherServlet

2.DispatcherServlet将收到的请求发送给处理器映射器HandlerMapping。

3.处理器映射器 (HandlerMapping)会根据请求,找到负责处理该请求的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4.DispatcherServlet调用处理器适配器HandlerAdapter。

5.HandlerAdapter根据经过适配调用具体的Handler处理器(Controller,后端控制器),Controller执行完成返回ModelAndView。

6.Controller 将处理结果及要跳转的视图封装到一个对象 ModelAndView 中并将其返回给处理器适配器 (HandlerAdaptor)。

7.HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。

8.DispatcherServlet将ModelAndView传给视图解析器ViewReslover。(DisptcherServlet 调用 ViewResolver,将 ModelAndView 中的视图名称封装为视图对象)

9.ViewReslover解析后返回具体View视图

10.DispatcherServlet根据View进行渲染视图。

11.DispatcherServlet响应用户。

三、SpringMVC的数据响应方式

在这里插入图片描述

//springMVC的数据响应方式
//1.页面跳转(返回字符串(字符串与视图解析器)、通过modelandview对象返回)
@Controller
@RequestMapping("/test")
public class TestController {
//    @RequestMapping("/hello")
//    public String hello(){
//        System.out.println("hello word!--YY");
//        return "hello.jsp";
//    }
    //1).返回字符串
    @RequestMapping("/ToHello")
    public String helloa(){
        System.out.println("hello word!--toto");
        return "hello1";
    }
    @RequestMapping("/hello2")
    public String hello2(){
//        转发
        return "forward://WEB-INF/jsp/hello1.jsp";
//        重定向
//        return "redirect:/index.jsp";
    }
    @RequestMapping("/hello3")
    public ModelAndView hello3(){
//      2).返回一个ModelAndView对象
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("username","bbc");
        modelAndView.setViewName("hello1");
        return modelAndView;
    }
//2.回写数据(直接返回字符串、返回json对象或集合)
//    两种方式
//    1).直接返回字符串
    @RequestMapping("/data")
    public void data(HttpServletResponse response) throws IOException {
        response.setContentType("txt/html;charset=utf-8");
        response.getWriter().print("重庆工程学院");
    }
//    上面方法的简写
    @RequestMapping("/data1")
    @ResponseBody
    public String data1() {
        return "重庆工程学院";
    }
//   2).返回json对象
    @RequestMapping("/data2")
    @ResponseBody
    public Phone data2(){
        Phone phone=new Phone();
        phone.setPhoneId(22L);
        phone.setModelNumber("mate60");
        return phone;
    }
}

四、SpringMVC获取不同类型的请求参数

在这里插入图片描述

//    请求参数
//    1.获取基本数据类型
    @RequestMapping("/parm1")
    @ResponseBody
//    使用注解@RequestParam取了一个别名,在前端传参时可直接用别名,value对应别名,required对应是否必填,defaultValue对应默认值(即不传参时对应的值)
    public void psrm1(int phoneId,@RequestParam(value = "mNum",required = false,defaultValue ="mate60") String modelNumber){
        System.out.println(phoneId);
        System.out.println(modelNumber);
    }

//    2.获取pojo数据
    @RequestMapping("/parm4")
    @ResponseBody
    public void parm4(Phone phone){
        System.out.println(phone.getPhoneId());
        System.out.println(phone.getModelNumber());
    } @RequestMapping("/parm44")
    @ResponseBody
    public String parm44(String i){
        return i;
    }
//     3.获取数组类型数据
    @RequestMapping("/parm2")
    @ResponseBody
    public void parm2(String[] nets) {
        System.out.println(Arrays.asList(nets));
    }
    //  4.获取集合类型数据   vo
    @RequestMapping(value = "/parm3",method = RequestMethod.POST)
    @ResponseBody
    public void parm3(PhoneStoreDTO phoneStoreDTO){
        System.out.println(phoneStoreDTO.toString());
    }

T)
@ResponseBody
public void parm3(PhoneStoreDTO phoneStoreDTO){
System.out.println(phoneStoreDTO.toString());
}


  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值