SSM三层模型之间的参数传递

Posted 老人与JAVA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM三层模型之间的参数传递相关的知识,希望对你有一定的参考价值。

Controller接收各种形式的传参:

 

RequestMapping()包含三部分信息:

 

表单传参:

1、表单action请求

 

1:参数名称和顺序都要和表单字段名称一致,直接接收(适合字段较少的)

<from id="viewForm" action="view/first">

<input id="roleName" type="text" name="roleName"/>

<input id="roleNum" type="text" name="roleNum"/>

<input type="submit" value="提交"/>

</from>

 

@RequestMapping("/first")

public String findName(String roleName,String roleNum){

System.out.println(roleName);

System.out.println(roleNum);

return "index.jsp";

}

 

 

2:表单中多个字段和一个POJO中属性名称完全对应,则可以对象入参,也不需要注解

@RequestMapping("/add")

public String addUser(User user){

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

return "index.jsp";

}

 

 

 

3:使用RequestParam注解,表单中的变量名和controller接收中的变量名不一致!

<from id="viewForm" action="view/first">

<input id="roleName" type="text" name="roleName"/>

<input id="roleNum" type="text" name="roleNum"/>

<input type="submit" value="提交"/>

</from>

 

@RequestMapping("/first")

public String findName(@RequestParam("roleName")String roleName,String roleNum){

System.out.println(roleName);

System.out.println(roleNum);

return "index.jsp";

}

或者写成@RequestParam(value="roleName",required=false)

 

2、表单序列化ajax请求

JS代码:

$("#commit").click(function(){

        alert("jingru ajax2");

        var param = $("#commit").serialize();

     $.ajax({

             url:"json",

             data:param,

             type:"post",

             dataType:"json",

             success:function(result){

                 alert(result.msg1);

                 $("#josnview").text(result.msg1);

             },

             error:function(){

                alert("huidiao失败");

             }

        });

    });

 

 

html代码:

<from id="viewForm">

<input id="roleName" type="text" name="roleName"/>

<input id="roleNum" type="text" name="roleNum"/>

<input id="commit" type="button" value="提交"/>

</from>

 

Controller代码:

@RequestMapping("/json")

     @ResponseBody

public String findJson(String roleName, String roleNum){

    Map<String,Object> map = new HashMap<String,Object>();

     String str1 = roleName;

     String str2 = roleNum;

     System.out.println("roleName="+roleName +"roleNum="+roleNum );

     map.put("msg1", str1 + str2 +"你好");

return JSON.toJSONString(map);

}

此种方法验证时候,序列化的data无法传到controller,待解决

 

 

URL传参

 

4:RESTFul风格,它将只支持http的GET请求。

$("#json").click(function(){

     var param ={};

     param.gname = "gname";

     param.gid = "gid";

         $.ajax({

             url:"json/"+true,

             data:param,

             type:"GET",

             dataType:"json",

             success:function(result){

                 $("#josnview").text(result.msg1);

             },

             error:function(){

                alert("huidiao失败");

             }

        });

    });

 

@RequestMapping(value="/json/{id}",method=RequestMethod.GET)

@ResponseBody

public String findJson(@RequestParam(value="gname")String name,

@RequestParam(value="gid",required=false)String ps,

@PathVariable(value="id")Boolean id){

Map<String,Object> map = new HashMap<String,Object>();

map.put("msg1", name+ps+"你好"+id);

return JSON.toJSONString(map);

}

注意:一定要是GET请求。@PathVariable注解允许接收参数为String,Integer,Boolean等!

 

 

传递JSON参数

 

1:原生ajax

 

A: javascript监听浏览器网页事件(点击,提交,更改等)

 

B: 创建Ajax引擎对象

 

C: 配置请求对象的信息

Open()方法还可以设置是否异步req.open( "GET", url, true );

注意:如果是GET请求,则sendnull; 如果使用POST请求,就一定要设置请求头,并send(data):

xhr.setRequestHeader("Content-Type","application/x-www-form-u;rlencoded; charset=gb2312");
							

 

设置响应超时,在send()之前:

xhr.open();
xhr.timeout = 1000;

xhr.ontimeout = function(){ 

alert(\'request timeout\');

 

overrideMimeType()方法。

用于重写XHR响应的MIME类型。这对服务器与客户端使用不同编码类型时非常有用。例如在以前如果浏览器使用UTF-8而服务器返回了GBK格式的数据时可能会遇到乱码。而现在就可以用overrideMimeType来解决。

 

 

 

2.$.ajax()方法

可以定义请求失败时的回调函数。$.get() , $.post(),$.getJSON() 则不可以。

 

 

 

1、基本类型入参

Js代码:

$("#json").click(function(){

        alert("jingru ajax2");

        var param = {};

        param.name="1";

        param.ps="2";

     $.ajax({

             url:"json",

             data:param,

             type:"post",

             async:true,

             dataType:"json", //一般都会预期返回JSON字符串

             success:function(result){

                 alert(result);

                 $("#josnview").text(result.msg);                

             },

             error:function(){

                alert("回调失败");

             }

        });

    });

 

Controller代码

@RequestMapping("/json")

     @ResponseBody

public String findJson(@RequestParam(value="name")String name,

@RequestParam(value="ps",required=false)String ps){

Map<String,Object> map = new HashMap<String,Object>();

     map.put("msg", name+ps+"你好");    

return JSON.toJSONString(map);

}

 

@RequestMapping("/json")

     @ResponseBody

public Map<String,Object> findJson(

@RequestParam(value="name")String name,

@RequestParam(value="ps",required=false)String ps){

Map<String,Object> map = new HashMap<String,Object>();

     map.put("msg", name+ps+"你好");    

return map;

}

 

 

 

2、基本类型的Bean入参

定义一个Bean

public class Goods implements Serializable {

 

//商品名称

private String gname;

private Integer gid;

@DateTimeFormat(pattern="yyyy-MM-dd")

private Date gtime;

private BigDecimal[] nums;

//省略get()/set()方法……

 

}

 

Js代码:

$("#json").click(function(){

        alert("jingru ajax2");

        var param = {};

        param.gname = "gname";

        param.gid = 2;

     $.ajax({

             url:"json",

             data:param,

             type:"post",

             async:true,

             dataType:"json",

             success:function(result){

                 alert(result);

                 $("#josnview").text(result.msg);

             },

             error:function(){

                alert("huidiao失败");

             }

        });

    });

 

 

 

Controller代码

@RequestMapping("/json")

     @ResponseBody

以上是关于SSM三层模型之间的参数传递的主要内容,如果未能解决你的问题,请参考以下文章

整合SSM框架必备基础—SpringMVC(上)

通过导航组件在底部导航片段之间传递数据

MVC和三层架构之间的关系

MVC和三层架构之间的关系

MVC和三层架构之间的关系

SSM Controller 页面之间跳转 重定向,有参 无参问题

(c)2006-2024 SYSTEM All Rights Reserved IT常识