Java数组,如何通过JSP表单将数组传递到后台?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数组,如何通过JSP表单将数组传递到后台?相关的知识,希望对你有一定的参考价值。
jsp<input type='checkbox' name="username"/>
后台 servlet
HttpServletRequest request= ServletActionContext.getRequest();
String[] username=request.getParameter("username");
试试这个吧这个是你没有用框架的情况下
如果要是用的struts2这个
在类的属性中定义个和页面上一样的名字的属性然后给get和set方法就能拿到
如果用的是spring mvc 你就在哪个方法的参数中直接填上这个input的name属性的名字就行了
public String test(String [] username)
..............
以上的方法你试试吧我以前那数组都是到后台变成了字符串了 例如aa,bb,cc.split(",");处理的 参考技术A 用session传递整个数组就好了,session.setAttribut....后台是session.getAttribut 参考技术B 1。后台写好该数组的 getting和setting方法,用于接收jsp传过来的数组,
2。如果只是用表单传值的话,好像只有checked 是往后台传数组 参考技术C <form action="$pageContext.servletContext.contextPath/后台方法" method="post">
表单内容
</form>追问
那我要是想将表单内容传到另一个页面呢?
追答A页面-> 后台(request.setParameter("变量");->B页面()望采纳
参考技术D json的格式来传递数据的方法如何使用 jsp 将 java 数组传输到 javaScript 数组?
【中文标题】如何使用 jsp 将 java 数组传输到 javaScript 数组?【英文标题】:How to transfer java array to javaScript array using jsp? 【发布时间】:2010-10-05 17:14:49 【问题描述】:我的服务器上有一个字符串列表,我试图以数组的形式访问客户端。我尝试使用的代码如下:
在 jsp 中我有一个 List<String>
列
我正在尝试以下代码:
<%int j = 0; %>
for(var i = 0; i < <%=columns.size()%>; i++)
colArray[i] = "<%=columns.get(j++)%>";
此代码只是为 colArray 中的每个元素返回列列表中的第一个元素。
我也试过了:
colArray = <%=columns.toArray()%>;
这也不起作用。 我觉得我在某个地方犯了一个小错误,只是没有看到它。我正在尝试做的事情是否可能以我正在尝试的方式进行?
谢谢。
【问题讨论】:
【参考方案1】:您将在服务器上执行的 JSP 代码与在客户端上执行的 JavaScript 代码混合在一起。 sn-p <%=columns.get(j++)%>
在服务器上执行一次,此时围绕它的 JavaScript 循环无关紧要。当它到达客户端时,循环的主体只是说colArray[i] = "first entry";
,这当然会将相同的字符串放入数组的每个元素中。
您需要做的是在服务器上执行一个循环,如下所示:
<% for (int i=0; i<columns.size(); i++) %>
colArray[<%= i %>] = "<%= columns.get(i) %>";
<% %>
我的 JSP 技能生疏,语法可能有所不同,但我希望你能明白。
编辑: 正如 cmets 中所指出的,您需要非常小心地转义这些字符串中可能导致它们被解释为 JavaScript 代码(最显着的引号)的任何内容 - 特别是如果它们包含用户生成的内容。否则,您的应用就会受到Cross-site scripting 和Cross-site request forgery 的攻击。
【讨论】:
如果字符串包含双引号、反斜杠或换行符等字符,这将不起作用。这些字符需要转义。 我还要在第二行的末尾添加一个分号。【参考方案2】:一旦 JavaScript 到达客户端,服务器代码就停止执行。服务器代码不会与客户端代码“并行”执行。
您必须在 Java 中构建整个 JavaScript 初始化并将其完整且可执行地发送到客户端:
<%
StringBuffer values = new StringBuffer();
for (int i = 0; i < columns.size(); ++i)
if (values.length() > 0)
values.append(',');
values.append('"').append(columns.get(i)).append('"');
%>
<script type="text/javascript">
var colArray = [ <%= values.toString() %> ];
</script>
这只是一种方法,您还可以通过在[
和]
中嵌入服务器代码来“即时”构建输出。我使用此示例尝试演示构建包含客户端 JavaScript 的字符串与将其输出到浏览器之间的分离。
【讨论】:
【参考方案3】:尝试使用 JSON(Javascript 对象表示法)对数组进行编码并在 javascript 上对其进行解码会非常简单
在这里查看
http://www.json.org/java/index.html
【讨论】:
这个链接现在好像不可用了。【参考方案4】:扩展语言:
colArray = $columns
【讨论】:
对数字列表很有用,字符串不被""
包围【参考方案5】:
上面发布的解决方案在我的情况下不起作用,我需要一个额外的 Javascript 变量来进行转移:
var codesJS=new Array();
<% String[] codes=(String[])request.getAttribute("codes");
if(codes!=null)
for(int i=0; i<codes.length; i++) %>
var code='<%= codes[i] %>'; //--> without this doesnt work
codesJS[<%= i %>]=code;
<%
%>
【讨论】:
“i”变量如何从js传递到java?【参考方案6】:对我来说,这个解决方案很有效。首先,您应该制作一个 JSONArray 并使用它的 toJSONString() 方法。此方法将列表转换为 JSON 文本。它的结果是一个 JSON 数组。
<%
List<String> exampleList = new ArrayList<>();
exampleList.add("Apple");
exampleList.add("Orange");
exampleList.add("Lemon");
JSONArray fruitList = new JSONArray();
fruitList.addAll(exampleList);
%>
在您的 JSP 页面中,您应该调用列表的 toJSONString() 方法,并将 JSON 文本传递给 JavaScript 数组。
<script type="text/javascript"> var fruitArray = <%= fruitList.toJSONString() %>;</script>
(可选地,您可以为列表创建一个简单的 getter 方法。如果您只在 JSP 页面中实例化具有列表字段的 JAVA 类。)
【讨论】:
以上是关于Java数组,如何通过JSP表单将数组传递到后台?的主要内容,如果未能解决你的问题,请参考以下文章
java 我通过后台传递一个json数组到前台,如何从javascript中 获取到