📄 vieworderservlet.java
字号:
// Fig. 11.26: ViewOrderServlet.java// ViewOrderServlet enables a user to view the status of orders // created by the JAXM applications.package com.deitel.jws1.jaxm.bookbuyer.sender;// Java core packagesimport java.io.*;import java.util.*;import java.sql.*;import java.text.NumberFormat;// Java extension packagesimport javax.servlet.http.*;import javax.servlet.*;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.*;import javax.xml.transform.stream.*;// W3C XML packagesimport org.w3c.dom.*;public class ViewOrderServlet extends HttpServlet { private Connection connection; // connection to database // factories for creating XML and applying XSLT private DocumentBuilderFactory factory; private TransformerFactory transformerFactory; // setup database connection for servlet public void init( ServletConfig servletConfig ) throws ServletException { super.init( servletConfig ); // initialize connection to database try { // obtain URL of properties file java.net.URL propertyURL = getClass().getResource( "bookStock.properties" ); // load properties file Properties databaseProperties = new Properties(); databaseProperties.load( new FileInputStream( propertyURL.getPath() ) ); // load JDBC driver Class.forName( databaseProperties.getProperty( "jdbcDriver" ) ); // establish database connection connection = DriverManager.getConnection( databaseProperties.getProperty( "databaseURI" ) ); // create factory to build XML Documents factory = DocumentBuilderFactory.newInstance(); // create factory to apply XSLT transformerFactory = TransformerFactory.newInstance(); } // handle exception if database driver does not exist catch ( ClassNotFoundException classNotFoundException ) { classNotFoundException.printStackTrace(); } // handle exception in making Connection catch ( SQLException sqlException ) { sqlException.printStackTrace(); } // handle exception in loading properties file catch ( IOException ioException ) { ioException.printStackTrace(); } } // end method init // invoked upon receiving message public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException { // determine whether order was successful try { // SQL query to database Statement statement = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY ); // make query to extract order information ResultSet resultSet = statement.executeQuery( "SELECT" + " orderID, isbn, quantity, price FROM orders" ); Document orderXmlDocument = null; // view order information if ( resultSet != null ) orderXmlDocument = createXML( resultSet ); if ( orderXmlDocument != null ) applyXSLT( "XSL/viewOrder_XHTML.xsl", orderXmlDocument, response ); statement.close(); } // handle exception in accessing database catch ( SQLException sqlException ) { sqlException.printStackTrace(); } // handle exception in applying XSLT catch ( IOException ioException ) { ioException.printStackTrace(); } } // end method doGet // create XML document from ResultSet private Document createXML( ResultSet resultSet ) throws SQLException { // use ResultSet to build XML document try { DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); // create orders root Element Element orders = document.createElement( "orders" ); document.appendChild( orders ); // store ID, isbn, quantity and price in order Element while ( resultSet.next() ) { // create order Element for each order Element order = document.createElement( "order" ); // obtain ID, isbn, quantity and price from resultSet Integer ID = new Integer( resultSet.getInt( "orderID" ) ); String isbn = resultSet.getString( "isbn" ); Integer quantity = new Integer( resultSet.getInt( "quantity" ) ); Double price = new Double( resultSet.getDouble( "price" ) ); // create Elements for ID, isbn, quantity and price Element orderID = document.createElement( "orderID" ); Element orderIsbn = document.createElement( "isbn" ); Element orderQuantity = document.createElement( "quantity" ); Element orderPrice = document.createElement( "price" ); // append elements as children to Element order order.appendChild( orderID ); order.appendChild( orderIsbn ); order.appendChild( orderQuantity ); order.appendChild( orderPrice ); // create NumberFormat to format price to US locale NumberFormat priceFormatter = NumberFormat.getCurrencyInstance( Locale.US ); // store ID, isbn, quantity and price information orderID.appendChild( document.createTextNode( ID.toString() ) ); orderIsbn.appendChild( document.createTextNode( isbn ) ); orderQuantity.appendChild( document.createTextNode( quantity.toString() ) ); orderPrice.appendChild( document.createTextNode( priceFormatter.format( price ) ) ); // append each order Element to root Element orders orders.appendChild( order ); } return document; } // handle exception in parsing catch ( ParserConfigurationException parserException ) { parserException.printStackTrace(); return null; } } // end method createXML // apply XSLT style sheet to XML document private void applyXSLT( String xslFile, Document xmlDocument, HttpServletResponse response ) throws IOException { // apply XSLT try { // open InputStream for XSL document InputStream xslStream = getServletContext().getResourceAsStream( xslFile ); // create StreamSource for XSLT document Source xslSource = new StreamSource( xslStream ); // create DOMSource for source XML document Source xmlSource = new DOMSource( xmlDocument ); // get PrintWriter for writing data to client PrintWriter output = response.getWriter(); // create StreamResult for transformation result Result result = new StreamResult( output ); // create Transformer for XSL transformation Transformer transformer = transformerFactory.newTransformer( xslSource ); // transform and deliver content to client transformer.transform( xmlSource, result ); } // handle exception transforming content catch ( TransformerException transformerException ) { transformerException.printStackTrace(); } } // end method applyXSLT} // end class ViewOrderServlet
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -