Spring MVC 从页面向Controller传递参数的方式

Spring MVC从页面向Controller传值的方式

从页面向Controller 传值的方式有很多,本文整理出常用的从页面向Controller传值的几种方式:

1、通过HttpServletRequest 向后台传递数据

     页面程序如下:

    <h2>利用HttpServletRequest传数据</h2>
    <form action="loginToJson">
        用户名:<input name="name" /> 密码:<input name="pass" /> <input
            type="submit" value="登陆">
    </form>

    后台程序段如下:

    

    @ResponseBody

    @RequestMapping(value="/loginToJson",method=RequestMethod.POST)

    public String loginToJson(HttpServletRequest request) {

       User user = new User();

       user.setUserName(request.getParameter("name"));

       user.setPassword(request.getParameter("pass"));

       return JSON.toJSONString(user);

    }

2、通过参数向Controller传递值

  前台程序如下:

    

    <h2>利用函数参数传数据</h2>

    <form action="loginByVariable" method="post">

         用户名:<input name="name" /> 密码:<input name="pass" />

         <input type="submit" value="登陆">

    </form>

  后台程序如下:

    

   @RequestMapping(value="/loginByVariable",method=RequestMethod.POST)

     public String loginToSession(HttpServletRequest request,ModelMap map,String name,String pass) {

          User user = new User();

          user.setUserName(name);

          user.setPassword(pass);

          map.put("user", user);

          System.out.println(user);

          return "mySession";

     }

  注意:前台<input name="name" />中的name属性的值,必须和后台函数参数中的String name中的形参名一致,否则从后台取不到值。

3、利用函数参数,对象传递值到Controller

    前置条件,对象的定义代码:

    注意这里,User对象的属性名为userName和password,并有getter和setter属性

     public class User{

    @Override
    public String toString() {
        return "User [userName=" + userName + ", password=" + password + "]";
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    private String userName;
    private String password;
}

    前台程序如下:

    注意:userNamepassword必须和对象属性名称一致。

    

     <h2>利用函数参数对象传数据</h2>

     <form action="loginByObject" method="post">

          用户名:<input name="userName" /> 密码:<input name="password" /> <input

               type="submit" value="登陆">

</form>

    后台程序如下:

     

      @RequestMapping(value="/loginByObject",method=RequestMethod.POST)

      public String loginToSession(ModelMap map,User user) {

            User user1 = new User();

            user1.setUserName(user.getUserName());

            user1.setPassword(user.getPassword());

            System.out.println(user1+" Object");

            map.put("user", user1);

            return "mySession";

      }

4、利用函数参数@RequestParam参数传递据

       前台代码如下:

     <br>

     <h2>利用函数参数@RequestParam参数传递据</h2>

     <form action="loginByRequestParm" method="post">

          用户名:<input name="name" /> 密码:<input name="pass" /> <input

               type="submit" value="登陆">

     </form>

           后台程序如下:

 @RequestMapping(value="/loginByRequestParm",method=RequestMethod.POST)

         public String loginToSessiona(HttpServletRequest request,ModelMap map,

               @RequestParam("name") String UserName,@RequestParam String pass) {

          User user = new User();

          user.setUserName(UserName);

          user.setPassword(pass);

          map.put("user", user);

          System.out.println(user+"requestParam");

          return "mySession";

     }

注意:@RequestParam("name")中如果有参数,name必须为页面中属性的值,如果没有参数,则参数名,必须和页面中属性的值相同,如页面中pass,则在@RequestParam中,则可以不指定参数,但形参的名字必须为pass

5、   通过URL传递参数  @PathVariable

 具体代码如下:   

      

@Controller
public class TestController {
     @RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET)
     public String getLogin(@PathVariable("userId") String userId,
         @PathVariable("roleId") String roleId){
         System.out.println("User Id : " + userId);
         System.out.println("Role Id : " + roleId);
         return "hello";
     }
     @RequestMapping(value="/product/{productId}",method = RequestMethod.GET)
     public String getProduct(@PathVariable("productId") String productId){
           System.out.println("Product Id : " + productId);
           return "hello";
     }
     @RequestMapping(value="/javabeat/{regexp1:[a-z-]+}",
           method = RequestMethod.GET)
     public String getRegExp(@PathVariable("regexp1") String regexp1){
           System.out.println("URI Part 1 : " + regexp1);
           return "hello";
     }
}

原文地址:https://www.cnblogs.com/peiyangjun/p/8185625.html

时间: 2024-11-07 05:29:05

Spring MVC 从页面向Controller传递参数的方式的相关文章

SpringMVC jsp页面向controller传递参数的五种方式

一共是五种传参方式: 一:直接将请求参数名作为Controller中方法的形参 public  String login (String username,String password)   : 解释:括号中的参数必须与页面Form 表单中的name 名字相同 二:使用@RequestParam 绑定请求参数参数值 举例:public String login(RequestParam ("username") String name) : 解释:双引号中的username 必须与页

使用Spring MVC 的 @RequestBody 映射json请求参数时报异常问题

使用Spring MVC 的 @RequestBody 映射json请求参数时报"The request sent by the client was syntactically incorrect."异常解决方案 最近工作中开发RESTful接口需要处理客户端上传的json,图方便想起Spring的Controller中有@RequestBody可以优雅地完成json报文与Java类的映射,但是使用时碰到了 "The request sent by the client w

spring mvc 3.1的自动注入参数遇到的问题

在网上下载了xheditor作为页面的编辑器,编辑内容后post到后台保存,后台方法用spring mvc的自动注入的方式接收参数. 这种方式在各个浏览器下运行良好,但是在ie11下发现,从word.文本编辑器或者其它编辑器复制内容到xheditor后,这时提交到后台的参数不能被接收到. 仔细排查下发现ie11下复制到xheditor的内容都被默默的加了一段无用的div: <div style="top: 0px;"> </div> 此时用最原始的接收参数的方式

传递参数的方式

DATA: I_NUM1 TYPE I VALUE 10,       I_NUM2 TYPE I VALUE 20,       I_NUM3 TYPE I. WRITE: 'I_NUM1=',I_NUM1,        'I_NUM2=',I_NUM2,        'I_NUM3=',I_NUM3. SKIP. PERFORM CALCULATOR USING I_NUM1 I_NUM2 CHANGING I_NUM3. WRITE:  /'I_NUM1=',I_NUM1,      

总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式

在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等. 关于数据,JavaScript对象有时候和json长得一模一样,有么有? var person = {Name: 'darren', Age: 21};以上是一个JavaScript对象.不过也可以这样表示: var person = {"Name":"darren","Age":21};以上JavaScript对象的另外一种表

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

Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数名称和pojo属性一致即可: 注解方式:当前端参数名和控制器名称不一致时可以使用注解方式,比如前端是param_id,而控制器中是paramId的情况: URL方式:当前端以restful格式传递参数时,后台使用这种方式接受: JSON方式:前后端如果用json方式交互时,可以使用这种方式,这是常用

Spring MVC无法获取ajax POST的参数和值

一.怎么会这个样子 很简单的一个想法,ajax以POST的方式提交一个表单,Spring MVC解析.然而一次次的打印null折磨了我整整一天…… 最后的解决现在看来是很明显的问题,“只是当时已惘然”…… 学海无涯!学海无涯!学海无涯! 二.简单的原罪 ajax提交的代码如下: 1 <script type="text/javascript"> 2 $(document).ready(function() { 3 $("#submit").click(f

Spring MVC-控制器(Controller)-参数方法名称解析器(Parameter Method Name Resolver )示例(转载实践)

以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_parametermethodnameresolver.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显示如何使用Spring Web MVC框架使用多操作控制器的参数方法名称解析器方法.MultiActionController类有助于分别在单个控制器中将多个URL与其方法映射. package com.tutorialspoint; import java

【Spring】DI 依赖注入传递参数的方式

DI依赖注入传入参数的方式,这里介绍了基本数据类型,集合,符合数据类型的传递(String类型比较特殊,其传递值和基本数据类型的方法一致) 注入基本数据类型和String类型 通过setter方法注入基本数据类型与String 案例: <bean id="book" class="cn.xdl.bean.Book"> <!-- 对于基本数据类型 与 String的注入操作 通过set方法 ,完成注入 name: 属性的名称 value: 属性要赋的