📄 surveyservlet.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 + -