SpringMVC基本注解的介绍

本文详细解析了 Spring MVC 中常用注解的功能与应用场景,包括 @Controll、@RequestMapping、@SessionAttributes、@ModelAttribute 和 @ResponseBody 等。通过具体示例展示了如何利用这些注解实现请求映射、数据绑定及会话管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


@Controll    //声明需扫描的类,这个注解主要为了,你发起请求的时候,可以从这个类中去找应该访问那个方法

@RequestMapping("/user")     //相当于@RequestMapping(value="/user") ,这个类先拦截比如: xxx/项目名字/user/xxx,项目名字后面是user的请求

@SessionAttriutes("user")    /* 相当于@SessionAttriutes(value="user"),这个是如果你model里面 ,比如model.addAttribute("user",user);添加到了model对象里面,

 然后你就可以通过HttpSession对象的getAttribute("user"),去取出来这个对象,也可以设置多个对象到HttpSession中,比如,
 @SessionAttributes(types={User.class,Student.class},value{"user","student"}) */

public class TestControl{


	@ModelAttribute("loginCheck")      //这个注解只支持一个属性value,这个方法回在你执行Controller每个方法前被执行,因此在一个的Controller映射到多个url上时候,要谨慎使用

	public void userModel1(User user,Model model){

		/*接受的user对象放入model中,然后在你@RequestMapping("loginCheck")这个注解的方法哪里可以通过model对象获取到值,看下面演示 */

		model.addObject("user",user);    

	}

	@RequestMapping("loginCheck")

	public ModelAndView userModel2(Model model,HttpSession session){

 		/*因为在执行@RequestMapping("loginCheck")前已经先走了@ModelAttribute("loginCheck")  所以Model中就有了值了 ,

	并且因为类上面有了@SessionAttributes("user"),所以你往model中放入user键的时候,HttpSession中也就有了值了,也就可以通过session.getAttribute("user") 去获取值*/

		User user=(User)model.asMap().get("user"); 

		//通过session去取值

		User user2=(User)session.getAttribute("user");

		ModelAndView m2=new ModelAndView();

		m2.setView(user);

		m2.setViewName("success.jsp");

		return m2;

	}

	@RequestMapping("pageing/{pageNumber}")

	public void userModel3(

		/* @pathVariable会获取你请求最路径的的那个值放入注解的这个pageNumber变量中,比如请求    xxxx/user/pageing/100, 然后就会把100这个值放入注解声明的这个变量里面,前提你发送的请求能到这里才可以(到user/pageing这个路径下才行),注解的参数名字一定和上面mapping中的参数名字一致才可以,一般分页会用这种方式*/

	@PathVariable int pageNumber){

		 System.out.println(pageNumber);


	}

	@RequestMapping("login4")

	public void userModel4(

	/* @RequestParam注解会把你请求带的id值放入到这个注解的变量当中,但不会影响你把id放入但user下*/

	@RequestParam int id,User user){

 		System.out.println(pageNumber);


	}

/* 在写下一个方法前说明一下,在前台用get或者post请求提交数据的时候,数据编码格式由请求头的ContentType指定,分为下面几种情况

1. application/x-www-form-urlencoded,这种情况的数据,@RequestParam,@ModelAttribute也可以处理,并且很方便,当然@RequestBody也能处理

2.multipart/form-data, @RequestBody 不能处理这种格式的数据,这种数据一般是上传文件才会指定的类型

3.application/json application/xml 等格式的数据,必须使用@RequestBody来处理,实际开发中可以使用@RequestBody注解可以很方便的处理JSON格式的数据

*/

/* 比如,前台ajax请求,如果contentType:“application/json”, data:JSON.stringify({id:1,name:"小明"}),

contentType是json数据类型,并且传过来的是json字符串 */

	@RequestMapping("ajaxRequestTest")

	public void setJson(    //方法的括号之间传的是方法的参数,中间用逗号隔开

		//@RequestBody会根据json数据,转化成对象的Object,也就是说会把json里面的数据放入user对象当中

		@RequestBody User user,HttpServletResponse response){


	//测试有没有把json数据放入对象

	System.out.println(user.getId());

	System.out.println(user.getName());

	response.setContentType("text/html;charset=utf-8");

	response.getWriter().print("{msg:\"测试成功,这个是返回给ajax的数据\"}");

	}


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值