上一篇我们学习了简单的参数接收方式,以及对编码的统一处理。今天我们来接收对象参数。

一、接收对象参数

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head> <body>
<form action="${pageContext.request.contextPath }/user/login.do">
姓名:<input name="name" type="text" />
年龄:<input name="age" type="text" />
<input type="submit" value="注册" />
</form>
</body>
</html>

Entity:

package cn.wechatbao.entity;

public class Student {
private String name;
private int age;
//省略getter、setter
}

Controller:

@RequestMapping("/login.do")
public ModelAndView login(Student student) throws Exception {
System.out.println("name="+student.getName());
System.out.println("age="+student.getAge());
ModelAndView mv = new ModelAndView();
mv.addObject("student", student);
mv.setViewName("/WEB-INF/jsp/success.jsp");
return mv;
}

成功的提示页面(success.jsp):

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SpringMVC1</title>
</head> <body>
${student }
</body>
</html>

注意:整体接收需要表单的name属性值与实体的属性名一致。比如input的name为age,那么与之对应的实体类中,必须有一个age属性,并且该age属性需要有getter、setter方法。

二、域属性参数接收

域属性参数就是在A类中有一个为B类的属性。这时,我们对刚才的代码进行修改。新增School类。如下:

public class School {
private String sname;
private String address;
//省略getter、setter
}

修改Student类,如下:

public class Student {
private String name;
private int age;
private School school;
//省略getter、setter
}

修改index.jsp页面的Form表单,如下:

<form action="${pageContext.request.contextPath }/user/login.do">
姓名:<input name="name" type="text" />
年龄:<input name="age" type="text" />
学校名称:<input name="school.sname" type="text" />
学校地址:<input name="school.address" type="text" />
<input type="submit" value="注册" />
</form>

三、接收路径变量

路径变量不作过多的介绍,只要了解就OK了。访问路径如下:

http://localhost:8080/SpringMVC/user/zhangsan/24/register.do

Controller

@RequestMapping("/{name}/{age}/register.do")
public ModelAndView register(@PathVariable String name,@PathVariable int age) throws Exception {
System.out.println("name="+name);
System.out.println("age="+age);
ModelAndView mv = new ModelAndView();
mv.addObject("name", name);
mv.addObject("age", age);
mv.setViewName("/WEB-INF/jsp/success.jsp");
return mv;
}

注意:只是使用了一个@PathVariable的注解,该注解也可以指定name,如@PathVariable("pname")之类的。

《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)的更多相关文章

  1. 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值

    上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...

  2. 《SpringMVC从入门到放肆》九、SpringMVC注解式开发(简单参数接收)

    上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来.今天我们来学习注解开发的参数接收.处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用.具体 ...

  3. 《SpringMVC从入门到放肆》八、SpringMVC注解式开发(基本配置)

    上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发.所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式.对 ...

  4. SpringMVC 注解式开发

    SpringMVC的注解式开发是指,处理器是基于注解的类的开发.对于每一个定义的处理器,无需再配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册.即注解替换是配置文件中对于处理器的注册 ...

  5. 3.2.3 SpringMVC注解式开发

    SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @ ...

  6. SpringMVC笔记:annotation注解式开发

    一.配置式开发 在我们之前的学习中,springmvc使用配置式开发模式,需要在核心配置文件中springmvc.xml注册大量的bean来注入controller控制器,工作繁琐容易出错,下面我们学 ...

  7. 8.SpringMVC注解式开发-HelloWorld

    第一个注解式开发程序 SpringMVC 是 Spring 框架的一部分,所以它和Spring结合的是非常紧密的 使用 @Controller 注解,既可以将处理器交给Spring容器去管理,又可以说 ...

  8. 总结切面编程AOP的注解式开发和XML式开发

    有段日子没有总结东西了,因为最近确实有点忙,一直在忙于hadoop集群的搭建,磕磕碰碰现在勉强算是能呼吸了,因为这都是在自己的PC上,资源确实有点紧张(搭建过程后期奉上),今天难得大家都有空(哈哈哈~ ...

  9. Shiro授权及注解式开发

    目的: shiro授权 shiro注解式开发 Shiro授权 首先设计shiro权限表: 从图中我们也清晰的看出五张表之间的关系 ShiroUserMapper Set<String> g ...

  10. Spring MVC (二)注解式开发使用详解

    MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...

随机推荐

  1. 常用数据库:MongoDB

    下载地址:https://www.mongodb.com/download-center/community 安装及配置指南:https://docs.mongodb.com/manual/insta ...

  2. npx 是什么?

    参考链接:https://www.jianshu.com/p/cee806439865

  3. thrift安装及python和c++版本调试

    一.安装过程 1.安装依赖库 ]# yum install boost-devel-static libboost-dev libboost-test-dev libboost-program-opt ...

  4. linux 安装虚拟机

    如果虚拟机创建不了就重启电脑 重启时 按下F2 出现后 第二个 往下 有个默认的 那个那个 打开虚拟机 选择第一个 然后是选择语言选择软件里面的 软件选择选择 基本网页服务器(右侧选择 python ...

  5. selenium启动报错“ incorrect JSON status mapping for 'unknown error' (500 expected)”

    前面讲了工程启动报错“selenium启动报错Unable to read VR Path Registry from C:\Users\clinva\AppData\Local\openvr\ope ...

  6. web.xml 简记

    web.xml (tomcat启动时读取的配置文件) 首页配置 <welcome-file-list>:index.jsp servlet配置(<servlet>和<se ...

  7. Python3学习笔记十八

    1.    MTV M:   model     与数据库相关 T:   Template    与html相关 V:   views      与逻辑相关 一.    URL配置 启动:python ...

  8. Linux基础-命令(续)

    touch  命令: 如果文件不存在,创建文件,  如果文件存在,则修改文件最后修改时间. mkdir  命令: -p  递归创建目录,如,mkdir  -p  a/b/c/d Linux 中同一目录 ...

  9. CocosCraetor中图像资源Texture和SpriteFrame的区别

    Texture是保存在GPU缓冲中的一张纹理.是由一张图片创建获得的. SpriteFrame是Texture+Rect,根据一张纹理材质来剪切获得. SpriteFrame是Texture+Rect ...

  10. 并发编程futuretask

    package com.mrbird.api.demoThread.thread1; /** * @Description * @Date: 2019/3/29 */ import java.util ...