SpringMVC的用法

一、 springMVC请求处理

@RequestMapping
意义:处理用户的请求,相似于doget与dopost

位置:  类上:一级目录

     方法:二级目录

 例如:user/save


 属性: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==代表修饰类

二、springMVC请求参数的绑定 

绑定的机制:

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

 一.支持数据类型:
     1.基本类型参数: 包括基本类型和 String 类型
     2.POJO类型参数:包括实体类,以及关联的实体类
     3.数组和集合类型参数: 包括 List 结构和 Map 结构的集合(包括数组)
     4.使用 ServletAPI 对象作为方法参数( HttpServletRequest HttpServletResponse HttpSession java.security.Principal Locale InputStream OutputStream Reader Writer)
     
  二.使用要求
    1.发送请求中携带数据的key与方法参数的name必须一致
    2.数据类型合法
@Controller
@RequestMapping("/one")
public class OneController {

    /**
     * 进入one.html页面
     * */
    @RequestMapping("/show")
    public String show(){
        return "one";
    }

    //基本类型和 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";
    }

    //POJO 类型作为参数
    //单一对象
    @RequestMapping("/show3")
    public String show3(Emp emp){
        System.out.println("=====接受到用户发送数据为:"+emp+"=======");
        return "success";
    }
    //对象嵌套
    @RequestMapping("/show4")
    public String show4(Emp emp){
        System.out.println("=====接受到用户发送数据为:"+emp+"=======");
        return "success";
    }

    //@RequestParam
    @RequestMapping("/map")
    public String map(@RequestParam Map map){
        System.out.println(map);
        return "success";
    }


    //POJO 类中包含集合类型参数
    @RequestMapping("/show5")
    public String show5(Dep dep){
        System.out.println("=====接受到用户发送数据为:"+dep+"=======");
        return "success";
    }


    @RequestMapping("/show6")
    public String show8(int[] nums){
        System.out.println("=====接受到用户发送数据为:"+ Arrays.toString(nums) +"=======");
        return "success";
    }


    //使用 ServletAPI 对象作为方法参数
    @RequestMapping("/show7")
    public String show7(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {

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

        HttpSession session = request.getSession();
        System.out.println(session);
        session.setAttribute("","");

        return "success";
    }
}
<!DOCTYPE html>
<html lang="cn" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Title</title>
</head>
<body>

<h1>springMVC控制器方法参数作用:接受用户请求中的数据</h1>
<hr/>

<h3>基本类型和 String 类型作为参数</h3>
<a href="/one/show1?msg1=9527">发送请求1</a>
<a href="/one/show2?msg1=jdk&msg2=9527">发送请求2</a>

<h3>POJO 类型作为参数</h3>
<a href="/one/show3?eid=1&ename=张三&esex=男">发送请求3</a>

<form action="/one/show4" method="post">
    员工编号:<input type="text" name="eid" ><br/>
    员工姓名:<input type="text" name="ename" ><br/>
    员工性别:<input type="text" name="esex" ><br/>
    部门编号:<input type="text" name="dept.did" ><br/>
    部门名称:<input type="text" name="dept.dname" ><br/>
    <input type="submit" value="发送请求4"/>
</form>

<form action="/one/map" method="post">
    员工编号:<input type="text" name="eids"><br/>
    员工姓名:<input type="text" name="enames"><br/>
    员工性别:<input type="text" name="esexs"><br/>
    <input type="submit" value="发送请求4(map)"/>
</form>


<h3>POJO 类中包含集合类型参数</h3>
<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>

<a href="/one/show6?nums=123&nums=456&nums=789">发送请求6</a>

<h3>使用 ServletAPI 对象作为方法参数</h3>
<a href="/one/show7">发送请求7</a>

</body>
</html>

 三、 springMVC常用注解

1.@RequestParam

作用:把请求中指定名称的参数给控制器中的形参赋值。 如果页面标签名称和方法参数名称不一致,可以使用此注解实现

属性:

name属性:设置参数名称

defaultValue属性:设置默认值

required属性:设置是否为必传

2.@RequestBody

作用:用于获取"请求体"内容。

