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传递参数的更多相关文章

  1. 使用Spring mvc接收整个url地址及参数时注意事项

    使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...

  2. Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...

  3. 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...

  4. Spring MVC在接收复杂集合参数

    Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...

  5. 【Django】url传递参数

    1.  url传递参数的特殊字符 在压缩后,可能出现  +  -  = 空格  这类特殊字符,需要在传递前进行url编码  urllib.enquote(string) 获取参数后 urllib.un ...

  6. 8)django-示例(url传递参数)

    url传递参数有两种,一个是通过普通分组方式,一个是通过带命名分组方式 1.传递方式 1)普通分组方式,传递参数顺序是严格的.如下例子 url(r'^detail-(\d+)-(\d+).html', ...

  7. html5页面与android页面之间通过url传递参数

    html5页面与android页面之间可以通过url传递参数,android将参数放在htm5的url  ?后面,js获取url  ?号后面的参数. 方法一: <scrīpt> /* 用途 ...

  8. 用URL传递参数

    用URL传递参数,在园子里找到一篇文章解决了自己的问题,地址如下:http://www.cnblogs.com/lolicon/archive/2009/01/19/1378408.html

  9. 关于Url传递参数

    Url传递参数时,后台取值会直接取等号后面的内容,包括引号在内. 比如:   http://localhost:8080/user?name='admin' 这是错误的做法,后台获取到的参数是包括引号 ...

随机推荐

  1. [笔记]Android开发环境配置及HelloWorld程序

    Android的开发须要下面四个工具: 1.JDK 2.Eclipse 3.Android SDK 4.ADT   具体功能: 1.JDK.JDK即Java Development Kit(Java开 ...

  2. 正版STlink的使用注意

    https://blog.csdn.net/xinghuanmeiying/article/details/78026561

  3. CSS布局标准

    回顾历史,CSS1于1996.12.17发正式版,它是为辅助HTML的展现效果而生的.1998.5.12,CSS2发正式版.随后发修订版CSS2.1,纠正了CSS2中的一些错误.注意从CSS2起,CS ...

  4. Docker学习のC/S模式

    我们操作docker是通过命令行客户端,然后和守护进程通信 以前的是通过命令行 我们还可以通过RemoApI的形式,通过自己的程序访问docker 和守护进程链接方式

  5. 防止xss漏洞-编码转义

    用JS进行转义还是用PHP进行转义,最后存入数据库的是什么形式 比如:用户输入: <script>alrt(0);</script>那数据库里面存储的是源数据还是转以后的数据: ...

  6. Java Lambda map返回部分属性

    通过map,返回部分属性. MyUser,作为源数据 MyUserS,作为返回的新数据. @Test public void Test1() { List<MyUser> ulist=ne ...

  7. 【笔记篇】不普及向——莫比乌斯反演学习笔记 && 栗题HAOI2011 Problem B

    Part0 广告(当然没有广告费) P.S. 这篇文章是边学着边用Typora写的...学完了题A了blog也就呼之欲出了~有latex化式子也非常方便...非常建议喜欢Markdown的dalao们 ...

  8. 【学术篇】NOIP2017 d2t3 列队phalanx splay做法

    我可去他的吧.... ==============先胡扯些什么的分割线================== 一道NOIP题我调了一晚上...(其实是因为昨晚没有找到调试的好方法来的说...) 曾经我以 ...

  9. sql(7)

    EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据. EXCEPT 子句/运算符用于将两个 SELECT 语句结合在一起,并返回第一个 SELECT 语句的结果中那些不存在于第二个 S ...

  10. linux 下使用scp命令传输文件

    scp -P 1234 /home/wakasann/test.txt wakasann@192.168.1.30:/var/www/html/ 使用 1234端口,将 test.txt文件传输到服务 ...