【springMVC】之参数传递

时间:2022-08-27 22:04:09

    因为项目中要用到SpringMVC,这段时间便快马加鞭地学习了一下。所以这段时间呢会陆续更新关于springMVC的博客。由于项目那边也比较紧,月底之前要完成第一次迭代,所以可能有的时候博客更新并不是那么及时和连贯,敬请谅解。


    今天,我们从SpringMVC最基础的传递参数开始讲起。其实看视频的过程就是一个了解的过程,但是真正要运用到实践中并成为自己的东西,这需要一个过程,而且这个过程很必要也很重要。在看视频学习的过程中,你会发现,虽然你跟着视频敲下来了,貌似很多东西也懂了,但是把全部东西收起来,自己敲自己写,总会有一种无力地感觉。你说对了,就是写得少、练得少。我们能干活,不缺乏照猫画虎的能力,却缺少自己写的能力,这是我们需要规避和提升的地方。


    因为springMVC我也是刚刚学,所以很多地方都是从最基础的部分开始。这也就是告诉大家了,如果您已经很牛、很擅长这部分的内容,可能我的博客并不是特别适合你。我这个写博客的过程,既是整理知识的过程,总结的过程,同时又是本着分享的目的,同一同开始学习springMVC的同学一起交流经验。好了,闲话不多说,我们开始正题。


    所谓参数传递,就是从前台JSP页面传到后台Controller这么一个过程。看着很简单哈,但是不要眼高手低哦,跟着我一起去看看这个过程是怎样的一个过程。


    首先,传递不是特别大的参数的时候,就按照常规的方式来。新建一个jsp页面,add.jsp

<script type="text/javascript">
	<%--用js提交代码--%>
	function addUser(){
		var form = document.form[0];
		form.action = "/springMVC/user/data/addUser";
		form.method = "get";
		form.submit();
	}
</script>
</head>
<body>
	<h>添加用户</h>
	<form action="">
		姓名:<input type="text" name="username">
		年龄:<input type="text" name="age">
		
		<input type="button" value="添加” onclick="addUser()">
	</form>
</body>


    再创建一个jsp页面,userManager.jsp,留着添加完页面跳转。

<body>
	<h1>用户管理</h1>
	姓名:*************${userName }
	<br/>
	年龄:*************${age }
</body>


    接下来就要看前台和后台怎么传递参数了。我们先在后台创建一个Controller类DataController.java。这里有一个问题,不知道大家注意没有,这个也是springMVC参数传递的关键,就是前台的jsp页面中的<input>标签中的name属性会自动跟后台Controller方法中的参数进行匹配,所以就要求二者的名称必须一致,否则参数就传递不过去了。

@Controller
@RequestMapping("/user/data")
public class DataController {
	//给一个方法注解,方法的注解是什么样子的呢?即@RequestMapping
	@RequestMapping("/addUser")
	//这个注解里有两个参数,其中value是什么意思呢?就是我们要请求的url地址
	//另外一个参数就是method,就是以哪种方式请求过来
	public String addUser(String userName, String age, HttpServletRequest request){
		request.setAttribute("userName", userName);
		request.setAttribute("age", age);
		
		return "/userManager";
	}

	@RequestMapping("/delUser")
	public String delUser(){
		return "";
	}
	
	//先到达jsp页面,才能去填写数据、点击按钮、传递参数,所以编写一个到达页面的方法
	@RequestMapping("/toUser")
	public String toUser(){
		return "/addUser";
	}
}

    这样的话,整个springMVC从前台传递参数到Controller就结束了。作为springMVC的入门,有很多地方值得我们深挖,比如说web.xml配置文件、springMVC的配置文件、注解、前台jsp的很多属性是如何和后台相对应的等等。上面的例子介绍的是比较小的参数传递,如果碰上特别大的参数,该怎么办呢?下面我们继续介绍通过实体传递参数。
创建实体User.java实体。

package com.tgb.web.controller.entity;

public class User{
	
	private String username;
	
	private String age;
	
	//取值时用get方法
	public String getUsername(){
		return username;
	}
	
	//赋值用set方法
	public void setUsername(String username){
		this.username = username;
	}
	
	//注意的是,实体中这部分的get/set方法名中(抠去get/set的部分)就是jsp页面中input标签中的name值(一律改成小写)
	public String getAge(){
		return age;
	}
	
	public void setAge(String age){
		this.age = age;
	}
}

    上部分的controller部分DataController.java改成如下:

//public String addUser(String userName, String age, HttpServletRequest request){
//引用了实体之后,参数部分由原来的单个参数变成了传递实体,直接写User user就可以了。
public String addUser(User user, HttpServletRequest request){
	//request.setAttribute("userName", username);
	//request.setAttribute("age", age);
	
	//引用了实体之后,更改为:
	request.setAttribute("userName", user.getUsername());
	request.setAttribute("age", user.getAge());
	
	return "/userManager";
}

    除此之外,还有一种方式,就是通过json去传递参数,对于springMVC刚入门的亲们而言,这种方式似乎有点儿难,但是如果您之前对json串很熟,那么这种传递参数的方式对您来说也是so easy。json就是一个key对应一个value,记得之前做WZQX_权限系统的时候,要实现一个从数据库中读取数据,动态加载成树形菜单的功能,当时我就是用zTree通过拼json串实现的。好了,回来继续说我们这个用json传递参数的例子,就在jsp页面中改成通过json传递就可以了,具体代码如下:  

<html>
<head>
<!-- 引入jquery的包 -->
<script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
		//用jquery方法获取json串,写一个jquery的最根本的目录
		$(document).ready(function(){
			$("#add").click(function(){
				//首先取得表单里面的两个值
				var userName = $("#userName").attr("value");
				var age = $("#age").attr("value");
				
				//定义一个json串,然后赋到json串里面
				var user = {userName:userName,age:age};
				
				//jquery去提交这个json串,采用Ajax的方式去提交
				$.ajax({
					url:"/springMVC6/user/data/addUserJson",
					type:"post",
					data:user,
					success:function(data){
						alert("userName----->" + data.userName + "age------->" + data.age );
					}
				})
			});
		});
</script>
</head>
<body>
		<h>json添加用户</h>
		姓名:<input type="text" id="userName" name="userName">
		年龄:<input type="text" id="age" name="age">
		<input type="button" id="add" value="添加">   <%--给这个input标签绑定事件,就是上面那个ready函数 --%>
		
</body>
</html>

    这样,springMVC中传递参数的例子到这里就差不多了。上面我们总共介绍了三种传递参数的方式,分部是单个传递、实体传递和通过json传递。其实不论是单个传递参数也好,通过实体传递还是通过json也好,大体上的原理是相通的吗,只要掌握了最基本的,其他的都是在最基础上稍作那么一点点改动。

    好了,今天关于springMVC传递参数的博客就到这里了。下一篇文章我们来研究一下springMVC静态文件的访问。敬请期待,欢迎在下面留言和我沟通.....