实习心得体会---SSM学习笔记之注解20190716

1、使用 @ModelAttribute 和 @SessionAttributes 传递和保存数据

SpringMVC 支持使用 @ModelAttribute 和 @SessionAttributes 在不同的模型(model)和控制器之间共享数据。 @ModelAttribute 主要有两种使用方式,一种是标注在方法上,一种是标注在 Controller 方法参数上。

当 @ModelAttribute 标记在方法上的时候,该方法将在处理器方法执行之前执行,然后把返回的对象存放在 session 或模型属性中,属性名称可以使用 @ModelAttribute(“attributeName”) 在标记方法的时候指定,若未指定,则使用返回类型的类名称(首字母小写)作为属性名称。

@SessionAttributes("user1")
 
@RequestMapping("/test4.do")
    public String test4(AppUser user,Model model){
     
        System.out.println(user);
        model.addAttribute("user1",user);
         
        return "1";
    }

2,@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值

 

用于在 请求的 / 后面传递参数

语法:

@PathVariable("xxx")
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“) 
 
@RequestMapping(value=”user/{id}/{name}”)
请求路径:http://localhost:8080/hello/show5/1/james
测试环境:

环境:jdk1.8 Tomcat8.5  idea2018  manven父工程子模块
 
步骤:
1、创建web工程、引入依赖
2、配置SpringMvc入口文件 --DispatcherServlet--为总调度、web.xml里配置
3、创建Springmvc.xml文件--理解为:适配器(这里不需要自已指定适配、springmvc会自动指定)--视图解析器
4、创建 业务处理器 Controller类
5、测试

 

业务处理器HelloController.java

package com.day01springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
 
/**
 * @ Author     :ShaoWei Sun.
 * @ Date       :Created in 20:58 2018/11/16
 */
@Controller
@RequestMapping("hello")
public class HelloController2 {
    /**
     *3、占位符映射
     * 语法:@RequestMapping(value=”user/{userId}/{userName}”)
     * 请求路径:http://localhost:8080/hello/show5/1/james
     * @param ids
     * @param names
     * @return
     */
    @RequestMapping("show5/{id}/{name}")
    public ModelAndView test5(@PathVariable("id") Long ids ,@PathVariable("name") String names){
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","占位符映射:id:"+ids+";name:"+names);
        mv.setViewName("hello2");
        return mv;
    }
}

实习心得体会---SSM学习笔记之注解20190716_第1张图片

实习心得体会---SSM学习笔记之注解20190716_第2张图片

3、@requestParam

@requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter("name"),它有三个常用参数:defaultValue = "0", required = false, value = "isApp";defaultValue 表示设置默认值,required 铜过boolean设置是否是必须要传入的参数,value 值表示接受的传入的参数类型。

参数传递

参数传递
@RequestMapping("/test1") //传递参数 public String test1(@RequestParam("param")String str){ System.out.println(str); return "1"; //跳转的页面 }

@RequestParam 和 @PathVariable 注解都是用于从request中接收请求,两个都可以接收参数,

不同:@RequestParam 从request里面拿取值,@PathVariable 从一个URI模板里面来填充
演示:

 

Request URL:http://api.baidu.com/api/item/spec/groups?param1=3¶m2=4

@RequestParam 是从request里面拿取值,
public String getDetails(
    @RequestParam(value="param1", required=true) String param1,
        @RequestParam(value="param2", required=false) String param2){
...
}


@PathVariable 是从一个URI模板里面来填充
Request URL:http://api.baidu.com/api/item/spec/groups/79

@RestController
@RequestMapping("spec")
public class SpecificationController {
 
    @Autowired
    private SpecificationService specificationService;
 
    @GetMapping("groups/{cid}")
    public ResponseEntity> querySpecGroups(@PathVariable("cid") Long cid){
        List list = this.specificationService.querySpecGroups(cid);
        if(list == null || list.size() == 0){
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
        return ResponseEntity.ok(list);
    }
}

@RestController
public class HelloController {
	@RequestMapping("/hellopv/{name}")
	public String helloPV(@PathVariable String name, @RequestParam String username) {
		String hello = "Hello " + username + " [" + name + "] !";
		return hello;
	}
}

@PathVariable是处理requet uri template中variable 的注解,实现了url入参绑定到方法参数上。
即:可以获取URL请求路径中的变量值,比如:RequestMapping("/hellopv/{name}")中的name

@RequestParam获取URL请求数据,是常用来处理简单类型的绑定注解。
通过Request.getParameter()获取入参,故此可以处理url中的参数,也可以处理表单提交的参数和上传的文件。

拓展
handler method 参数绑定常用的注解,根据处理的Request的不同内容分为四类常用类型
A、处理requet uri 部分(指uri template中variable)的注解: @PathVariable;
B、处理request header部分的注解: @RequestHeader, @CookieValue;
C、处理request body部分的注解:@RequestParam, @RequestBody;
D、处理attribute类型是注解: @SessionAttributes, @ModelAttribute;
 

 

4、@ResponseBody

作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

$("#btn").click(function(){
        var f = $("#forms").serializeArray();
        $.ajax({
            url:"test3.do",
            data:f,
            type:"post",
            dataType:"json",
            success:function(data){
                console.log(data.success);
                if(data.success){
                    alert("成功");
                }else{
                    $("#forms").find("span").show();
                }
            }
        })
    })
 
 
@ResponseBody
    @RequestMapping("/test3.do")
    public String test3(AppUser user){
        String result = "";
        System.out.println(user);
        if(user.getUsername().equals("dhb")&&user.getPassword().equals("123")){
            result = "{\"success\":true}";
        }else{
            result = "{\"success\":false}";
        }
        return result;  //把数据返回
    }

 

你可能感兴趣的:(ssm,java,阅读笔记)