zoukankan      html  css  js  c++  java
  • java jersef rest接收html表单提交

           在上传的文件的时候,前台的html的表单,通常会写出enctype="multipart/form-data"格式的,很多人这时候会困惑。通过request.getparameter()接收请求的时候,接收的参数都是null,后台接收不到。有人直接通过servelt去获取,有人通过struts去获取。我的解决方案是通过jersef的rest来解决的。

          表单提交两次,在submit按钮的时候写了个onclick方法。按钮先提交submit,将文件上传到服务器。再通过ajax方法传到映射的后台。

         如下:

        

    function sub() {
            
            
            $("#addforms").submit(); ///
    
            $.ajax({
                    cache : true,
                    type : "POST",
                    url : "/XysVersionManager/services/appVersion/postParam",
                    //data : "vercode="+vercode+"&msg="+msgs+"&isFlag="+isFlag,// 你的formid
                    data:$("#addforms").serialize(),// 你的formid
                    async : false,
                    success : function(msg) {
                        if (msg == "1") {
                            alert("修改成功");
                        } else {
                            alert("修改失败");
                        }                        
                        }
    
                });
        }

      ajax提交后台的数据,如果使用request.getParameter()接收的话也是null.这时候就需要使用rest的内置标签了。有两种接收方式。

       第一种是:@FormParam。后台java类可以定义方法如

    public String postData(@Context HttpServletRequest request,@Context HttpServletResponse response,@FormParam("versionCode") String vercode,@FormParam("msg") String msg,@FormParam("isFlag") String isFlag){
                  appVersionService=new AppVersionService();
                 String app;
                 String value="";
                try {
                    boolean flag=appVersionService.addAppVersion(vercode,msg,isFlag);
                    value=String.valueOf(flag);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                 return value;
             }

    @FormParam定义的参数可以去接收前台传递的参数。接收的值不再是null.

      第二种方式:内置集合MultivaluedMap<String, String>。使用方法如下:

    public String postData(@Context HttpServletRequest request,@Context HttpServletResponse response,MultivaluedMap<String, String> parameter){
                  appVersionService=new AppVersionService();
                 String app;
                 String value="";
                try {
                    String output = " Form parameters :
    ";
                    for (String key : parameter.keySet()) {
                        output += key + " : " + parameter.getFirst(key) +"
    ";
                        
                        System.out.println("key:"+key+",param:"+parameter.getFirst(key));
    
                    }
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
                 return value;
             }

    使用方法parameter.keySet()获取到表单内置标签的id,获取到key,parameter.getFirst(key),根据key可以获取到表单的值。

    这样的话就可以接收到表单传递的参数了。可以实现form里面内嵌上传的file标签了。

  • 相关阅读:
    云计算上的个人数据隐私问题 狼人:
    应用兼容性Android Studio IDEA:基于IDEA的安卓开发环境
    最小生成树卡hdu1875畅通工程再续
    编译文件编译PHP的windows版本
    动作运动预防颈椎之痛的几个小技巧
    文件资源使用Texture管理cocosBuilder项目资源:纹理文件使用(TexturePacker)
    配置级别greenplum 可用空间计算
    返回定义利用DataTable、DataSet返回SQL Server的表或者单个字段
    构造函数对象[置顶] 揭开Javascript属性constructor/prototype的底层原理
    缓存二级缓存Spring环境下Hibernate二级缓存的应用
  • 原文地址:https://www.cnblogs.com/shunxiyuan/p/3842027.html
Copyright © 2011-2022 走看看