关于使用srping @RequestParam 容易出错的地方

时间:2021-01-27 07:03:24

大家都知道,在spring中的@RequestParam主要用户传递参数用的,具体的解释就是将请求参数去数据映射到功能处理方法的参数上。其中包括三个参数:

value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;

required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;

defaultValue:默认值,表示如果请求中没有同名参数时的默认值,默认值可以是SpEL表达式,如“#{systemProperties['java.vm.version']}”。

具体的用法为(我以form表单提交为例):

html代码:

<form action="localhost:8080/vincent/admin/video/add.htm" method="post" enctype="multipart/form-data" name="fom" id="fom" >

提交文字内容:<input name="name" id="name" />

提交文件:<input name="file" id="file" type="file"/>

提交按钮:<input type="button" name="Submit" value="提交" onclick="submit()"/>

</form>

js代码:

<script>

function submit() {

var name = $f("name").value;  //获得文字内容,用于判断用户输入了没有

if(name == null || name == "") {
        alert("菜单名称不能为空!");
        return;
    }
    $f("fom").submit();  //如果判断都没有问题,那么就把这些文字提交到web端

}

</script>

服务器端(java):

@Controller
@RequestMapping("/admin/video")   //要与form表单提交上来的路径保持一致(第一个路径)

public class VideoController{

@RequestMapping(method = RequestMethod.POST, value="add")  //  最后一个路径
    public ModelAndView add(@RequestParam("file") MultipartFile[] file,HttpServletRequest request){

//(重点:)看见上面@requestParam里面的值和MultipartFile[]的值没(就是:file),这个值一定要与form里面提交的一模一样才行,因为这个是文件类型,所以要用MultipartFile[]参数,除此之外,还有一点值得提醒的是:这个名字不能为特殊的符号,像#、_、*等等的都会报错。

  try {  //抛出异常,防止错误

      //得到文字内容

    String name=request.getParameter("name");  //通过httpservletRequest得到从form端提交上来的文字内容
            System.out.println(video.getName());           //打印出来看看

    

    //得到文件(以图片为例)内容,并存放在对应位置(前提是这个位置是已经存在的)

    if (!myfile.isEmpty()) { //判断提交的文件是不是空的,如果不是空的就存放在一定位置

     String realPath = request.getSession().getServletContext().getRealPath(""); //设置存放图片的路径
            realPath += "/images/news/";  //存放图片的路径
            String fileName = myfile.getOriginalFilename();  //得到完整到的图片名称

      System.out.println(fileName);           //打印出来看看

    }

    } catch(Exception e) {
            e.printStackTrace();
        }

  }

}

有不懂的可以相互交流(qq):1434475404

弱弱的来一句:其实我也是菜鸟一枚~