前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)

《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)

作者头像
I Teach You 我教你
发布2019-05-25 17:45:39
4520
发布2019-05-25 17:45:39
举报

一、接收对象参数

jsp页面:

代码语言:javascript
复制
<%@ 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:

代码语言:javascript
复制
package cn.wechatbao.entity;

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

Controller:

代码语言:javascript
复制
@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):

代码语言:javascript
复制
<%@ 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类。如下:

代码语言:javascript
复制
public class School {
    private String sname;
    private String address;
    //省略getter、setter
}

修改Student类,如下:

代码语言:javascript
复制
public class Student {
    private String name;
    private int age;
    private School school;
//省略getter、setter
}

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

代码语言:javascript
复制
<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>

三、接收路径变量

Controller:

代码语言:javascript
复制
@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")之类的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档