Spring MVC(六)--通过URL传递参数
URL传递参数时,格式是类似这样的,/param/urlParam/4/test,其中4和test都是参数,这就是所谓的Restful风格,Spring MVC中通过注解@RequestMapping和注解@PathVariable来获取这种方式的参数传递。通过代码说明,首先我在页面输入参数,通过js将URL拼接成URL的样式然后在控制器中获取,获取成功之后将数据渲染成json数据返回,并在当前页面显示。
注意⚠️:因为采用了ajax的方式,所以不会渲染新的视图,只能局部刷新,在当前页面获取。下面是整个流程:
1、创建输入参数页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%
String root = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ root + "/";
%>
<script type="text/javascript"
src="<%=basePath%>jslib/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="<%=basePath%>jslib/jquery.form.js"></script>
<script type="text/javascript" src="<%=basePath%>js/param.js"></script>
<link href="<%=basePath%>css/param.css" type="text/css" rel="stylesheet">
<title>Insert title here</title>
</head>
<body> <!-- 简单参数传递 -->
<p style="text-align: center;color: red;font-size: x-large;">Spring MVC控制器接受参数方式测试</p>
<div class="param"> <!--使用URL传递参数 -->
<div class="public url">
<p style="text-align: center;">URL方式传递参数</p>
<form id="urlForm">
<table id="urlTable">
<tr>
<td>id:</td>
<td><input type="text" name="id" value=""></td>
</tr>
<tr>
<td>名称:</td>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td></td>
<td style="text-align: right;"><input type="button"
value="提交" id="setUrlParam"></td>
</tr>
</table>
</form>
</div>
</body>
</html>
页面如下:

从上面的代码中可以看出,form表单没有请求的action,因为我使用的是ajax请求的方式,并且在该文件中已经引入jquery的包,所以下一步是使用ajax提交请求,拼接URL。
2、创建ajax请求
$(function() {
    /* url方式传递参数 */
    $("#setUrlParam").click(
            function() {
                $.ajax({
                    url : "./urlParam/" + $("input[name=id]").val() + "/" + $("input[name=name]").val(),
                    type : "POST",
                    success : function(data) {
                        var html = "<tr><td>ID:</td><td>" + data.param.paramId
                                + "</td></tr></br><tr><td>NAME:</td><td>"
                                + data.param.paramName + "</td></tr>";
                        $("#urlTable").append(html);
                    }
                });
            });
});
上面红色加粗的部分是拼接URL,可以看到请求成功后将数据渲染到当前页面了。接下来创建控制器
3、创建控制器
@Controller
@RequestMapping("/param")
public class ParamController { /**
* 通过URL的方式传递参数
*
* @param id
* @param name
* @return
*/
@RequestMapping(value = "urlParam/{id}/{name}", method = RequestMethod.POST)
public ModelAndView getParamByurl(@PathVariable("id") Integer id, @PathVariable("name") String name) {
ModelAndView mv = new ModelAndView();
System.out.println(id);
System.out.println(name);
Param param = new Param();
param.setParamId(id);
param.setParamName(name);
mv.addObject(param);
mv.setView(new MappingJackson2JsonView());
return mv;
}
}
注意上面代码中加粗的部分:
1⃣️注解@RequestMapping中的value值就是请求这个方法的URL,URL中包含两个参数id和name
2⃣️注解@PathVariable用来获取传过来的参数值,名称就是前端传递的参数名;
控制器获取到数据后渲染成json视图,所以在刚才请求的页面可以获取到返回的数据。
注意⚠️:使用MappingJackson2JsonView映射json视图的时候,需要导入相关的包,而且是2.0以上的,我在maven中添加的依赖如下:
<!--jackson json视图相关 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.5</version>
</dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.5</version>
</dependency>
因为在第二步中已经将数据渲染到请求页面,所以全部代码已经完成,下面进行测试。
4、测试
在页面输入如下参数:

点击提交按钮
在控制台可以看到请求的URL如下:

请求成功的结果如下:

