springBoot,spring,springMVC

  • SpringBoot
  1. 当前启动类的类对象,会扫描这个类所在的包,及其子包;
  • Spring
  1. Spring 想要将项目中所有的对象都纳入到Spring中进行管理;
  2. 两个核心概念IOC 和AOP;
  3. IOC:控制反转,主要目的是降低计算机程序各个模块之间的耦合;
    1. spring将所有对象都纳入到容器中,不需要从容器中去获取,容器会自动检测,哪些类需要该对象;
    2. spring容器会自定将所需要的对象注入到这个类的实例中;
  4. DI:依赖注入 用来实现控制反转;
  5. AOP是一种编程思想,它允许开发者在程序执行期间动态地将代码切入到类的方法中;
  6. 处理事务的两种方式:声明式,编程式;
  • 注解
    1. 声明映射地址   @RequestMapping("easyb");
      1. 将方法的返回值,直接写入到response中;
      2. @RequestMapping是一个用来处理请求地址映射的注解,它可以将HTTP请求映射到特定的处理方法上。具体来说,它可以将请求的URL、HTTP方法、参数以及头信息等信息映射到对应的处理器方法上,从而实现请求的处理。
      3. 在Spring MVC框架中,@RequestMapping注解通常用于类或方法上。当用于类上时,它表示该类中的所有响应请求的方法都是以该地址作为父路径。而当用于方法上时,它表示访问该方法的路径。因此,通过组合类上的@RequestMapping和方法上的@RequestMapping,可以形成访问类中方法的完整路径。
      4. 此外,@RequestMapping注解还具有多个属性,如value、method、consumes、produces、params和headers等,这些属性可以进一步细化请求映射的条件。例如,value属性用于指定请求的URI模板,method属性用于指定请求的HTTP方法,而headers属性则可以指定请求中必须包含的某些header值。
      5. 总之,@RequestMapping注解在Spring MVC框架中起到了非常关键的作用,它使得开发者可以方便地定义请求映射规则,从而实现对HTTP请求的有效处理。
    2. @ResponseBody
      1. 如果不写responsebody会将这个方法的返回值当作一个地址进行转发处理;
      2. 写了会返回到网页页面上;
      3. 它的主要作用是将Controller的方法返回的对象转换为指定的格式(如JSON、XML等)后,直接写入到HTTP响应的body中,而不是通过视图解析器来解析为指定的视图。
    3. @Controller
      1. 告诉Spring框架,这个类是一个控制器类的候选;
      2. 当Spring框架扫描应用程序的类时,它会查找带有@Controller注解的类,并自动将它们注册为Spring应用程序上下文中的bean。
      3. @Controller是Spring框架提供的一个注解,用于标识一个类为Spring MVC的控制器组件(Controller)。被@Controller注解的类代表一个控制器类,其中可以包含多个处理请求的方法。
    4. @Autowired
      1. 它对类成员变量、方法及构造函数进行标注,让Spring完成bean自动装配的工作;
      2. 可以通过@Autowired注入service类,直接调用service类中方法。
    5. @Service
      1. 标记当前类是一个service类;
    6. @RestController和@Controller的区别:
      • 返回内容类型:
      1. @RestController:该注解下的方法只能返回String、Object、Json等实体对象,无法直接返回JSP、HTML等模板页面;
      2. @Controller:该注解下的方法可以直接通过返回String来跳转到jsp、ftl、html等模板页面。同时,如果在方法上加上@ResponseBody注解,也可以返回实体对象。
      • 处理方式:
      1. @RestController:在返回数据时,它会自动将数据转换为JSON格式,并返回给前端。这使得前端可以直接接收JSON数据进行处理,无需再进行额外的数据格式转换。
      2. @Controller:在返回数据时,它通常与视图解析器(如InternalResourceViewResolver)配合使用,以返回JSP、HTML等页面。视图解析器会根据返回的String值来解析对应的页面,并将其呈现给前端用户。
    7. @Resource和@Autowired有什么区别:
    1. 来源不同:@Resource注解是由J2EE提供的,而@Autowired注解则是由Spring框架提供的。

    2. 注入方式不同:@Resource注解默认是按照名称(byName)进行注入的,如果没有指定名称,则会自动按照字段名或setter方法名作为bean的名称进行查找。而@Autowired注解默认是按照类型(byType)进行注入的,它会根据bean的类型来自动查找匹配的bean。

    3. 是否支持null值:@Resource注解在找不到匹配的bean时,会尝试按照名称进行注入,如果还找不到则会回退到按照类型进行注入。而@Autowired注解在找不到匹配的bean时,会尝试按照类型进行注入,如果还找不到则会抛出异常,除非明确设置了required属性为false,表示该依赖不是必须的。

    4. 是否支持null值注入:@Autowired注解支持将依赖设置为null,只需要在注解上设置required属性为false即可。而@Resource注解则不支持将依赖设置为null。

    5. 是否支持多个实现类的注入:当接口存在多个实现类时,@Autowired和@Resource都需要通过名称来指定要注入的实现类。如果无法通过名称匹配到对应的实现类,则@Autowired会尝试按照类型进行注入,而@Resource则会抛出异常

  • springmvc接收参数
  1. 使用参数值的方式直接接收,(前台参数名和后台参数名要一致)
        @RequestMapping("easyc")
        @ResponseBody
        public String easyc(String name,String sex) {
            return "接收到前台参数name: "+name+"性别:"+sex;
        }
  2. 使用Map的形式来接收参数
        @RequestMapping("easyd")
        @ResponseBody
        public String easyd(@RequestParam Map params) {
            return "接收到前台参数"+params;
        }
  3. 使用封装对象的方法来接收参数
        @RequestMapping("easye")
        @ResponseBody
        public String easye(Staff staff,HttpSession session) {
            System.out.println(session.getId());
            return "接收到前台参数"+staff;
        }
  • ModelAndView
    1. Model返回数据的形式 ModelAndView 中的model数据放到域对象中 默认放到request;
      //1
          @RequestMapping("easyf")
          public String easyf(Map map) {
              map.put("name","tom");
              return "index.jsp";
          }
          //2
          @RequestMapping("easyg")
          public String easyg(Model model) {
              model.addAttribute("name","tom");//也是放到map中
              return "index.jsp";
          }    
          //3
          @RequestMapping("easyh")    
          public ModelAndView easyh() {
              ModelAndView mav;
              mav=new ModelAndView("index.jsp");
              mav.getModel().put("name", "tom");
              return mav;
          }
          

       

  • springMVC运行原理
  •  

posted @ 2023-12-04 20:42  卡皮巴拉  阅读(10)  评论(0编辑  收藏  举报