springMVC的常用注解有哪些?,2024年最新java工程师面试题

return “success”;

}

@RequestMapping(“/testPojo”) Map用法:

@RequestMapping(“/testMap”)

public String testMap(Map<String, Object> map) {

map.put(“names”, Arrays.asList(“Tomcat”, “Eclipse”, “JavaEE”));

return “success”;

}

  @RequestMapping(“/testPojo”) ModelAndView用法:


复制代码

@RequestMapping(“/testModelAndView”)

public ModelAndView testModelAndView() {

String viewName = SUCCESS;

ModelAndView modelAndView = new ModelAndView(viewName);

modelAndView.addObject(“time”, new Date());

return modelAndView;

}

复制代码

3、@Resource和@Autowired


@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。

1、共同点

两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。

2、不同点

(1)@Autowired

@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。

复制代码

public class HelloWorld{

// 下面两种@Autowired只要使用一种即可

@Autowired

private UserDao userDao; // 用于字段上

@Autowired

public void setUserDao(UserDao userDao) { // 用于属性的方法上

this.userDao = userDao;

}

}

复制代码

@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。如下:

public class HelloWorld{

@Autowired

@Qualifier(“userDao”)

private UserDao userDao;

}

(2)@Resource

@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

复制代码

public class HelloWorld{

// 下面两种@Resource只要使用一种即可

@Resource(name=“userDao”)

private UserDao userDao; // 用于字段上

@Resource(name=“userDao”)

public void setUserDao(UserDao userDao) { // 用于属性的setter方法上

this.userDao = userDao;

}

}

复制代码

注:最好是将@Resource放在setter方法上,因为这样更符合面向对象的思想,通过set、get去操作属性,而不是直接去操作属性。

4、@PathVariable


用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。如:

复制代码

@Controller

public class TestController {

@RequestMapping(value=“/user/{userId}/roles/{roleId}”,method = RequestMethod.GET)

public String getLogin(@PathVariable(“userId”) String userId,

@PathVariable(“roleId”) String roleId){

System.out.println("User Id : " + userId);

System.out.println("Role Id : " + roleId);

return “hello”;

}

@RequestMapping(value=“/product/{productId}”,method = RequestMethod.GET)

public String getProduct(@PathVariable(“productId”) String productId){

System.out.println("Product Id : " + productId);

return “hello”;

}

@RequestMapping(value=“/javabeat/{regexp1:[a-z-]+}”,

method = RequestMethod.GET)

public String getRegExp(@PathVariable(“regexp1”) String regexp1){

System.out.println("URI Part 1 : " + regexp1);

return “hello”;

}

}

复制代码

5、@CookieValue


作用:用来获取Cookie中的值;

参数: value:参数名称   required:是否必须  defaultValue:默认值

使用案例:

复制代码

/**

  • 获取 Session

  • JSESSIONID=411A032E02A2594698F6E3F4458B9CE4

*/

@RequestMapping(“/testCookieValue”)

public String testCookieValue(@CookieValue(“JSESSIONID”) String sessionId) {

System.out.println("JSESSIONID = " + sessionId);

return “success”;

}

复制代码

6、@RequestParam


@RequestParam用于将请求参数区数据映射到功能处理方法的参数上,用例:

复制代码

/**

  • @RequestParam(“id”) 带参映射

  • @param id

  • @return

*/

@RequestMapping(“/testRequestParam”)

public String testRequestParam(@RequestParam(“id”) int id) {

System.out.println("testRequestParam " + id);

return “success”;

}

复制代码

7、@SessionAttributes


@SessionAttributes即将值放到session作用域中,写在class上面。

@SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(value 属性值),

还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(types 属性值),用例:

复制代码

package com.cqvie.yjq;

import java.util.Map;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.SessionAttributes;

import com.cqvie.model.User;

@SessionAttributes(value = {“user”}, types = {String.class})

@RequestMapping(“/springmvc”)

@Controller

public class SessionAttributesTest {

/**

  • @SessionAttributes

  •     除了可以通过属性名指定需要放到会话中的属性外(value 属性值),
    
  •     还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(types 属性值)。
    
  • 注意: 该注解只能放在类的上面,不能放在方法上面

  • @return

*/

@RequestMapping(“/testSessionAttributes”)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

Kafka实战笔记

关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图

image.png

  • Kafka入门
  • 为什么选择Kafka
  • Karka的安装、管理和配置

image.png

  • Kafka的集群
  • 第一个Kafka程序
  • image.png

afka的生产者

image.png

  • Kafka的消费者
  • 深入理解Kafka
  • 可靠的数据传递

image.png

image.png

  • Spring和Kalka的整合
  • Sprinboot和Kafka的整合
  • Kafka实战之削峰填谷
  • 数据管道和流式处理(了解即可)

image.png

  • Kafka实战之削峰填谷

image.png

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

深入理解Kafka

  • 可靠的数据传递

[外链图片转存中…(img-iyNibMxb-1712674285295)]

[外链图片转存中…(img-EiglmRqO-1712674285295)]

  • Spring和Kalka的整合
  • Sprinboot和Kafka的整合
  • Kafka实战之削峰填谷
  • 数据管道和流式处理(了解即可)

[外链图片转存中…(img-Tf7JpKeq-1712674285296)]

  • Kafka实战之削峰填谷

[外链图片转存中…(img-33OiWri8-1712674285296)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-fUE0OTKz-1712674285297)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值