zoukankan      html  css  js  c++  java
  • 《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)

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

    一、接收对象参数

    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")之类的。

  • 相关阅读:
    linux多线程学习笔记五--线程安全【转】
    linux多线程学习笔记六--一次性初始化和线程私有数据【转】
    【Linux】可重入函数和线程安全的区别与联系【转】
    【Linux】自主实现my_sleep【转】
    Linux/Unix编程中的线程安全问题【转】
    C语言字符串操作总结大全(超详细)【转】
    linux中的strip命令简介------给文件脱衣服【转】
    FTK应用程序编程接口(API)手册-1【转】
    python编程(python开发的三种运行模式)【转】
    ftk学习记(label篇)【转】
  • 原文地址:https://www.cnblogs.com/xinhudong/p/10550177.html
Copyright © 2011-2022 走看看