zoukankan      html  css  js  c++  java
  • springmvc基础学习3---注解简单理解

    1:@Controller

    用来注解这个bean是MVC模型中的一个C 会被spring的auto-scan扫到纳入管理。Spring mvc框架中的action层注入,也就是控制层。
    控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。

    2:@Resource

    @resource注解就是把一个bean注入到当前的类中,可以不必通过配置文件或者导包的方式注入就可以使用该bean,默认是ByName的方式注入

    例如可以省去创建get和set方法,(就直接使用备注解的属性)

    ----------------------------------------------------------借鉴别人的博客-------------------------------------------------------

    Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。
      @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
      @Resource装配顺序
      1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
      2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
      3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
      4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

    ----------------------------------------------------------借鉴别人的博客-----------------------------------------------------
    3:@RequestMapping
    它一般标注在方法上,当HttpServletRequest请求参数满足@RequestMapping的限定,即可触发被注解的方法。例如:@RequestMapping("login")当请求
    HttpServletRequest有login即可触发被注解的方法。

    4:@Service

    @Service是java Spring框架的注解,表示这是一个bean。它和@Component差不多,只不过@Component通常用于标注一个Model,而@Service通常用于标注一个业务处理类
    @Service("demoService")表示这个bean的名字是“demoService”

    @Service注解告诉spring创建一个实现类的实例
    就是不用再spring里配置bean,就是因为这个@Service

    ----------------------------------------------------------------------------------------------------------------------------------------

    Spring2.5为我们引入了组件自动扫描机制,他在类路径下寻找标注了上述注解的类,并把这些类纳入进spring容器中管理。

    @Service用于标注业务层组件

    @Controller用于标注控制层组件(如struts中的action)

    @Repository用于标注数据访问组件,即DAO组件

    @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

    
    

     5.@RequestParam

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取。

    后端代码:
    @RequestMapping("testRequestParam") public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) { System.out.println(inputStr); int inputInt = Integer.valueOf(request.getParameter("inputInt")); System.out.println(inputInt); // ......省略 return "index"; }
     前台代码:
    <form action="/gadget/testRequestParam" method="post"> 参数inputStr:<input type="text" name="inputStr"> 参数intputInt:<input type="text" name="inputInt"> </form>

    可以看到spring会自动根据参数名字封装进入,我们可以直接拿这个参数名来用

    ------------------------------------------------------------------------------------------
    6:
    @PathVariable
    @PathVariable是用来对指定请求的URL路径里面的变量(地址栏json用) 
    eg: Java代码 @RequestMapping(value = "form/{id}/apply", method = {RequestMethod.PUT, RequestMethod.POST})
    {id}在这个请求的URL里就是个变量,可以使用@PathVariable来获取

    7:@responsebody
    @responsebody表示该方法的返回结果直接写入HTTP responsebody中
    一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
     *GET模式下,这里使用了@PathVariable绑定输入参数,非常适合Restful风格。因为隐藏了参数与路径的关系,可以提升网站的安全性,静态化页面,降低恶意攻击风险。
    POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。
    @ResponseBody可以标注任何对象,由Srping完成对象——协议的转换
    
    

     

    
    
  • 相关阅读:
    Educational Codeforces Round 83 --- F. AND Segments
    Educational Codeforces Round 83 --- G. Autocompletion
    SEERC 2019 A.Max or Min
    2019-2020 ICPC Southwestern European Regional Programming Contest(Gym 102501)
    Educational Codeforces Round 78 --- F. Cards
    今天我学习了一门全新的语言
    codeforces 1323D 题解(数学)
    Educational Codeforces Round 80 (Div. 2) 题解 1288A 1288B 1288C 1288D 1288E
    Educational Codeforces Round 81 (Div. 2) 题解 1295A 1295B 1295C 1295D 1295E 1295F
    Codeforces Round #617 (Div. 3) 题解 1296C 1296D 1296E 1296F
  • 原文地址:https://www.cnblogs.com/kaiwen/p/6522189.html
Copyright © 2011-2022 走看看