Spring MVC

1.请求处理

 @RequestMapping
 意义:处理用户的请求,相似于doget与dopost
 位置:
 类上:一级目录
 方法:二级目录
 例如:user/save
 user/delete
 student/save
 student/delete
 属性:
 value="",path=""    表示请求路径(只写这个属性是可省略该属性名)

 method=常量,此请求的类型(get,post),若不设置则此请求适配所有的请求方式

 params=""  限制请求参数,例如:params={"msg1","msg2"}表示请求路径中必须携带参数名为msg1与msg2的参数
 
 注意:1.超链接默认发送的是get请求
 2.所有请求所携带的参数格式均为:key=value
 @DeleteMapping删除
 @PutMapping修改
 @GetMapping查询
 @PostMapping新增
 @RequestMapping可以点击查看源码
 @Target({ElementType.METHOD,ElementType.TYPE})
 METHOD==代表修饰方法,TYPE==代表修饰类

 @RequestMapping(value="/show1",method ={RequestMethod.POST})
        public String show1(){
            System.out.println("==========进入了springMVC的控制器=========");
            System.out.println("使用post方式发送请求进入");
            return "success";//返回方法执行完要跳转的页面名称
        }


        @RequestMapping(value="/show2",params = {"msg1=aa","msg2=bb"})
        public String show2(){
            System.out.println("==========进入了springMVC的控制器=========");
            System.out.println("限制请求携带的参数");
            return "success";//返回方法执行完要跳转的页面名称
        }
  @GetMapping("/show3")
        public String show3(){
            System.out.println("==========进入了springMVC的控制器=========");
            System.out.println("必须使用get方式请求");
            return "success";//返回方法执行完要跳转的页面名称
        }

        @PostMapping("/show4")
        public String show4(){
            System.out.println("==========进入了springMVC的控制器=========");
            System.out.println("必须使用post方式请求");
            return "success";//返回方法执行完要跳转的页面名称
        }

2.参数绑定

 springMVC请求参数的绑定

 绑定的机制:SpringMVC绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的

 一.支持数据类型:

 1.基本类型参数:

 包括基本类型和String类型

 /***********************基本类型和 String 类型作为参数*********************************/
    @RequestMapping("/show1")
    public String show1(String msg1){
        System.out.println("=====接受到用户发送数据为:"+msg1+"=======");
        return "success";
    }

    @RequestMapping("/show2")
    public String show2(String msg1,int msg2){
        System.out.println("=====接受到用户发送数据为:"+msg1+"=======");
        System.out.println("=====接受到用户发送数据为:"+msg2+"=======");
        return "success";
    }

 2.POJO类型参数:

 包括实体类,以及关联的实体类

 @RequestMapping("/show3")
    public String show3(Emp emp){
        System.out.println("=====接受到用户发送数据为:"+emp+"=======");
        return "success";
    }
    //对象嵌套(EMP部门包含dept员工List,Map)
    @RequestMapping("/show4")
    public String show4(Emp emp){
        System.out.println("=====接受到用户发送数据为:"+emp+"=======");
        return "success";
    }

<form action="/one/show5" method="post">
  部门编号:<input type="text" name="did" ><br/>
  部门名称:<input type="text" name="dname" ><br/>
  员工编号1:<input type="text" name="mylist[0].eid" ><br/>
  员工姓名1:<input type="text" name="mylist[0].ename" ><br/>
  员工性别1:<input type="text" name="mylist[0].esex" ><br/>
  员工编号2:<input type="text" name="mylist[1].eid" ><br/>
  员工姓名2:<input type="text" name="mylist[1].ename" ><br/>
  员工性别2:<input type="text" name="mylist[1].esex" ><br/>

  员工编号3:<input type="text" name="myMap['one'].eid" ><br/>
  员工姓名3:<input type="text" name="myMap['one'].ename" ><br/>
  员工性别3:<input type="text" name="myMap['one'].esex" ><br/>
  员工编号4:<input type="text" name="myMap['two'].eid" ><br/>
  员工姓名4:<input type="text" name="myMap['two'].ename" ><br/>
  员工性别4:<input type="text" name="myMap['two'].esex" ><br/>
  <input type="submit" value="发送请求5"/>
</form>

 3.数组和集合类型参数:

 包括List结构和Map结构的集合(包括数组)

  @RequestMapping("/map")
    public String map(@RequestParam Map map){
//@RequestParam 必须存在,这样才可以将多个数据注入到map中
        System.out.println(map);
        return "success";
    }

<form action="/one/map" method="post">
  员工编号:<input type="text" name="eids"><br/>
//map中的键(key):name的属性值,value就是表单的值
  员工姓名:<input type="text" name="enames"><br/>
  员工性别:<input type="text" name="esexs"><br/>
  <input type="submit" value="发送请求4(map)"/>
