springmvc执行流程

搭建ssm框架:http://www.cnblogs.com/liyafei/p/7955413.html

1:从表单中接收 普通请求参数

  结构目录

role.html

1.1  role.html表单

  

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 上级目录../ 本级目录./ 根目录/ 也就是http://localhost:8080/-->
<!--role.html访问路径为 http://localhost:8080/html/role.html,html/**映射为WEB-INF/html/  。在web.xml有配置 -->
<!--params/commonParams.do的访问目录为 http://localhost:8080/params/commonParams.do?roleName=li&note=yafei -->
<!-- 所以可以使用../或者/ --> <!-- ./代表 html/ -->
<form id="form" action="/params/commonParams.do">
<table>
<tr>
<td>角色名称</td>
<td><input id="roleName" name="roleName" value="" /></td> <!--name的值将会作为参数名传递-->
</tr>
<tr>
<td>备注</td>
<td><input id="note" name="note" /></td>
</tr>
<tr>
<td></td>
<td align="right"><input type="submit" value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>

1.2 springmvc使用表现层controller接收
      ParamsController.java

package com.li.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/params")
public class ParamsController { @RequestMapping("/commonParams")
public ModelAndView commonParams(String roleName,String note){ //参数名一致就会获得http传输过来的参数
System.out.println("roleName>"+roleName);
System.out.println("note=>"+note);
ModelAndView mv=new ModelAndView();
mv.setViewName("hello");
return mv; //会被视图解析器解析
}
}

1.3测试成功。
    2:使用pojo接收普通参数,pojo的属性名应该与传过来的参数名相同

  RoleParam.java

  

package com.li.pojo;

public class RoleParam {

    String note;
String roleName;
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
} }

controller中加入方法,修改form表单的action为../params/commonParamPojo.do

    @RequestMapping("/commonParamPojo")
public ModelAndView commonParamPojo(RoleParam roleParam){
System.out.println("roleName=>"+roleParam.getRoleName());
System.out.println("note=>"+roleParam.getNote());
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
return mv;
}

3:传输过来的参数名和方法名中的名字不一致时可以使用requestParam,修改form表单的action为../params/requestParam.do

  

    /**
* 当传输的参数名和映射方法中的参数名不一致时,可以使用@RequestParam获取传输过来的参数,后面 的参数名字任意定义
*/
@RequestMapping("/requestParam")
public ModelAndView requestParam(@RequestParam("roleName") String name,String note){
System.out.println("roleName>"+name);
System.out.println("note=>"+note);
ModelAndView mv=new ModelAndView();
mv.setViewName("hello");
return mv; //会被视图解析器解析
}

4:使用URL传递参数

  

    /**
* 使用url传递参数
* @pathVariable
*/
@RequestMapping("/pathVariable/{id}")
public ModelAndView pathVariable(@PathVariable("id")Long id){
System.out.println(id);
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
// mv.addObject("user");
// mv.addObject("user", "user");
// Map<String, String> map = new HashMap<String, String>();
// map.put("user1", "user1");
// map.put("user2", "user2");
// mv.addAllObjects(map);
return mv;
}

访问路径:http://localhost:8080/params/pathVariable/1

5:传递json参数

  5.1 创建pojo

    

package com.li.pojo;

public class PageParams {

    private int start;
private int limit;
setter and getter
} package com.li.pojo; public class RoleParams { private String roleName;
private String note;
private PageParams pageParams;
setter and getter
}

  

  5.2  javascript代码

$(document).ready(function(){
//json参数和类RoleParams一一对应
var data={
//角色查询参数
roleName:'role',
note:'note',
//分页参数
pageParams:{
start:1,
limit:20
}
} //jquery的post请求
$.post({
url:"./params/findRoles.do",
//此处需要告知传递参数类型的JSON,不能缺少
contentType:"application/json",
data:JSON.stringify(data),
//成功后 的方法
success:function(result){
}
});
});

5.3  添加findRoles方法,接收json数据需要使用@RequestBody注解

    @RequestMapping("/findRoles")