蓝色框内是渲染的参数,说明控制器获取成功!
5、总结
- 控制器接受URL参数时,需要通过注解@RequestMapping和注解@PathVariable配合使用,前者映射URL,后者获取参数;
 - URL中的参数需要用{}扩起来,表示处理器需要接受一个URL组成的参数,且参数名称为{}中的值,name@PathVariable将会获取在@RequestMapping中定义的参数值,这样就可以在方法内使用这个值了。
 
Spring MVC(六)--通过URL传递参数的更多相关文章
- 使用Spring mvc接收整个url地址及参数时注意事项
		
使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...
 - Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
		
阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...
 - 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
		
浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...
 - Spring MVC在接收复杂集合参数
		
Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...
 - 【Django】url传递参数
		
1. url传递参数的特殊字符 在压缩后,可能出现 + - = 空格 这类特殊字符,需要在传递前进行url编码 urllib.enquote(string) 获取参数后 urllib.un ...
 - 8)django-示例(url传递参数)
		
url传递参数有两种,一个是通过普通分组方式,一个是通过带命名分组方式 1.传递方式 1)普通分组方式,传递参数顺序是严格的.如下例子 url(r'^detail-(\d+)-(\d+).html', ...
 - html5页面与android页面之间通过url传递参数
		
html5页面与android页面之间可以通过url传递参数,android将参数放在htm5的url ?后面,js获取url ?号后面的参数. 方法一: <scrīpt> /* 用途 ...
 - 用URL传递参数
		
用URL传递参数,在园子里找到一篇文章解决了自己的问题,地址如下:http://www.cnblogs.com/lolicon/archive/2009/01/19/1378408.html
 - 关于Url传递参数
		
Url传递参数时,后台取值会直接取等号后面的内容,包括引号在内. 比如: http://localhost:8080/user?name='admin' 这是错误的做法,后台获取到的参数是包括引号 ...
 
随机推荐
- 更改idea启动内存信息
			
1.到idea的安装目录的bin下,找idea64.exe.vmoptions 文件 2.更改参数 对应的参数解释: -Xms1024m 设置IDEA初时的内存大小,提高Java程序的启动速度. ...
 - 判断APP是否已安装
			
NSString *str = [NSString stringWithFormat:@"%@://%@",[dic objectForKey:@"ios_url_sch ...
 - shell 命令 链接文件  ln
			
1. 创建软链接文件 [ ln -s 源文件 链接文件] 类似于windows下的快捷方式 [ ln -s expr.sh expr ] 此时创建的链接文件路径是相对于现在所在的路径 ...
 - Nginx安装及分流多个web服务
			
Ngnix安装及常用配置 一.安装Nginx 1.检查依赖 yum install gcc-c++ yum install -y pcre pcre-devel yum install -y zlib ...
 - 【学术篇】bzoj3262 陌上花开. cdq分治入门
			
花儿们已经很累了-- 无论是花形.颜色.还是气味, 都不是为了给人们摆出来欣赏的, 更不是为了当做出题的素材的, 她们并不想自己这些属性被没有生命的数字量化, 并不想和其它的花攀比, 并无意分出个三六 ...
 - dex2jar+jd-gui反编译apk的使用方法
			
1.将要反编译的APK后缀名改为.rar或 .zip,并解压 2.得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出 ...
 - java6大原则之单一职责原则,里式替换原则
			
单一职责原则:一个接口,一个类,一个方法,最好只做一类事,当然,在真实的项目中,一系列因素下,很难做到单一职责原则,但是针对接口是可以做到的,方法和类要尽量做到 里式替换原则:父类出现的地方,换成子类 ...
 - 【BZOJ2298】【luoguP2519】problem a
			
description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) analysis 这题转化模 ...
 - Go语言简介以及安装
			
http://www.runoob.com/go/go-tutorial.html Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Grie ...
 - Perl 环境安装
			
Perl 环境安装 在我们开始学习 Perl 语言前,我们需要先安装 Perl 的执行环境. Perl 可以在以下平台下运行: Unix (Solaris, Linux, FreeBSD, AIX, ...