精华内容
下载资源
问答
  • 在controller加注解
    2021-03-06 11:11:25

    Controller注解

    源码

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Controller {
        String value() default "";
    }
    

    注解分析

    1、@Target注解表示该注解只能作用在类,接口(包括注释类型)或枚举声明上
    2、@Retention,该注释将由编译器记录在类文件中,并在运行时由JVM保存,因此可以通过反射方式读取该注解
    3、@Documented,该注解的行为能够被记录
    4、@Component,表示Controller注解是spring一个组件

    作用

    1、创建控制器对象
    2、接收请求
    3、处理结果

    更多相关内容
  • @Controller注解

    千次阅读 2021-03-09 20:44:43
    Spring从2.5版本后开始引入注解,用户可以使用@Controller,@RequestMapping,@RequestParam,@ModelAttribute等类似这样的注解。@Controller用于标记一个类,使用它标记的类就是一个SpringMVC Controller 对象,即一个...

    Spring从2.5版本后开始引入注解,用户可以使用@Controller,@RequestMapping,@RequestParam,@ModelAttribute等类似这样的注解。

    @Controller用于标记一个类,使用它标记的类就是一个SpringMVC Controller 对象,即一个控制器类。Spring 使用扫描机制查找应用程序中所有基于注解的控制器类。分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用了@RequestMapping注解的方法才是真正处理请求的处理器。为保证Spring能找到控制器,需要完成两件事:

    >>在Spring MVC的配置文件的头文件中引入spring-context

    >>使用元素,该元素的功能为:启动包扫描功能,以便注册带有@Controller,@Service,@repository,@Component等注解的的类成为Spring的Bean

    >>base-pavckage 属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理

    ·配置文件如下:

    应该把所有控制器类都放在基本包中,并且指定扫描该包,即org.fkit.controller,而不是指定扫描org.fkit包,以免Spring MVC扫描了无关的包

    现在我们演示如何使用@Controller注解

    packageorg.fkit.controller;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;

    @Controllerpublic classHelloWorldController{

    @RequestMapping("/helloWorld")publicString helloWorld(Model model) {

    model.addAttribute("message", "Hello World!");return "helloWorld";

    }

    }

    HelloWorldController是一个基于@Controller注解的控制器,@RequestMapping注解用于映射一个请求,value = "/helloWorld"表示请求由helloWorld方法来进行处理。helloWorld方法接收一个org.springframework.ui.Model类型的参数,本例在model中添加了一个名为"message"的字符串对象。该对象可以在返回视图当中通过request对象获取。最后,方法返回一个字符串"hello world"作为视图名称。

    http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

    http://www.springframework.org/schema/mvc

    http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-4.2.xsd">

    /WEB-INF/content/

    .jsp

    由于使用了注解类型,因此不需要再在配置文件中使用XML扫描Bean,指定需要Spring扫描org.fkit.controller包及其子包下面的所有java文件。

    配置视图解析器InternalResourceViewResolver来解析视图,将View呈现给用户 。prefix表示视图的前缀,suffix表示视图的后缀,返回的视图字符串是"helloWorld",经过视图解析器之后,则视图的完整路径为:/WEB-INF/content/helloWorld.jsp。

    此处没有配置处理映射器和处理器适配器,当用户没有配置这两项时,Spring会使用默认的处理映射器和处理器适配器处理 请求。

    测试URL:http://localhost:8080/ControllerTest/helloWorld

    20180201121212731353.png

    展开全文
  • controller的各种注解

    千次阅读 2020-06-09 10:47:58
    RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。 @Autowired @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注...
    @RequestMapping("/***/***")
    

    RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

    @Autowired
    

    @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作

    @GetMapping,处理get请求
    @PostMapping,处理post请求
    @PutMapping,处理put请求
    @DeleteMapping,处理delete请求
    
    @RequiresPermissions(**:**:**)
    

    验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。
    是shiro的常用注解
    执行这个方法会判断用户有没有相应的权限
    会在某个地方进行配置,比如controller层其xxx1/xxx2/xxx3的url路径访问相应资源就可以正常访问。

    @PathVariable
    

    占位符映射
    @PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
    在这里插入图片描述

    @Validated
    

    spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
    现在实体类bean上声明需要被校验的字段

    @NotBlank(message = "姓名不能为空", groups={GroupOne.class, GroupTwo.class})
    	private String name;
    

    2.在controller上声明需要对数据进行校验

    @ResponseBody
    	@PostMapping("/save")
    	@RequiresPermissions("person:person:add")
    	public R save(@Validated(GroupOne.class) PersonDO person1, BindingResult result1,
    			@Validated(GroupTwo.class) PersonDO person2, BindingResult result2, HttpServletRequest request) {
    		if (StringUtils.equals("2", person1.getPoliticalStatus())) {
    			validate(result2);
    		} else {
    			validate(result1);
    		}
    
    		person1.setCreator(getUser().getUserId());
    		if (personService.save(person1, getUser(), request) > 0) {
    			return R.ok();
    		}
    		return R.error();
    	}
    

    当输入不能满足条件是,就会抛出异常,而后统一由异常中心处理

    @RequestParam
    

    将请求参数绑定到你控制器的方法参数上
    @RequestParam三个属性:

    @RequestParam(value=”参数名”, required=true/false, defaultValue=””)

    (1)value:请求参数名(必须配置)单一参数时,可简化如下:

       /**
        * @Description:    url参数中的name必须要和@RequestParam("name")一致
        * @Author:         vdi100
        */
        @GetMapping("edit1")
        public String edit1(@RequestParam("userId") Integer userId, Model model) {
            System.out.println("*******************" + userId);
            model.addAttribute("userId" , userId);
            return "/admin/ronghe/rongheMobileList/edit";
        }
        /**
         * @Description:    url参数中的name必须要和@RequestParam("name")一致
         *                  参数名字不一样
         * @Author:         vdi100
         */
        @GetMapping("edit2")
        public String edit2(@RequestParam("userId") Integer id, Model model) {
            System.out.println("*******************" + id);
            model.addAttribute("id" , id);
            return "/admin/ronghe/rongheMobileList/edit";
        }
    

    (2)required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)

       /**
        * @Description:    required = true时必须有参数id,否则会报错
        *                  required = false时参数id可不传,默认为null,所以此时参数类型不能为int
        * @Author:         vdi100
        */
        @GetMapping("edit3")
        public String edit3(@RequestParam(value = "id", required = true) Integer id, Model model) {
            System.out.println("*******************" + id);
            model.addAttribute("id" , id);
            return "/admin/ronghe/rongheMobileList/edit";
        }
    

    (3)defaultValue:默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false;如果没有传该参数,就使用默认值(可选配置)

       /**
        * @Description:    设置defaultValue值时,required无论设置是何值,都默认为false
        * @Author:         vdi100
        */
        @GetMapping("edit4")
        public String edit4(@RequestParam(value = "id", required = false, defaultValue = "10") Integer id, Model model) {
            System.out.println("*******************" + id);
            model.addAttribute("id" , id);
            return "/admin/ronghe/rongheMobileList/edit";
        }
    

    @RequestParam接收前台传递过来的数组:

    	@PostMapping("/batchRemove")
    	@ResponseBody
    	@RequiresPermissions("person:person:batchRemove")
    	public R remove(@RequestParam("ids[]") Integer[] ids) {
    		personService.batchRemove(ids);
    		return R.ok();
    	}
    

    @RequestParam接收前台传递过来的Map<String, Object>:

    @GetMapping("/selection")
    	@RequiresPermissions("person:person:person")
    	String personSelection(Model model, @RequestParam Map<String, Object> params) {
    		model.addAttribute(session_user_flag, JSONObject.toJSON(getUser()).toString());
    		model.addAttribute("params", params);
    		return "person/person/personSelection";
    	}
    
    @Valid
    

    用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。

    	@ResponseBody
    	@PostMapping("/plusSave")
    	@RequiresPermissions("person:pioneerIndex:add")
    	public R plusSave(@Valid PioneerIndexDO pioneerIndex, BindingResult result){
    		validate(result);
    		if(pioneerIndexService.save(pioneerIndex)>0){
    			return R.ok();
    		}
    		return R.error();
    	}
    

    然后在 PioneerIndexDO 类中添加验证信息的要求:

    @NotBlank(message = "月份不能为空")
    	private String month;
    

    当然也可以添加其他验证信息的要求:
    在这里插入图片描述

    展开全文
  • controller注解

    2017-04-08 17:35:34
    controller注解
  • Controller中的注解

    2022-04-04 10:04:21
    可以用注解@Slf4j @RestController 注解相当于@ResponseBody + @Controller一起的作用,方法不用再添加@ResponseBody 注解,使用该注解时该方法无法返回jsp页面,而是返回json数据,所以SSM一般很少使用,...

    示例:

    @Slf4j
    @RestController
    @Api(tags = "产品销售数据")
    @RequestMapping("/v1/sell/tatrade")
    @QueryConditions({
            @QueryCondition(paramKey = "portCode", entityKey = "portCode", operation = JpaConditionOperator.IN, logic = JpaConditionLogic.AND),
            @QueryCondition(paramKey = "salesType", entityKey = "salesType", operation = JpaConditionOperator.IN, logic = JpaConditionLogic.AND),
            @QueryCondition(paramKey = "audit", entityKey = "audit", operation = JpaConditionOperator.EQ, logic = JpaConditionLogic.AND)
    })
    public class TaTradeController extends AbstractCrudAuditBaseControllerNew<
            TaTradeReqVo, TaTradeResVo, TaTradeDto,
            ITaTradeReqVoDtoMapper, ITaTradeResVoDtoMapper, ITaTradeService> {
    
        @Autowired
        private ITaTradeService taTradeService;
    
    }
    

    @Slf4j
    如果不想每次都写private final Logger log = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j
    @RestController
    注解相当于@ResponseBody + @Controller合在一起的作用,方法不用再添加@ResponseBody 注解,使用该注解时该方法无法返回jsp页面,而是返回json数据,所以在SSM一般很少使用,但是在SpringBoot项目中比较常见
    @Api
    Swagger的注解,该注解用于Controller类上,表示对类的说明
    @RequestMapping
    将url映射到某个处理类或者特定处理请求的方法
    如果不指定方法类型的话,可以使用 HTTP GET/POST 方法请求数据,@GetMapping、@PostMapping、@PutMapping、@DeleteMapping
    @Autowired
    主要用于注入某个接口
    @RequestBody
    将方法参数绑定到HTTP请求Body上,前端传递JSON字符串时,需要使用该注解把字符串绑定到后台对应的实体类中,但必须保证属性名一样

    展开全文
  • SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller标记一个类是Controller,然后使用@RequestMapping和@RequestParam等一些注解用以定义URL 请求...
  • 使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会...使用过程中,Service层中的实现类头上@Compopnet注解,Controller类头@Controller注解,便完成了配置。例如Controller中当我们调用...
  • 文章目录开篇 - 前奏正文 - 间奏配置处理自定义注解java中元注解解释方法拦截器实现类使用结尾 - 尾声感悟 - 高潮 开篇 - 前奏 最近项目后台针对报表查询进行优化,为了避免打开页面慢的问题,新增首次加载不返回...
  • controller注解校验

    2020-09-17 17:40:55
    controller注解校验 1、引入依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.3.1.Final</version>...
  • @Api 用于类;表示标识这个类是swagger的资源 tags–表示说明 ...@Api(value="用户controller",tags={"用户操作接口"}) @RestController public class UserController { } 效果图: ...
  • 但是方法上加上@Transactional注解,会导致访问整个controller的方法报404。一种解决方法如下: **一,注入PlatformTransactionManager。 ** @Resource private PlatformTransactionManager transactionManager; ...
  • 本篇介绍下Controller参数注解@RequestParam的使用方法,使用时的注意事项,以及与HttpServletRequest#getParameter方法的区别;
  • Controller注解是将返回结果按照MVC视图解析,而RequestController注解则表明这就是返回的主体部分,不需要解析,也就是你返回什么东西就会页面上呈现什么。当然这又涉及到了前后端通信的数据传输格式,一般来说...
  • Controller层各注解总结

    2022-05-12 14:45:47
    Controller层个人常用注解总结
  • 这里列举Controller的一些注释,像以下三种 @Controller @RequestMapping("/session") @SessionAttributes(“userVo”) 第一个@Controller的意思就是注明这个方法是控制器的意思,标明了这个方法是控制器就可以...
  • Controller层参数注解

    千次阅读 2021-03-06 14:53:19
    Controller层常用的注解 注解 作用 @Controller 处理http请求 @RestController 与@ResponseBody配合@Controller相同。用于返回Json @PathVariable 获取url中的参数 @RequestParam 获取请求参数的值 ...
  • 目录 1、编写测试类并实现controller接口 2、配置spring-mvc.xml 3、要跳转的页面test.jsp(放在/WEB-INF/jsp/目录下) ...public class TestController implements Controller { public M...
  • 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两...1、@Controller注解类型用于声明Spring类的实例是一个控制器(讲IOC时还提到了另外3个注解); @Component 组件 @Service serv
  • @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date startTime; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-...
  • 我们在controller层经常使用@RequestMapping注解控制器方法,那么我们实际开发中是否可以使用自定义的注解简化开发流程呢?要解决这个问题首先需要了解spring mvc的实现原理,具体可以参考博主的这篇博客Spring源码...
  • NULL 博文链接:https://ping2010.iteye.com/blog/2002064
  • 主要介绍了@Controller、@RestController注解区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 项目场景:自定义参数检验注解在controller层不生效 用户输入参数需要做特殊字符校验 问题描述: 该注解在entity生效,但是在controller层不生效 @GetMapping("***") public ApiResponse<vo> list(@Pattern ...
  • 本文代码已整理上传 github ...但是对于 spring mvc 接收 request 参数来说, 如果接收的是 json 数据, 需要参数前@RequestBody注解 接收 form 表单提交的数据则不需加注解 如何做到自动接...
  • controller常用注解讲解

    千次阅读 2018-09-29 11:29:17
    @RequestMapping 来映射请求,也就是通过它来指定控制器...一般异步获取数据时使用,使用@RequestMapping后,返回值通常解析为跳转路径, 加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTT...
  • 使用@Controller注解定义一个Controller控制器 @Controller用于标记一个类上,使它标记的类就是一个SpringMVCcontroller对象。分发处理器将会扫描使用了该注解的类的方法并检测该方法是否使用使用改了@...
  • Controller中使用swagger注解的正确姿势

    千次阅读 2021-04-05 10:23:26
    使用swagger的时候有些注解没有正确使用会导致测试时...在Controller中常用的注解有: @Api 用它标识的Controller称为一个模块 tag:标识模块名称 @ApiOperation 标识一个接口,会呈现一个模块下 vlue: 标识

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 346,062
精华内容 138,424
关键字:

在controller加注解

友情链接: Solaris10_C.rar