⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ajaxaction.java

📁 介绍Ajax功能
💻 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 + -