#java #javascript #html #servlets #jquery
#java #javascript #HTML #сервлеты #jquery
Вопрос:
Я анализирую загруженный XML-файл с помощью dom, генерируя строку, в которой hostname и osname преобразуются в строку, разделенную ,
разделителем. s
это переменная с этой строкой, и я отправляю ее обратно в HTML, используя response.getWriter
object obj
. Но вместо того, чтобы печатать его, например: Windows,Abhishek
я бы хотел разделить его с помощью разделителя ,
. Может кто-нибудь показать мне пример кода того, как я могу получить эту строку в jQuery или JS, а затем разделить ее на две строки?
try {
out.println("Using Commons File Upload");
List items = uploadHandler.parseRequest(request);
Iterator itr = items.iterator();
String str=null;
while(itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if(item.isFormField()) {
/*out.println("Form Input Name = " item.getFieldName() ", Form Input Value = " item.getString());*/
} else {
/*out.println("Field Name = " item.getFieldName()
", File Name = " item.getName()
", Content type = " item.getContentType()
", File Size = " item.getSize()); */
File file = new File(destinationDir,item.getName());
item.write(file);
str=item.getName();
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
File xmlFile = new File(destinationDir,str);
if (file.exists()) {
Document doc = db.parse(xmlFile);
Element docEle = doc.getDocumentElement();
NodeList csmList = docEle.getElementsByTagName("system");
if (csmList != null amp;amp; csmList.getLength() > 0) {
for (int i = 0; i < csmList.getLength(); i ) {
Node node = csmList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element e = (Element) node;
NodeList nodeList = e.getElementsByTagName("hostname");
s=nodeList.item(0).getChildNodes().item(0).getNodeValue();
//System.out.println("HOSTNAME: " nodeList.item(0).getChildNodes().item(0).getNodeValue());
nodeList = e.getElementsByTagName("osname");
s ="," nodeList.item(0).getChildNodes().item(0).getNodeValue();
//System.out.println("OSNAME: " nodeList.item(0).getChildNodes().item(0) .getNodeValue());
}
}
out.println(s);
}
}
else {
System.out.println("File Not Found");
}
}
catch (Exception e) {
System.out.println(e);
}
}
}
out.close();
System.out.println(str);
}catch(FileUploadException ex) {
log("Error encountered while parsing the request",ex);
} catch(Exception ex) {
log("Error encountered while uploading file",ex);
}
Часть Javascript:
function postData() {
$.post("/com/FileUploadServlet", { "file": "/com/FileUploadServlet" }, function(data) {
alert(data);
});
}
$(document).ready(function() {
postData();
});
alert(data);
Печатает "Using Commons File Upload"
, но в сервлете out.println(s);
не выдает мне мои данные в предупреждении, вместо этого оно выдается пустым.
Комментарии:
1. Отладьте код. Какой код в сервлете выполняется, а какой нет? Симптомы указывают на то, что
s
просто никогда не заполняется.
Ответ №1:
Вы заявляете, что отправляете в браузер строку, разделенную запятой, и хотите разделить ее на запятую в Javascript / jQuery. Это разумное резюме вашего вопроса? Мне показалось, что это довольно сложно читать, но я думаю, что это то, о чем вы спрашиваете, так что именно на это я отвечу. 🙂
В Javascript есть .split()
метод, который вы можете использовать для любой строковой переменной.
Итак, когда вы получаете строку в своем коде Javascript, вы можете просто сделать что-то вроде этого:
var splitstring = inputstring.split(',');
Надеюсь, это поможет. (хотя у меня такое ощущение, что в вопросе есть нечто большее, чем моя интерпретация)
Комментарии:
1. Спасибо за информацию. Извините за такой большой вопрос, короче говоря, я хотел бы знать, используя мой код, как я получу строку, разделенную запятыми, на той же HTML-странице, с которой я отправил загружаемый файл.
2. Мне удалось решить это, отправив не массив, а строку текста, разделенную
,
разделителем. Вот ссылка, если кто-то 1 захочет взглянуть. elmicoxcodes.blogspot.com/2007/03 /…
Ответ №2:
Например, вы можете преобразовать массив в java в строку JSON, а затем на стороне javascript создать из него объект, подобный этому:
var myObject = eval('(' myJSONtext ')');
Комментарии:
1. Привет, спасибо за ваш ответ. Я использовал JSON, но теперь из DefaultHandler как мне передать объект JSON?
JSONObject obj=new JSONObject(); obj.put("host",summ[0]); obj.put("name",summ[1]);
2. Можете ли вы показать мне пример, который поможет мне передать этот объект JSON изнутри блока DefaultHandler и использовать его в jquery?
3. Эй, я отредактировал свой код. Теперь, кажется, намного проще передавать данные, поскольку это единственный массив строк, поэтому я могу передавать с некоторым разделителем. Я хотел бы знать, как я мог бы получать строки из моего сервлета на ту же HTML-страницу, с которой я загрузил файл, чтобы показать строку (сервлет вернул строку).