Листинг 7.33. Первая часть метода doPost (QanalysisServ.java)
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter out = new PrintWriter(resp.getOutputStream()); String source = req.getParameter( "source"); String action = req.getParameter( "action"); String ansfile = req.getParameter("ansfile"); // select when choosing quesionnaire XML file // analyze when choosing reformatted result file String[] files = null ; if( action == null || source == null || source.length() == 0 ){ errorMsg(out,"Bad source selection", null ); return ; } // source is short name from properties String srcfile = qProp.getProperty( source ); if( srcfile == null ) { errorMsg( out, "Bad Source lookup", null ); return ; } HttpSession session = req.getSession(false); try { if( session == null ){ errorMsg(out, "No Session ", null ); return ; } DOMlibrary lib = DOMlibrary.getLibrary(); System.out.println("DOMlibrary ok, try for " + srcfile ); Document doc = lib.getDOM( srcfile ); if( doc == null ){ errorMsg( out, "DOM doc failed - unable to continue", null ); return ; } PrepQxml pQ = (PrepQxml)session.getValue("prepqxml"); // substitute getAttribute if using 2.2 api header( out ); if( pQ == null ){ // first pass pQ = new PrepQxml( doc ); files = pQ.createFiles(); session.putValue("prepqxml",pQ); } else { files = pQ.getFiles(); } if( action.equals("select") ){ out.println("<h1> Test: " + pQ.title +"</h1> " ); out.println("<p> XML questionnaire file: <i> " + source + "</i> </p> "); out.println("<p> Author: " + pQ.author + " Dated: " + pQ.date + "</p> "); out.println("<p> The primary answer file is: " + pQ.primaryfile + "</p> " ); out.println("<p> There " ); if( files.length < 2 ) out.println("are no other "); if( files.length == 2 ) out.println("is one other "); if( files.length > 2 ) out.println( (files.length - 1) + " other "); out.println("answer file(s). Select a file and click <b> Start</b> </p> "); createQList( out, source, files ); }
Когда пользователь выберет один из файлов с результатами, переменная action принимает значение analyze. Как показано в листинге 7.34, это инициирует создание нового объекта TallyQues, который используется для формирования таблицы с результатами.