</form>

 4.使用ServletAPI对象作为方法参数

 HttpServletRequest    HttpServletResponse       HttpSession        java.security.Principal       Locale    InputStream    OutputStream     Reader    Writer

 @RequestMapping("/show7")
    public String show7(HttpServletRequest request, HttpServletResponse response){


//        request.setCharacterEncoding("UTF-8");
//        response.setCharacterEncoding("UTF-8");
        System.out.println(request);
        System.out.println(response);
        request.getParameter("msg1");

        HttpSession session =     request.getSession();
        Cookie[] cookies = request.getCookies();

        System.out.println(session);
        session.setAttribute("yyd","闫亚东");

        ServletContext applaction =  session.getServletContext();

        return "success";
    }

 二.使用要求

 1.发送请求中携带数据的key与方法参数的name必须一致

 2.数据类型合法

3.常用注解

 springMVC常用注解

 一.@RequestParam

 作用:

 把请求中指定名称的参数给控制器中的形参赋值。

 如果页面标签名称和方法参数名称不一致,可以使用此注解实现

 属性:

 name属性:设置参数名称

 defaultValue属性:设置默认值

 required属性:设置是否为必传(默认为true)

    @RequestMapping("/show9")
    public String show9(@RequestParam(name = "masg1",defaultValue = "此时无参数") String masg2){
        System.out.println("=====接受到用户发送数据为:"+ masg2 +"=======");
        return "success";
    }

 二.@RequestBody

 作用:

 用于获取"请求体"内容。直接使用得到是key=value&key=value...

 结构的数据,并可以转换为对象

 属性:

 required:是否必须有请求体。默认值是:true。

@RequestMapping("/show10")
    public String show10(@RequestBody Emp emp){
        System.out.println("=====接受到用户发送数据为:"+ emp +"=======");
        return "success";
    }

//请求题中的JSON数据
{
    "eid":2024,
    "ename":"闫亚东",
    "esex":23,
    "dept":{
   "did":12,
   "dname":"研发部",
   "mylist":[{ "eid":2023,
    "ename":"余承东",
    "esex":43},{
         "eid":2021,
    "ename":"杨秀文",
    "esex":21
    }]
    }
}

 三.@PathVaribale
 作用:
 用于绑定url中的占位符。例如:请求url中/delete/{id},
 这个{id}就是url占位符。url支持占位符是spring3.0之
 后加入的。是springmvc支持rest风格URL的一个重要标志
 属性:
 value:用于指定url中占位符名称。
 required:是否必须提供占位符。
 

@RequestMapping("/show11/{name}/{id}")//将名称为name的属性值赋给名称为ename的属性必
    public String show11(@PathVariable(name = "name") String ename,@PathVariable(name = "id") int eid){
        System.out.println("=====接受到用户发送数据为:"+ ename+"  "+eid +"=======");
        return "success";
    }

    @RequestMapping("/show12/{name}/{id}")//名称必须保持一致
    public String show12(@PathVariable String name,@PathVariable int id){

        System.out.println("=====接受到用户发送数据为:"+ name+"  "+id +"=======");
        return "success";
    }


 Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
 主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,
 更易于实现缓存机制等。
 
 Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP协议里面四个表示操作方式
的动词如下:

 GET:用于获取资源
 POST:用于新建资源
 PUT:用于更新资源
 DELETE:用于删除资源
 例如:
 /users/1GET:得到id=1的user
 /users/1DELETE:删除id=1的user
 /users/1/新名/新性PUT:更新id=1的user
 /users/新名/新性POST:新增user


 springMVC常用注解
 
 四.@RequestHeader
 作用:
 用于获取请求消息头。
 属性:
 value:提供消息头名称
 required:是否必须有此消息头

   @RequestMapping("/show13")
    public String show13(@RequestHeader(name = "masg1") String masg){
        System.out.println("=====接受到用户发送数据为:"+ masg +"=======");
        return "success";
    }


 五.@CookieValue
 作用:
 用于把指定cookie名称的值传入控制器方法参数。
 属性:
 value:指定cookie的名称。
 required:是否必须有此cookie。

 @RequestMapping("/show14")
    public String show14(@CookieValue(name = "JSESSIONID",required = false)  String masg){
        System.out.println("=====接受到用户发送数据为:"+ masg +"=======");
        return "success";
    }

4.数据传递

 @RequestMapping("show4")
    public String show4(HttpServletRequest request){
        System.out.println("页面show4");
        request.getSession().setAttribute("name","闫亚东");

        return "success";
    }

  @RequestMapping("/show1")
    @ResponseBody
    public List<Emp> show1(){
        Emp emp1 = new Emp(1,"张毅老师","男");
        Emp emp2 = new Emp(2,"张毅老师","男");
        Emp emp3 = new Emp(3,"张毅老师","男");
        List<Emp> list = new ArrayList<>();
        list.add(emp1);
        list.add(emp2);
        list.add(emp3);

        return list;
    }

5.文件上传

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值