Я юзаю классы через Аякс, затем сервлет:
| Код | params.className = "pgo.survey.shp.ShpSaveNoNumChild"; var saveRes = smstsSave2(params);
function smstsSave2(params){ var xmlDom = new XMLDOM('http://localhost:8080/save', params); var error = xmlDom.root.selectSingleNode("//ERROR"); return new XmlSaveResult(xmlDom); }
function XMLDOM(url, params) { this.isError=false; this.XMLDOMDoc=new ActiveXObject("Microsoft.XMLDOM"); this.XMLDOMDoc.setProperty("SelectionLanguage", "XPath"); this.root=null; this.XMLHttpRequest = (new XHRequest(url, params)).req
try{ // alert(this.XMLHttpRequest.transport.responseText) this.XMLDOMDoc.loadXML(this.XMLHttpRequest.responseText); //alert(this.XMLHttpRequest.transport.responseText) if (this.XMLDOMDoc.parseError.errorCode != 0) { var myErr = this.XMLDOMDoc.parseError; this.isError=true; alert("Ошибка загрузки данных в XMLDOMDoc \n\n" + myErr.reason); }
if(!this.isError){ this.root=this.XMLDOMDoc.getElementsByTagName("ROOT")[0] } } catch(e){}
}
function XHRequest(url, params, errorMsg){ var req=new ActiveXObject("Microsoft.XMLHTTP"); this.req=req; // this.req.asynchronous = false; if (req) { req.onreadystatechange =function() { if(req.readyState == 4 && req.status != 200) { if(errorMsg!=null) alert("Ошибка получения данных с сервера.\n"+ errorMsg+ "\nXMLHttpRequest.status="+req.status); } } req.open("POST", url, false); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); req.send(params); } }
|
теперь сам сервлет, в моем случае save:
| Код | package utils.save;
import utils.Str; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import java.io.PrintStream; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException;
import pgo.auth.Auth; import log.L;
public class SaveServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(!Auth.isAuth(request,response)) return; response.setContentType("text/html; charset=windows-1251"); request.setCharacterEncoding("Cp1251"); PrintStream out = new PrintStream(response.getOutputStream ());//response.getOutputStream(); String className = Str.objToStr(request.getParameter("className")); SaveResult result =null; Class clazz = null; try { clazz = Class.forName(className); try { Object object = clazz.newInstance(); try { Method method = object.getClass().getMethod("run", new Class[] {HttpServletRequest.class}); try { result = (SaveResult)method.invoke(object, new Object[] {request}); } catch (InvocationTargetException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } catch (NoSuchMethodException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } catch (InstantiationException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } catch (IllegalAccessException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } catch (ClassNotFoundException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } out.println("<ROOT>"); if(result!=null){ L.info(result.getResultXML()); out.println(result.getResultXML()); } else { out.println("<RESULT><ERROR>\n<MSG>Не найден класс "+className+"</MSG>\n</ERROR></RESULT>"); } out.println("</ROOT>"); }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }
|
|