【SpringMVC】@Controller和@RequestMapping注解说明

一、@Controller注解

1、说明:

用于指示Spring类的实例是一个控制器,控制器可以支持同时处理多个请求动作。

 

2、保证Spring能找到控制器:

1)在SpringMVC的配置文件的头文件中引入spring-context

2)使用<context:component-scan/>元素,启动包扫描功能。

注:<context:component-scan base-package="com.lwt.controller"/>可指定扫描包。


二、@RequestMapping注解

 

1、说明:

该注解用来映射一个请求。指示Spring用哪一个类或非法来处理请求动作。不属于参数绑定注解。

 

例如:@RequestMapping(value="/hello")

 

2、支持的属性:


3、常用属性示例:

 

1value属性:将URL映射到方法上。

 

@RequestMapping(value="/hello")

public  ModelAndView  hello(){

return ..;

}

地址:http://localhost:8080/context/hello

 

                   注:value属性是@RequestMapping注释的默认属性,如果只有唯一的属性,则可以省略该属性名。

     value属性的值也可以是一个空字符串。

 

2method属性:该属性用来指示该方法仅仅处理哪些HTTP请求方式。

   

     @RequestMapping(value="/hello",method=RequestMethod.POST)

     表示该方法只支持POST请求。

     也可以同时支持多个HTTP请求方式:

     @RequestMapping(value="/hello",method={RequestMethod.POST,RequestMethod.GET})

 

       注:如果没有指定method属性值,则请求处理方法可以处理任意的HTTP请求方式。   

 

 

3consumes属性:指定处理请求的提交内容类型(Content-Type

 

      @RequestMapping(value="/hello",method=RequestMethod.POST,consumes="application/json")

      表示该方法仅处理request Content-Type"application/json"类型的请求。

 

4produces属性:指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型。

 

     @RequestMapping(value="/hello" , method=RequestMethod.POST,produces="application/json")

     表示该方法仅处理Request请求中请求头中包含了"application/json"的请求,同时指明了返回的内容类型为application/json

 

5params属性:指定request中必须包含某些参数值时,才让该方法处理。

 

     @RequestMapping(value="/hello",method=RequestMethod.POST,params="myParam = myValue")

    表示该方法仅处理其中名为"myParam",值为myValue的请求。

 

6hearders属性:该属性指定request中必须包含某些指定的header值,才能让该方法处理请求。

 

   @RequestMapping(value="/hello" , method=RequestMethod.POST,headers="Referer=http://www.lwt.org/")

  表示该方法仅处理requestheader中包含了指定"Referer"请求头和对应值为"http://www.lwt.org/"的请求。

 

 

4ModelModelAndView

 

说明:控制器(Controller)执行业务逻辑,用于产生模型数据(Model),而视图(View),则用于渲染模型数据。

 

Spring提供了多种途径输出模型数据:

· Model和ModelMap

· ModelAndView

· @ModelAttribute

· @SessionAttributes



1Model ModelMap

 

    SpringMVC使用了Model接口存储模型数据,ModelMap接口实现了Map接口。

  

    说明:SpringMVC调用处理方法之前会创建一个隐含的模型对象,作为模型数据的存储容器。

如果处理方法为ModelModelMap类型,则SpringMVC会将数据引用传递给这些参数。

              

                添加模型数据方法:

addObject(String attributeName , Object  attributeValue);

 

 

实例一:ModelModelMap的使用

		// Controller注解用于指示该类是一个控制器,可以同时处理多个请求动作
		@Controller
		public class User1Controller {
		
			private static final Log logger = LogFactory.getLog(User1Controller.class);
		
			// @ModelAttribute修饰的方法会先于login调用,该方法用于接收前台jsp页面传入的参数
			@ModelAttribute
			public void userModel(String loginname, String password, Model model) {
				logger.info("userModel");
				// 创建User对象存储jsp页面传入的参数
				User user = new User();
				user.setLoginname(loginname);
				user.setPassword(password);
				// 将User对象添加到Model当中
				model.addAttribute("user", user);
			}
		
			@RequestMapping(value = "/login1")
			public String login(Model model) {
				logger.info("login");
				// 从Model当中取出之前存入的名为user的对象
				User user = (User) model.asMap().get("user");
				System.out.println(user);
				// 设置user对象的username属性
				user.setUsername("测试");
				return "result1";
			}
		
		}

注意:@ModelAttribute修饰的方法会先于login调用

		@ModelAttribute
		public void userMode2(String loginname,String password,
				 ModelMap modelMap){
			logger.info("userMode2");
			// 创建User对象存储jsp页面传入的参数
			User user = new User();
			user.setLoginname(loginname);
			user.setPassword(password);
			// 将User对象添加到ModelMap当中
			modelMap.addAttribute("user", user);
		}
		
		@RequestMapping(value="/login2")
		 public String login2(ModelMap modelMap){
			logger.info("login2");
			// 从ModelMap当中取出之前存入的名为user的对象
			User user = (User) modelMap.get("user");
			System.out.println(user);
			// 设置user对象的username属性
			user.setUsername("测试");
			return "result2";

}

注:将存储对象改为ModelMap

2ModelAndView:既包含模型数据信息,也包含视图信息。

 

添加模型数据:

addObject(String attributeName , Object attributeValue);

设置视图:

setViewName(String  viewName);

 

 

实例二:ModelAndView的使用

		private static final Log logger = LogFactory.getLog(User3Controller.class);
		
		@ModelAttribute
		public void userMode3(String loginname,String password,
				 ModelAndView mv){
			logger.info("userMode3");
			User user = new User();
			user.setLoginname(loginname);
			user.setPassword(password);
			// 将User对象添加到ModelAndView的Model当中
			mv.addObject("user", user);
		}
		
		@RequestMapping(value="/login3")
		 public ModelAndView login3(ModelAndView mv){
			logger.info("login3");
			// 从ModelAndView的Model当中取出之前存入的名为user的对象
			User user = (User) mv.getModel().get("user");
			System.out.println(user);
			// 设置user对象的username属性
			user.setUsername("测试");
			// 设置返回的视图名称
			mv.setViewName("result3");
			return mv;

}




  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
YOLO高设计资源源码,详情请查看资源内容使用说明 YOLO高设计资源源码,详情请查看资源内容使用说明 YOLO高设计资源源码,详情请查看资源内容使用说明 YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明YOLO高设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值