直接使用得到是 key=value&key=value... 结构的数据,并可以转换为对象

属性:

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

 前后端分离    :

  @RequestBody可以将json ===》 javaBean      

 注意:      

1.前端不能使用GET方式提交数据,GET方式无请求体      

 {      *     "eid":101,      *     "ename":"詹姆斯邦德",      *     "esex":"绅士"      * }  

3.@PathVaribale

作用:用于绑定 url 中的占位符。
例如:请求 url 中 /delete/{id}, 这个{id}就是 url 占位符。
url 支持占位符是 spring3.0 之 后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志 属性: 
value:用于指定 url 中占位符名称。 
required:是否必须提供占位符。 
Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。 主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次, 更易于实现缓存机制等。
 Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下: 
GET:用于获取资源
POST:用于新建资源
PUT:用于更新资源 
DELETE:用于删除资源 
例如: 
新增 POST http://localhost:8080/user/用户名/用户密码/用户性别 
查询 GET http://localhost:8080/user/用户ID 
删除 delete http://localhost:8080/user/用户ID 
修改 put http://localhost:8080/user/用户ID/用户名/用户密码/用户性别
      
@Controller
@RequestMapping("/two")
public class TwoController {
    /**
     * @RequestParam("名称必须与页面标签或者url地址key名称一致")
     * */
    @RequestMapping("/show1")
    public String show1(@RequestParam(name = "msg1") String msg){
        System.out.println("=====接受到用户发送数据为:\"+msg+\"=======");
        return "success";
    }
    @RequestMapping("/show2")
    public String show2(@RequestParam("msg1") String msg,@RequestParam("msg2")int num){
        System.out.println("=====接受到用户发送数据为:"+msg+"=======");
        System.out.println("=====接受到用户发送数据为:"+num+"=======");
        return "success";
    }
    @RequestMapping("/show3")
    public String show3(@RequestParam(name="uname",defaultValue = "暂无用户")String name){
        System.out.println("账号:"+name);
        return "success";
    }
   
    @PostMapping("/show5/{uname}/{pwd}")
        public String show5(@PathVariable("uname") String msg1,@PathVariable("pwd") String msg2){
        System.out.println(msg1);
        System.out.println(msg2);
        return "success";
    }
    @PostMapping("/show6/{uname}/{pwd}")
    public String show6(@PathVariable String uname,@PathVariable String pwd){
        System.out.println(uname);
        System.out.println(pwd);
        return "success";
    }
}

 四、springMVC数据传递

@Controller
@RequestMapping("/string")
public class StringController {
    /**
     * 进入首页
     * */
    @RequestMapping("/show")
    public String show(){
        return "index";
    }
    /*
     * 充当试图的逻辑名称,默认页面跳转为请求转发方式
     * */
    @RequestMapping("show1")
    public String show1(){
        System.out.println("=========show1=========");
        return "success_String";
    }
    /*
     * 作充当一次请求转发或重定向
     * */
    @RequestMapping("/show2")
    public String show2(){
        System.out.println("=========show2=========");
        return "redirect:show1";
    }
    @RequestMapping("/show3")
    public String show3(){
        System.out.println("=========show3=========");
        return "forward:show1";
    }
    @RequestMapping("/show4")
    public String show4(HttpServletRequest request){
        System.out.println("=========show4=========");
        //1.查询数据库(模拟)
        Emp emp=new Emp(1,"张毅老师","男");
        //2.获取session
        request.getSession().setAttribute("emp",emp);
        return "success_String";
    }
}

     @ResponseBody   对象====>json
     位置:1.类
          2.方法
    
     @RequestBody    json====>对象
     位置:方法参数
     
     @RestController   =  @Controller  +  @ResponseBody

@Controller
@RequestMapping("/json")
public class JsonController {
    @RequestMapping("/show1")
    @ResponseBody
    public List<Emp> show1(){
        //1模拟数据库
        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;
    }
    @RequestMapping("/show2")
    @ResponseBody
    public String show2(){
        return "helloWorld";
    }
}

 五、springMVC文件上传

(与七牛云相结合)

具体实现代码参见七牛云SDK文档

https://developer.qiniu.com/kodo/1239/java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值