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' 这是错误的做法,后台获取到的参数是包括引号 ...
随机推荐
- Docker学习のDocker镜像
一.列出镜像 命令:docker images [optsions] [repositort] -a 标识列出所有 -f 写过滤条件 --no-trunc 不截断id -q 只显示唯一id rep ...
- pytorch clamp 与clamp_区别
pytorch clamp 与clamp_ ,有下划线的表示修改并付给自身,无下划线的表示需要返回处理后的值,比如: h = k.clamp(min=0) #将结果存入h,k保留原值 k.clamp_ ...
- centos7使用iptables作为防火墙方法
centos7使用iptables作为防火墙方法查看firewalld状态: systemctl status firewalld将centos7默认的firewalld停止,并将iptables作为 ...
- 【学术篇】SDOI2009 最优图像
又是一道辣鸡卡常数题…. luogu上有些题的时限还是有毒的… 最后也只能靠O2过掉了… 不过给我原题当时的2s我随便过给你看嘛, 哪怕评测姬慢50%都没关系的.. 贴一下codevs的截图… 你看最 ...
- Docker 尝试安装rabbitmq实践笔记
docker pull rabbitmq 自定義的rabbitmq Dockerfile # base image FROM rabbitmq:3.7-management # running req ...
- SpringBoot 非web项目简单架构
1.截图 2.DemoService package com.github.weiwei02.springcloudtaskdemo; import org.springframework.beans ...
- leetcode-219-存在重复元素②
题目描述: 第一次提交:超时 class Solution: def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool ...
- 基于V8引擎的C++和JS的相互交互
基于什么原因略! 1. 脚本引擎的基本功能 V8只是一个JS引擎.去除它的特点功能出处,它必须要实现JS引擎的几个基础功能: 脚本执行:脚本可能是一个表达式:一段js代码:或者一个文件执行表达式返回j ...
- Sublime text2 + cygwin编译C++
1.安装cygwin2.安装sublime text23.将g++和gdb加入系统环境变量(windows系统)3.安装package control4.通过package control安装subl ...
- re.groups取出来的空元祖??
源自学习笔记: day23_1_re_ groups方法取出来的字符是空的元组??为啥? ''' # ------------------------------------------------- ...