博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java jersef rest接收html表单提交
阅读量:6904 次
发布时间:2019-06-27

本文共 2578 字,大约阅读时间需要 8 分钟。

       在上传的文件的时候,前台的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
parameter){ appVersionService=new AppVersionService(); String app; String value=""; try {
String output = " Form parameters :\n"; for (String key : parameter.keySet()) { output += key + " : " + parameter.getFirst(key) +"\n"; 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标签了。

转载于:https://www.cnblogs.com/shunxiyuan/p/3842027.html

你可能感兴趣的文章
【Django源码浅析】—Django runserver启动流程与URL路由
查看>>
Html5添加文件上传组件美化插件教程
查看>>
InfoSphere Streams——实时大数据分析平台
查看>>
keepalived+lvs实现负责均衡群集
查看>>
Exchange server 2003迁移到2010无路由组连接器
查看>>
xcode lldb gdb调试
查看>>
经典SQL语句大全
查看>>
20个PPT制作的诀窍
查看>>
java(二十二)枚举
查看>>
传统企业做电子商务需要用好模式,盲目跟踪中“商”自己
查看>>
Office 365管理员指引 13——创建部门网站
查看>>
虚函数
查看>>
Hashtable 与HashMap的区别
查看>>
分享常用的gis算法(C#)
查看>>
android获取google邮箱
查看>>
打造高可用 LVS+keepalived
查看>>
商务表现仍不及三星Note5的iPhone何时会再出个SPen?
查看>>
给定一个有序整数数组,元素各不相同且按照升序排列,编写一个算法,创建一个高度最小的二叉查找树...
查看>>
分布式搜索elasticsearch 环境搭建 -插件
查看>>
源码安装lamp
查看>>