public ModelAndView findRoles(@RequestBody RoleParams roleParams){
System.out.println(roleParams.getRoleName());
System.out.println(roleParams.getNote());
System.out.println(roleParams.getPageParams());
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
return mv;
}

    5.4:其它方式接收参数,javascript代码

      

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){  //这里没有触发方法,打开该页面,就会直接运行,
//json参数和类RoleParams一一对应
var data={
//角色查询参数
roleName:'role',
note:'note',
//分页参数
pageParams:{
start:1,
limit:20
}
} //jquery的post请求
$.post({
url:"/params/findRoles.do",
//此处需要告知传递参数类型的JSON,不能缺少
contentType:"application/json",
data:JSON.stringify(data),
//成功后 的方法
success:function(result){
}
});
}); //15.1.5,接收列表数据和表单序列化
//传递数组给控制器
$(document).ready(function(){
//删除角色数组
var idList=[1,2,3];
//jQuery 的post请求
$.post({
url:"/params/deleteRoles.do",
//将json转化为字符串传递
data:JSON.stringify(idList),
//指定传输数据类型,不可缺少
contentType:"application/json",
//成功后的方法
sucess:function(result){ }
});
}); //添加角色,使用数组传递数据,用于保存
$(document).ready(function(){
//新增角色数组
var roleList=[
{roleName:'role_name_1',note:'note_1'},
{roleName:'role_name_2',note:'note_2'},
{roleName:'role_name_3',note:'note_3'}
];
//jQuery的post请求
$.post({
url:"./params/addRoles.do",
//将JSON转化为字符串传递
data:JSON.stringify(roleList),
contentType:"application/json",
//成功后的方法
success:function(result){
}
});
});
</script>
</head>
<body>
<!-- 上级目录../ 本级目录./ 根目录/ 也就是http://localhost:8080/-->
<!--role.html访问路径为 http://localhost:8080/html/role.html,html/**映射为WEB-INF/html/ -->
<!--params/commonParams.do的访问目录为 http://localhost:8080/params/commonParams.do?roleName=li&note=yafei -->
<!-- 所以可以使用../或者/ --> <!-- ./代表 html/ -->
<form id="form" action="/params/requestParam.do">
<table>
<tr>
<td>角色名称</td>
<td><input id="roleName" name="roleName" value="" /></td>
</tr>
<tr>
<td>备注</td>
<td><input id="note" name="note" /></td>
</tr>
<tr>
<td></td>
<td align="right"><input type="submit" value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>

5.5;controller中添加相应的方法

  

    @RequestMapping("/findRoles")
public ModelAndView findRoles(@RequestBody RoleParams roleParams){
System.out.println(roleParams.getRoleName());
System.out.println(roleParams.getNote());
System.out.println(roleParams.getPageParams());
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
return mv;
} /**
* 接收列表数据和表单序列化
*/
@RequestMapping("/deleteRoles")
public ModelAndView deleteRoles(@RequestBody List<Long> idList){
ModelAndView mv=new ModelAndView();
//删除角色
int total;//删除之后返回的记录条数
mv.addObject("total", "total");
//json视图
mv.setView(new MappingJackson2JsonView());
return mv;
} /**
* 添加角色方法
*/
@RequestMapping("/addRoles")
public ModelAndView addRoles(@RequestBody List roleList){
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
mv.setView(new MappingJackson2JsonView());
return mv;
}

6:接收序列化表单数据  ,javascript代码

  

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.js">
</script>
<script type="text/javascript">
//提交序列化表单
$(document).ready(function(){
$("#commit").click(function() {  //需要下面的id为commit的按钮触发
var str=$("form").serialize();
//提交表单
$.post({url:"/params/commonParamPojo2.do",
//将form数据序列化,传递给后台,则将数据以roleName=xxx&&note=xxx传递
data:str,
//成功后的方法
success:function(result) {
}
});
});
});
</script>
</head>
<body>
<form id="form">
<table>
<tr>
<td>角色名称</td>
<td><input id="roleName" name="roleName"/></td>
</tr>
<tr>
<td>备注</td>
<td><input id="note" name="note"/></td>
</tr>
<tr>
<td></td>
<td align="right"><input id="commit" type="button" value="提交"/></td>  <!--触发#commit方法-->
</tr>
</table>
</form>
</body>
</html>

6.1:接收数据的方法

    /**
* 接收序列化表单,序列化后的数据,用传递过来的参数名直接接收即可
*/
@RequestMapping("/commonParamPojo2")
public ModelAndView commonParamPojo2(String roleName,String note){
System.out.println("commonParamPojo2");
System.out.println("roleName=>"+roleName);
System.out.println("note=>"+note);
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
return mv;
}

  

  

