以pojo的方式传递参数适用于参数较多的情况,或者是传递对象的这种情况,比如要创建一个用户,用户有十多个属性,此时就可以通过用户的pojo对象来传参数,需要注意的是前端各字段的名称和pojo对应的属性名称必须一致,否则就会失败。废话不说,直接用代码举例了,我的场景是这样的:

从页面输入四个字段,控制器通过pojo的方式接受,然后将接受到的数据渲染到新的页面,即在新的页面获取刚才传过去的值。

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">
<!--pojo参数传递 -->
<div class="pojo public">
<p style="text-align: center;">pojo参数传递</p>
<form id="pojoForm" action="<%=basePath%>param/pojoParam"
method="post">
<table>
<tr>
<td>id:</td>
<td><input type="text" name="paramId" value=""></td>
</tr>
<tr>
<td>名称:</td>
<td><input type="text" name="paramName" value=""></td>
</tr>
<tr>
<td>描述:</td>
<td><input type="text" name="paramDesc" value=""></td>
</tr>
<tr>
<td>时间:</td>
<td><input type="text" name="pramTime" value=""></td>
</tr>
<tr>
<td></td>
<td style="text-align: right;"><input type="submit"
value="提交" id="setPojoParam"></td>
</tr>
</table>
</form>
</div> </body>
</html>

页面如下:

这里将这是信息映射为一个pojo对象,所以下一步就是创建pojo对象

2、创建pojo对象

package com.mvc.pojo;

public class Param {
private Integer paramId; private String paramName; private String paramDesc; private String pramTime; public Integer getParamId() {
return paramId;
} public void setParamId(Integer paramId) {
this.paramId = paramId;
} public String getParamName() {
return paramName;
} public void setParamName(String paramName) {
this.paramName = paramName == null ? null : paramName.trim();
} public String getParamDesc() {
return paramDesc;
} public void setParamDesc(String paramDesc) {
this.paramDesc = paramDesc == null ? null : paramDesc.trim();
} public String getPramTime() {
return pramTime;
} public void setPramTime(String pramTime) {
this.pramTime = pramTime == null ? null : pramTime.trim();
}
}

注意⚠️:pojo中的属性名和前端表单中对应的字段名保持一致,开发过程直接复制,以免出错;

3、创建控制器

@Controller
@RequestMapping("/param")
public class ParamController { /**
* 获取pojo参数:pojo的属性和表单中name必须保持一致
*
* @param param
* @return
*/
@RequestMapping(value = "pojoParam", method =
RequestMethod.POST)
public ModelAndView getPojoParam(Param param) {
ModelAndView mv = new ModelAndView();
System.out.println(param.getParamName());
System.out.println(param.getParamDesc());
System.out.println(param.getPramTime());
mv.addObject("param", param);
mv.setViewName("pojoParam");
return mv;
}

上面的代码中,控制器接受参数的时候,直接使用一个pojo对象,这样就能通过get方法获取各个属性的值了。接受成功之后控制器会把数据渲染到新的视图pojoParam中,所以下一步就是创建pojoParam这个视图。

4、创建响应视图pojoParam.jsp

<%@ 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">
<title>Pojo Param</title>
</head>
<body> <h2>
获取到的参数ID:<label>${param.paramId }</label> <br /> 获取到的参数名称:<label>${param.paramName }</label><br />
获取到的参数描述:<label>${param.paramDesc }</label><br /> 获取到的参数时间:<label>${param.pramTime }</label><br />
</h2> </body>
</html>

在这个视图中显示数据,即将数据渲染到视图。至此代码全部完成,下面进行测试,首先在页面输入以下数据:

然后点击提交按钮,结果如下:

可以看到接受成功,渲染也成功,URL地址也跟着发生了变化。

5、总结

这种方式和上一篇中提到的方式,都有一个约定,就是前端的参数名和后端的参数名或 pojo对象中的属性名称必须保持一致,但是有时候前后端的命名规则不一致,比如前端使用下划线方式命名,如user_name,而后端时候驼峰式命名,如userName,这样就不能使用这种方式传递了,而是通过注解,下一篇文章中介绍。

Spring MVC(四)--控制器接受pojo参数的更多相关文章

  1. Spring MVC(三)--控制器接受普通请求参数

    Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...

  2. Spring MVC(八)--控制器接受简单列表参数

