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

📄 surveyservlet.java

📁 java web services how to program
💻 JAVA
字号:
// SurveyServlet.java
// A Web-based survey that invokes a Web service 
// from a servlet.
package com.deitel.jws1.jaxrpc.client.stub;

// Java core packages
import java.io.*;
import java.util.*;

// Java extension packages
import javax.servlet.*;
import javax.servlet.http.*;
import javax.xml.rpc.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

// third-party packages
import org.w3c.dom.*;

// xrpcc generated stub packages
import vote.*;

public class SurveyServlet extends HttpServlet {
   
   // display survey form
   protected void doGet( HttpServletRequest request,
      HttpServletResponse response )
         throws ServletException, IOException
   {
      // setup response to client
      response.setContentType( "text/html" ); 
      PrintWriter out = response.getWriter();

      // get XML document and transform for browser client
      try {
      
         // get DocumentBuilderFactory for creating 
         // DocumentBuilder (i.e., an XML parser)
         DocumentBuilderFactory factory =
            DocumentBuilderFactory.newInstance();

         // get DocumentBuilder for building DOM tree
         DocumentBuilder builder = 
            factory.newDocumentBuilder();

         // open InputStream for XML document
         InputStream xmlStream = 
            getServletContext().getResourceAsStream(
               "/survey.xml" );

         // create Document based on input XML file
         Document surveyDocument = builder.parse( xmlStream );

         // open InputStream for XSL document
         InputStream xslStream = 
            getServletContext().getResourceAsStream(
               "/survey.xsl" );

         // transform XML document using XSLT
         transform( surveyDocument, xslStream, out );

         // flush and close PrinterWriter
         out.flush();
         out.close();

      } // end try

      // catch XML parser exceptions
      catch( Exception exception ) {
         exception.printStackTrace();
      }

   } // end method doGet
   
   // process survey response
   protected void doPost( HttpServletRequest request,
      HttpServletResponse response )
         throws ServletException, IOException
   {
      // setup response to client
      response.setContentType( "text/html" ); 
      PrintWriter out = response.getWriter();

      // read current survey response
      String name = request.getParameter( 
         "favoriteLanguage" );

      // attempt to process vote and display current results
      try {

         // get stub and connect to Web service's endpoint
         Vote_Stub stub = ( Vote_Stub ) 
            ( new VoteService_Impl().getVotePort() );

         // get vote information from server
         String result = stub.addVote( name );  

		 StringTokenizer voteTokens = 
            new StringTokenizer( result );

         // get DocumentBuilderFactory for creating 
         // DocumentBuilder (i.e., an XML parser)
         DocumentBuilderFactory factory =
            DocumentBuilderFactory.newInstance();

         // get DocumentBuilder for building DOM tree
         DocumentBuilder builder = 
            factory.newDocumentBuilder();

         // create Document (empty DOM tree)
         Document resultDocument = builder.newDocument();

         // generate XML from result and append to Document
         Element resultElement = generateXML( 
            voteTokens, resultDocument );
         resultDocument.appendChild( resultElement );

         // open InputStream for XSL document
         InputStream xslStream =
            getServletContext().getResourceAsStream(
               "/surveyresults.xsl" );

         // transform XML document using XSLT
         transform( resultDocument, xslStream, out );

         // flush and close PrintWriter
         out.flush();
         out.close();

      } // end try

      // catch connection and XML parser exceptions
      catch ( Exception exception ) {
         exception.printStackTrace();
      }

   }  // end method doPost 

   // generate XML representation of vote information
   private Element generateXML( StringTokenizer voteTokens,
      Document document )
   {
      // create root element
      Element root = document.createElement( "surveyresults" );

      Element language;
      Element name;
      Element vote;

      // create language element for each language
      while ( voteTokens.hasMoreTokens() ) {
         language = document.createElement( "language" );
         name = document.createElement( "name" );
         name.appendChild( document.createTextNode( 
            voteTokens.nextToken() ) );

         language.appendChild( name );
         vote = document.createElement( "vote" );
         vote.appendChild( document.createTextNode(
            voteTokens.nextToken() ) );
         language.appendChild( vote );
         root.appendChild( language );
      }

      return root; // return root element

   } // end method generate XML

   // transform XML document using XSLT InputStream
   // and write resulting document to PrintWriter
   private void transform( Document document, 
      InputStream xslStream, PrintWriter output )
   {
      // transform XML to XHTML
      try {
         
         // create DOMSource for source XML document
         Source xmlSource = new DOMSource( document );

         // create StreamSource for XSLT document
         Source xslSource = new StreamSource( xslStream );

         // create StreamResult for transformation result
         Result result = new StreamResult( output );

         // create TransformerFactory to obtain Transformer
         TransformerFactory transformerFactory = 
            TransformerFactory.newInstance();

         // create Transformer for performing XSL transformation
         Transformer transformer =
            transformerFactory.newTransformer( xslSource );

         // perform transformation and deliver content to client
         transformer.transform( xmlSource, result );

      } // end try

      // handle exception when transforming XML document
      catch( TransformerException exception ) {
         exception.printStackTrace( System.err );
      }

   } // end method transform

} // end class SurveyServlet

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -