微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Springmvc中获取前端参数的方法

一、HttpServletRequest

@RequestMapping("/...")
public ModelAndView doSome(HttpservletRequest request,HttpServletResponse response,HttpSession session)
{
String name = request.getParameter("name");//接收到的参数

}

二、HttpServletResponse

三、HttpSession

四、用户提交的数据

接收用户提交的参数:

1.逐个接收

第一种:

要求:处理器方法的形参名和请求中参数名必须一致。同名的请求参数赋值给同名的形参

例如,用前端用表单提交数据时

<form action="dosome.do" method="post">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="提交">
</form>
@Controller
class MyController{

@RequestMapping("/dosome.do")
public ModelAndView doSome(String name,int age)
{
    //可以直接使用参数...
    //例如:
    ModelAndView mv = new ModelAndView();
    mv.addobject("myname",name);
    mv.addobject("myage",age);
    ......
    .......
}

}

框架处理参数的原理:

①使用request对象接收请求参数

String strName = request.getParameter("name");
String strAge = request.getParameter("age");

②springmvc框架通过@R_502_6422@patcherServlet调用MyController中的dosome()方法调用方法时,按名称对应,把接收的参数赋值给形参

dosome(strName,Integer.valueOf(strAge));

框架会提供类型转化的功能,能把String转为int、long、float、double等类型。所以可以直接在方法中使用参数中的值

注意事项:如果上述案例中int age接收的值为空值,页面会出现400错误

解决办法:使用它的包装类Integer。参数中使用包装类命名变量,可以避免空字符串转化的错误

@Controller
class MyController{

@RequestMapping("/dosome.do")
public ModelAndView doSome(String name,Integer age)
{
    //可以直接使用参数...
    //例如:
    ModelAndView mv = new ModelAndView();
    mv.addobject("myname",name);
    mv.addobject("myage",age);
    ......
    .......
}

}

第二种:

使用@RequestParam注解,解决请求中参数名与形参名不一样的问题

@RequestParam的 属性:1.value 请求中的参数名称

                                           2.required一个boolean,认为true,true表示请求中必须包含此参数

                                位置:在处理器方法形参定义的前面

例如,现在有一个表单提交数据

<form action="dosome.do" method="post">
<input type="text" name="rname">
<input type="text" name="rage">
<input type="submit" value="提交">
</form>
@Controller
class MyController{

@RequestMapping("/dosome.do")
public ModelAndView doSome(@RequestParam(value = "rname") String name,@RequestParam(value = "rage") Integer age)
{
    ModelAndView mv = new ModelAndView();
    mv.addobject("myname",name);
    mv.addobject("myage",age);
    ......
    .......
}

}

2.对象接收

将处理器方法的参数定义为一个对象,只要保证请求参数名与这个对象的属性同名即可。

创建一个保存请求参数值的普通类,属性名和请求中的参数名相同

public class Student{
    private String name;
    private int age;


    get...
    set...

}
@Controller
class MyController{

@RequestMapping("/dosome.do")
public ModelAndView doSome(Student student)
{
    ModelAndView mv = new ModelAndView();
    mv.addobject("myname",student.getName());
    mv.addobject("myage",student.getAge());
    mv.addobject("mystudent",student);
    ......
    .......
}

}

框架会创建形参的java对象,给属性赋值。比如,请求中的参数是name,框架会调用它的setName()方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