    有些场景下需要向后台传递一个数组,比如批量删除传多个ID的情况,可以使用数组传递,数组中的ID元素为简单类型,即基本类型. 现在我的测试场景是:要从数据库中查询minId<id<maxId ...

  3. Spring MVC(九)--控制器接受对象列表参数

    前一篇文章介绍是传递一个参数列表,列表中的元素为基本类型,其实有时候需要传递多个同一类型的对象,测试也可以使用列表,只是列表中的元素为对象类型. 我模拟的场景是:通过页面按钮触发传递参数的请求,为了简 ...

  4. Spring MVC(六)--通过URL传递参数

    URL传递参数时,格式是类似这样的,/param/urlParam/4/test,其中4和test都是参数,这就是所谓的Restful风格,Spring MVC中通过注解@RequestMapping ...

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

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

  6. Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式

    ylbtech-Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式 1.返回顶部 1. 常用的一些Spring MVC的路由写法以及参数传递方式. 这是 ...

  7. Spring MVC(五)--控制器通过注解@RequestParam接受参数

    上一篇中提到,当前后端命名规则不一致时,需要通过注解@RequestParam接受参数,这个注解是作用在参数上.下面通过实例说明,场景如下: 在页面输入两个参数,控制器通过注解接受,并将接受到的数据渲 ...

  8. 前台ajax传参数,后台spring mvc用对象接受

    第二种方法:利用spring mvc的机制,调用对象的get方法,要求对象的属性名和传的参数名字一致(有兴趣的同学看 springmvc源码) 1.将参数名直接写成对象的属性名 $.ajax({ ur ...

  9. Spring MVC 为控制器添加通知与处理异常

    与Spring AOP一样,Spring MVC也能够给控制器加入通知,它主要涉及4个注解: •@ControllerAdvice,主要作用于类,用以标识全局性的控制器的拦截器,它将应用于对应的控制器 ...

随机推荐

  1. NEERC 1999 Advertisement /// oj22646

    题目大意: 输入k,n :k为每位慢跑者最少应看到的广告牌数 接下来n行 描述第 i 位慢跑者的途径路段 输出需要设立的广告牌数 接下来每行为设立地点 Sample Input 5 101 1020 ...

  2. MySQL - 锁等待超时与information_schema的三个表

    引用地址:https://blog.csdn.net/J080624/article/details/80596958 回顾一下生产中的一次MySQL异常,Cause: java.sql.SQLExc ...

  3. luogu P1332 血色先锋队[bfs]

    题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好 ...

  4. identifier of an instance of xx.entity was altered from xxKey@249e3cb2 to xxKey@74e8f4a3; nested exception is org.hibernate.HibernateException: identifier of an instance of xxentity was altered from错误

    用entityManager保存数据时报错如下 identifier of an instance of xx.entity was altered from xxKey@249e3cb2 to xx ...

  5. day22_3-json模块

    # 参考资料:# python模块(转自Yuan先生) - 狂奔__蜗牛 - 博客园# https://www.cnblogs.com/guojintao/articles/9070485.html# ...

  6. Spring有关面试问题

    问题清单: 什么是Spring框架?Spring框架有哪些主要模块? 使用Spring框架有什么好处? 什么是控制反转(IOC)?什么是依赖注入? 请解释下Spring中的IOC? BeanFacto ...

  7. django零散知识点

    后端将对象以对象形式传到前端: from django.core.serializers import serialize def xxx(reqeust): project_list = model ...

  8. USACO training course Mother's Milk /// DFS(有点意思) oj10120

    题目大意: 输入 A B C 为三个容器的容量 一开始A B是空的 C是满的 每一次倾倒只能在 盛的容器满 或 倒的容器空 时才停止 输出当A容器空时 C容器内剩余量的所有可能值 Sample Inp ...

  9. Nginx 教程 1:基本概念

    简介 我们会告诉你 Nginx 是如何工作的,其背后的概念有哪些,以及如何优化它以提升应用程序的性能.还会告诉你如何安装,如何启动.运行. 这个教程包括三节: 基础概念——你可以了解命令(direct ...

  10. 2019-2-17-如何在-Windows-10-中移除-Internet-Explorer-浏览器

    title author date CreateTime categories 如何在 Windows 10 中移除 Internet Explorer 浏览器 lindexi 2019-02-17 ...