精华内容
下载资源
问答
  • Controller注解

    2020-07-01 23:22:06
    java Spring-MVC之Controller注解 1.Controlller简介 Controller是MVC模式中的控制层,主要用来处理浏览器的访问请求,在编写类时在类上加上@Controller注解表明这是一个控制器。 2.Controller中常用的注解 2.1.@...

    java Spring-MVC之Controller注解

    1.Controlller简介

    Controller是MVC模式中的控制层,主要用来处理浏览器的访问请求,在编写类时在类上加上@Controller注解表明这是一个控制器。

    2.Controller中常用的注解

    2.1.@RequestMapping注解
    • 可以标明在类上也可以标明在方法上
    @RequestMapping(value = "getUser/{name}",method = RequestMethod.POST)
    @RequestMapping("/getOneInt")
    
    • 该注解有两个常用的属性,value表示访问路径,method表示请求的方法,不指定method时,任何形式的访问请求都可以接受。
    2.2 @GetMapping与注解@PostMapping
    • @GetMapping(“getUser”)与@RequestMapping(value = “getUser”,method = RequestMethod.GET)是一样的
    • @PostMapping(“getUser”)与@RequestMapping(value = “getUser”,method = RequestMethod.POST)是一样的
    • 当然还有@DeleteMapping @PatchMapping等注解,对应各种访问方式
    2.3 @RequestParam注解
    • @RequestParam是用来标注方法参数的,下面第一种和第二种是一样的,浏览器访问提供的参数名字应该与name一致,但是当该注解设置了value属性时,参数名字应当与设置的值na一样。required表示该参数是否必传,默认是false,当为true时,没有传将报错。

    • 注意:用@RequestParam标记参数,浏览器访问的参数是拼接在url之后的。

    @GetMapping("getOneInt1")
        public  String getOne1(@RequestParam String name){
            return "int,"+name;
        }
    @GetMapping("getOneInt1")
        public  String getOne1(String name){
            return "int,"+name;
        }
    @GetMapping("getOneInt1")
        public  String getOne1(@RequestParam(value = "na",required= "false") String name){
            return "int,"+name;
        }
    
    2.4 @RequestBody注解
    • @RequestBody也是用来标注访问参数的,该参数必须是一个自定义的类。只是与 @RequestParam不同的时,该参数是保存在请求体中的json格式,采用url拼接的访问方式是行不通的。json格式的参数名必须与类中的属性保持一致,且类型能转换为类中的属性的类型。
        public class Param1 {
        
        private String name;
        private Integer age;
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
     public  String getOne1(@RequestBody Param1 param1){
            System.out.println(param1);
            return "int,"+param1.getName();
        }
    
    2.5 @PathVariable注解
    • @PathVariable也是用来修饰方法参数的,表明该参数是写在浏览器访问url中的。
        @RequestMapping(value = "getUser/{name}")
        public String getUser(@PathVariable String name){
            return " hello PathVariable,"+name;
        }
    
    2.6 @ResponseBody注解
    • 正常情况下,Controller返回的是模型视图
    • @ResponseBody可声明在类上,也可声明在方法上,表明方法的返回类型为json格式,不再返回视图。
    • 注意:当返回类型为实体类时,该类需要 implements Serializable。
        @RequestMapping("/getOneInt")
        @ResponseBody
        public  String getOne2(int n){
            return "int,"+n;
        }
    
    2.7 @RestController注解
    • 是一个REST风格的注解,其作用相当于@Controller与@ResponseBody的联合使用,类中所有方法返回的类型均为json格式。使用此注解后,方法上的@ResponseBody注解可以去掉了。
      Controller与@ResponseBody的联合使用,类中所有方法返回的类型均为json格式。使用此注解后,方法上的@ResponseBody注解可以去掉了。
    注意:浏览器访问时,url中的参数是不分类型的,但是Controller中方法的参数是有类型的,因此必须保证传过来的参数能转换为接受的参数类型。url中的参数可以多于接收的,但必须包含方法的接收参数且名字一致。
    展开全文
  • 众所周知,在我们开发的过程中,需要将后台查询的数据...而我们在进行spring框架开发的时候,常常又少不了@Controller注解,它的作用就是配合@RequestMapping注解将类中的方法映射成路径 而之后又形成了@RestContr...

    众所周知,在我们开发的过程中,需要将后台查询的数据多数是以json的格式传输给前台展示。包括前台传输数据时也要以json的格式传输给后台。那么这一流程的转换由哪个注解控制呢?就是由@responseBody完成

    而我们在进行spring框架开发的时候,常常又少不了@Controller注解,它的作用就是配合@RequestMapping注解将类中的方法映射成路径

    而之后又形成了@RestController注解,它的作用就是将@Controller和@ResponseBody结合,包括了该两个注解的作用。

    这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!
    展开全文
  • @Controller 注解

    千次阅读 2019-08-20 22:04:43
    org.springframework.stereotype.Controller注解类型用于指示sping类的实例是一个控制器。 @Controller用于标记一个类,使他标记的类就是一个SpingMVC Controller对象,即是一个控制器。Sping使用扫描机制查找程序...

    org.springframework.stereotype.Controller 注解类型用于指示sping 类的实例是一个控制器。

    @Controller 用于标记一个类,使他标记的类就是一个SpingMVC Controller 对象,即是一个控制器。Sping使用扫描机制查找程序中所有基于注解的控制器类。分发处理器会扫描使用注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用@RequestMapping 注解的方法才是正真处理请求的处理器。

    为了使Spring能找到控制器,使用<context:component-scan/>元素,该功能为:启动扫描包功能,以便注册带有@Controller , @Service ,@repository ,@Component 等注解的类成为Sping的Bean.   bask-package属性指定了需要扫描的类包。

    展开全文
  • Controller注解切入了解spring注解原理

    万次阅读 多人点赞 2017-12-12 14:30:50
    Spring容器框架包org.springframework.stereotype下Controller注解接口源代码如下: @Target({java.lang.annotation.ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @...

    Spring容器框架包org.springframework.stereotype下Controller注解接口源代码如下:

    @Target({java.lang.annotation.ElementType.TYPE})

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    @Component

    public @interface Controller

    {

     public abstract String value();

    }

    @Target({java.lang.annotation.ElementType.Type})表是注解使用在类上;

    @Retention(RetentionPolicy.RUNTIME)表示注解在程序运行状态下还有效;

    @Component表示该类对象以默认单例模式存放在spring容器框架中;

    @Documented无关重要,略;

     

    这个注解在程序运行状态下还有效。再看其他的注解@Respository,@Ser vice等,这两个注解的源代码和Controller的源代码一样,除了接口名,都共有一个value抽象函数。

     

    这些所有的注解都会被component注解接口注解,所有“继承”了component注解接口的注解修饰用户的类会被spring中的注解处理器获取(getAnonations()),判定存在component注解后,注解处理器会在spring容器框架中根据用户类的全限定名通过java的反射机制创建这个用户类的对象,并放到spring容器框架中进行管理。

    以上这些描述是我基于对注解系统的理解而描述的。
           bean创建的几个重要步骤:

    1) 创建bean实例,也就是bean的实体化,创建过程不仅仅只有java的反射机制,还结合了动态代理的方式

    2) 记录创建bean的objectFactory

    3) 属性注入

    4) 初始化bean

    5) 注册disposablebean

    Spring bean的生命周期:

     

           说完bean的创建过程,那spring是如何找到这些bean的类文件的呢?

    我们在spring的配置文件中,有这样一个标签节点<context:component-scan>,在这个标签的属性base-package中设置要扫描的包。那么可以推断,spring框架中肯定有根据base-package属性扫描得到所有需要管理的bean对象,这个节点中的所有属性会被放入扫描模块对象工具中去,结果就是将所有的bean对象放到spring的容器中去。

    注意:spring容器框架额注解都会在running状态下的,所以运行时加载的文件都是已经编译后的class文件.所以使用的是asm技术读取class文件的字节码转化成MetadataReader中的AnnotationMetadataReadingVisitor结构.

           标签<context:component-scan>的解析总结如下:

    1)根据配置利用asm技术扫描.class文件,并将包含@Component及元注解为@Component的注解@Controller、@Service、@Repository或者还支持Java EE 6的@link javax.annotation.ManagedBean和jsr - 330的 @link javax.inject.Named,如果可用。的bean注册到beanFactory中

    2)注册注解后置处理器,主要是处理属性或方法中的注解,包含:

     注册@Configuration处理器ConfigurationClassPostProcessor,

    注册@Autowired、@Value、@Inject处理器AutowiredAnnotationBeanPostProcessor,

    注册@Required处理器RequiredAnnotationBeanPostProcessor、在支持JSR-250条件下注册javax.annotation包下注解处理器CommonAnnotationBeanPostProcessor,包括@PostConstruct、@PreDestroy、@Resource注解等、支持jpa的条件下,注册org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor处理器,处理jpa相关注解注册@EventListener处理器EventListenerMethodProcessor

           注解处理器的的实例化和处理器的注册时同步的,实例化后放入到beanFactory的beanProcessors列表中去。

           Spring框架的核心就是IOC,通过controller一类注解的bean的实例化过程可以大体总结spring注解的工作原理:

           1)利用asm技术扫描class文件,转化成Springbean结构,把符合扫描规则的(主要是是否有相关的注解标注,例如@Component)bean注册到Spring 容器中beanFactory

    2)注册处理器,包括注解处理器

    4)实例化处理器(包括注解处理器),并将其注册到容器的beanPostProcessors列表中

    5)创建bean的过程中,属性注入或者初始化bean时会调用对应的注解处理器进行处理。

     

     

           举例注解@Autowired 。对于这个注解,您需要在xml中配置这个注解的处理器

    AutowiredAnnotationBeanPostProcessor这个处理器会扫描容器中所有的bean对象,发现bean中拥有@Autowired注解的时候会自动去找到容器中和这个注解修饰类型匹配的bean对象,并注入到对应的地方去。

           那为什么AutowiredAnnotationBeanPostProcessor这个处理器对象我怎么在配置文件中没有看到设置呢?    那是因为在spring解析<context:component>标签的时候默认这个注解被隐示配置了,还有其他的注解处理器,如CommonAnnoationBeanPostProcessor

                          talk is cheap  ,show you the code and the doc,更多的分享内容请关注我的工作号:大白共图社。公众号会有很多的github开源社区拿来即用项目源码以及相关的文章。欢迎关注。

                                                                           

    展开全文
  • @Controller、@RestController...一、@Controller注解@Controller 是Spring框架提供的注解。@Controller标识的类,该类代表控制器类(控制层/表现层)。这里控制层里面的每个方法,都可以去调用@Service标识的类(业务...
  • 文章目录controller注解运行结果RequestMapping注解value属性method属性 controller注解 使用controler注解就可以将一个普通的java类变成一个servelet 例如 @Controller//使用controler注解就可以将一个普通的java类...
  • SpringMVC之@Controller注解

    千次阅读 2018-10-07 11:30:57
    @Controller注解  Controller注解用于指示Spring类的实例是一个控制器,相对于实现Controller接口变得更加简单。而且实现Controller接口只能处理一个单一的请求,而是用@Controller注解可以支持同时处理多个请求...
  • Spring之Controller注解

    2018-07-23 22:13:05
    在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会...使用过程中,在Service层中的实现类头上加@Compopnet注解,在Controller类头加@Controller注解,便完成了配置。例如在Controller中当我们调用...
  • 本文目录Controller注解Controller 注解用法Controller 接收请求参数通过形参接收请求参数通过实体Bean 接收参数通过HttpServletRequst接收请求参数通过RequestParam注解接收请求参数PathVariable注解接收请求参数 ...
  • @ Controller注解(六)

    2019-05-19 23:01:17
    使用@ Controller注解的类不需要继承特定的父类或者实现特定的接口, Controller接口的实现类只能处理一个单一请求动作,而@Controller注解的控制器可以支持同时处理多个请求动作, @Controller用于标记一个类,使用它...
  • 引言 Spring从2.5版本之后开始引入...@Controller注解用来做什么的? 以前在编写Controller方法的时候,需要开发者自定义一个Controller类实现Controller接口,实现handleRequest方法返回ModelAndView。并且需要在...
  • 一.Controller注解的使用 1. org.springframework.stereotype.Controller注解类型用于指示Spring类的实例,是一个控制器 2. 其注解形式为@Controller。 3. 该注解在使用时不需要在实现Controller接口,只需要将@...
  • Spring boot扫描不到controller注解

    千次阅读 2017-07-20 13:43:51
    Spring boot扫描不到controller注解
  • 在Spring中,很多注解在用法上是相似的,也有很多的注解命名上很相似,稍不注意就会让人误用,今天就给大家说一下@Controller注解和@RestController这两个注解的用法和区别。 首先,这两个注解的使用位置上都是用在...
  • SpringMVC自动扫描@Controller注解的bean

    万次阅读 2018-01-26 19:11:26
    SpringMVC自动扫描@Controller注解的bean   若要对@Controller注解标注的bean进行自动扫描,必须将放置在dispatcherservlet的配置文件中,若配置在ContextLoaderListener的配置文件...
  • springboot中的controller注解没有生效 , 启动的Application类没有在controller的父目录或同级目录 转载于:https://www.cnblogs.com/zipon/p/9545597.html
  • Controller注解形式做Spring MVC开发

    千次阅读 2016-01-08 21:12:20
    Controller注解形式做Spring MVC开发
  • Eclipse 用了spring @Controller注解失效

    千次阅读 2019-04-01 21:58:18
    最近发现Eclipse用了@Controller注解后eclipse就没了提示, 然后怎么修改也没有用 最后把@Controller注释了, 发现提示又回来了。所以@Controller留到最后写吧。 如果又更好的方法请留言。 ...
  • 1.加入@Controller注解后编写程序无法自动提示,去掉了@Controller注解后就可以了! 2.解决方案:将@Controller替换为@RestController后,可以完美的提示了! ...
  • springMVC自动扫描@controller注解的bean

    千次阅读 2017-06-04 10:45:52
    若要对@controller注解标注的bean进行自动扫描,必须将放置在dispatcherservlet的配置文件中,若配置在ContextLoaderListener的配置文件applicationContext.xml中则不起作用 在spring mvc中@Controller...
  • 在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会采用Spring...使用过程中,在Service层中的实现类头上加@Compopnet注解,在Controller类头加@Controller注解,便完成了配置。例如在 Controll
  • @Controller注解

    千次阅读 2020-03-22 19:10:35
    } @Controller注解: 用在类上面,表示这个类是一个Controller,比如web controller 该注解可以被当作是@Component注解的一个特殊实现 允许通过类路径扫描自动检测实现类 它通常是和基于注解@RequestMapping的方法...
  • @RequestMapping/@Controller注解在实例化RequestMappingHandlerMapping的时候处理。先从ApplicationContext获取所有已注册Bean,然后依次判断是否包含这两个注解,如果是则把RequestMapping标注的method注册到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,584
精华内容 8,233
关键字:

controller注解