springmvc接收参数的更多相关文章

  1. springMVC接收参数的区别form data与query string parameters与request payload

    在AJAX请求中,我见过有三种form表单数据类型提交. 第一种:form data, 第二种:query string parameters,第三种:request payload. 在google ...

  2. 实用———springmvc接收参数校验

    https://www.cnblogs.com/funyoung/p/8670550.html https://www.cnblogs.com/monkeydai/p/10068547.html He ...

  3. springMVC接收参数 xml/json

    springMVC参数接收 作为web层框架,可以接受复杂的类型,且很简单 1.接收字符串可以直接写参数类型,参数名称,跟前端传过来的name值一样即可 如果不一样也可以,通过@RequestPara ...

  4. springmvc接收参数为日期类型

    用单个Date类型接收日期类型时,会出现报错,加上initBinder的方法 意思是将所有传入的参数都通过此方法,如果过是日期通过日期格式化器进行格式化 如果是接收类型为对象内的属性为Date类型时 ...

  5. springMVC接收参数的几种方式

    Spring3 MVC请求参数获取的几种方法 一.      通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}&q ...

  6. SpringMVC接收参数的注解笔记

    1.@RequestParam var param = {}; param.keys = delKeys.join();//delKeys是数组,如delKeys=['a',b','c'],join函 ...

  7. springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例

    案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...

  8. SpringMVC框架笔记01_SpringMVC的使用案例和架构组件_SpringMVC和Mybatis整合_接收参数

    目录 第1章:SpringMVC简介 1.1 什么是SpringMVC 1.2 SpringMVC的处理流程 第2章:SpringMVC入门程序 2.1 场景描述 2.2 步骤分析 2.3 步骤一:创 ...

  9. SpringMVC接受参数若干问题

    最近2年在工作问题总结中,好几次遇到了SpringMVC接收参数的问题,今天特别总结下.  SpringMVC接收参数的方法:  Html参数输入: <input name="stat ...

随机推荐

  1. Unicode编码转换汉字

    Uri.UnescapeDataString(string) #region Unicode转换汉字 Console.WriteLine(Uri.UnescapeDataString("\u ...

  2. input回车问题

    今天有一个问题,就是input对象没有加任何事件自己回车导致跳到了404页面.处理的时候,并发现没找到回车事件的控制. 那么只有一种情况,就是自带的回车控制. 百度了一下,如下面博文里面的写法.我这边 ...

  3. 安卓下junit测试

    安卓下junit测试 第一种方法: 1,在AndroidManifest.xml下,加入如下红色代码 <manifest xmlns:android="http://schemas.a ...

  4. 《征服C指针》读书笔记

    本文同时发布在我的个人博客上,欢迎访问~ www.seekingdream.cn 在读完K&R之后,对C的认识就是指针.数组.网上的人们对指针也有些“敬而远之”的感觉.最近从同学处淘得< ...

  5. docker 参数

    -a, --attach=[] Attach to STDIN, STDOUT or STDERR 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 --add-host= ...

  6. os.walk的用法

    import os path = 'C:\\aa' for root,dirs,files in os.walk(path): print("Root=",root,'dirs=' ...

  7. 【咸鱼教程】JsZip压缩与解压教程

    引擎版本3.0.6 教程目录一 为什么要用jszip二 如何使用jszip    2.1 下载jszip库    2.2 导入jszip库    2.3 加载和解压zip代码三 Demo源码下载 一 ...

  8. 【咸鱼教程】Egret中可长按复制的文本(例如复制优惠码)

    一 实际效果二 实现原理三 源码下载 在egret中实现长按复制文本效果,一般用于复制优惠码什么的. 一 实际效果         二 实现原理 在egret的游戏元素都是绘制在canvas上的,我们 ...

  9. 23种设计模式之建造者模式(Builder)

    建造者模式强调将一个复杂对象的创建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式是一步一步地创建一个复杂的对象,它允许用户只通过制定复杂对象的类型和内容就可以构建它们,用户不需要知道 ...

  10. AndroidStudio 使用Release签名进行Debug

    extends:http://blog.csdn.net/h3c4lenovo/article/details/42011887 , http://www.linuxidc.com/Linux/201 ...