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框架通过DispatcherServlet调用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()方法

上一篇:测试开发进阶——spring boot——MVC——thymeleaf模板——通过ModelAndView返回数据给模板——示例


下一篇:Java黑马百度云,史上最全SpringMVC教程,从零开始带你深入♂学习