📄 ajaxaction.java
字号:
package com.yourcompany.struts;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class AjaxAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
String parameter = mapping.getParameter();
System.out.println("gb2312");
req.setCharacterEncoding("gb2312");
ActionForward af = null;
if ("SAY".equalsIgnoreCase(parameter)) {
af = ajaxRequest(mapping, form, req, res);
} else if ("QueryProvince".equalsIgnoreCase(parameter)) {
af = queryProvince(mapping, form, req, res);
} else if ("ReadXML".equalsIgnoreCase(parameter)) {
af = readXml(mapping, form, req, res);
} else if ("QueryCity".equalsIgnoreCase(parameter)) {
af = this.queryCity(mapping, form, req, res);
}
return af;
}
public ActionForward ajaxRequest(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
String name = req.getParameter("userName");
System.out.println(name + "/name");
res.setContentType("text/xml;charset=GBK");
PrintWriter pw = res.getWriter();
pw.println("hello,您好!," + name + "!welcome to ajax");
pw.close();
return null;
}
// 读取客户端发送过来的xml
public ActionForward readXml(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
req.setCharacterEncoding("gb2312");
String xml = readXMLFromRequestBody(req);
org.w3c.dom.Document xmlDoc = null;
try {
xmlDoc = javax.xml.parsers.DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(
new ByteArrayInputStream(xml.getBytes()));
} catch (ParserConfigurationException e) {
System.out.println("ParserConfigurationException: " + e);
} catch (SAXException e) {
System.out.println("SAXException: " + e);
}
/*
* Note how the Java implementation of the W3C DOM has the same methods
* as the JavaScript implementation, such as getElementsByTagName and
* getNodeValue.
*/
NodeList selectedPetTypes = xmlDoc.getElementsByTagName("type");
String type = null;
String responseText = "Selected Pets: ";
for (int i = 0; i < selectedPetTypes.getLength(); i++) {
type = selectedPetTypes.item(i).getFirstChild().getNodeValue();
responseText = responseText + " " + type;
}
res.setContentType("text/xml");
res.getWriter().print(responseText);
return null;
}
private String readXMLFromRequestBody(HttpServletRequest request) {
StringBuffer xml = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null) {
xml.append(line);
}
} catch (Exception e) {
System.out.println("Error reading XML: " + e.toString());
}
return xml.toString();
}
// 向客户端返回xml文件并且解析(jdom)
public ActionForward queryProvince(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
try {
res.setContentType("text/xml;charset=GBK");
Element rootElement = new Element("provinces");
// 根元素,只有一个
Document resDoc = new Document(rootElement);
List lstProvince = new QueryDao().queryProvince();
Iterator iterator = lstProvince.iterator();
while (iterator.hasNext()) {
QueryVO vo = (QueryVO) iterator.next();
Element province = new Element("province");
Element id = new Element("id");
Element name = new Element("name");
id.addContent(vo.getId());
name.addContent(vo.getName());
province.addContent(id);
province.addContent(name);
rootElement.addContent(province);
}
PrintWriter out = res.getWriter();
XMLOutputter outputter = new XMLOutputter(" ", true, "GBK");
outputter.output(resDoc, out);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
//查询城市
public ActionForward queryCity(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
try {
String pid=req.getParameter("pid");
System.out.println("pid:"+pid);
res.setContentType("text/xml;charset=GBK");
Element rootElement = new Element("citys");
// 根元素,只有一个
Document resDoc = new Document(rootElement);
List lstCity = new QueryDao().queryCity(pid);
System.out.println(lstCity.size());
Iterator iterator = lstCity.iterator();
while (iterator.hasNext()) {
QueryVO vo = (QueryVO) iterator.next();
Element province = new Element("city");
Element id = new Element("id");
Element name = new Element("name");
id.addContent(vo.getId());
name.addContent(vo.getName());
province.addContent(id);
province.addContent(name);
rootElement.addContent(province);
}
PrintWriter out = res.getWriter();
XMLOutputter outputter = new XMLOutputter(" ", true, "GBK");
outputter.output(resDoc, out);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -