Java Tutorial/Servlet/XML Word PDF Mp3

Материал из Java эксперт
Перейти к: навигация, поиск

Display PDF based on Request Parameter

   <source lang="java">

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.net.*; public class MyServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
     String fileName = (String) request.getParameter("file");
     if (fileName == null || fileName.equals(""))
          throw new ServletException(
           "Invalid or non-existent file parameter in UrlServlet servlet.");
     
     if (fileName.indexOf(".pdf") == -1)
         fileName = fileName + ".pdf";
       
     URL pdfDir = null;
     URLConnection urlConn = null;
     ServletOutputStream stream = null;
     BufferedInputStream buf = null;
    try{
    
      pdfDir = new URL(getServletContext().getInitParameter("remote-pdf-dir") + fileName);
   
   } catch (MalformedURLException mue){
   
          throw new ServletException(mue.getMessage());
  }
  try{
         
    stream = response.getOutputStream();
     response.setContentType("application/pdf");
     response.addHeader(
       "Content-Disposition","attachment; filename="+fileName );
     
     urlConn = pdfDir.openConnection();
     response.setContentLength( (int) urlConn.getContentLength()  );
    
    buf = new BufferedInputStream(urlConn.getInputStream());
    int readBytes = 0;
    while((readBytes = buf.read()) != -1)
       stream.write(readBytes);
    } catch (IOException ioe){
    
       throw new ServletException(ioe.getMessage());
        
    } finally {
    
    if(stream != null)
        stream.close();
     if(buf != null)
         buf.close();
         }
   
   }
  
   public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       
       doGet(request,response);
   } 

}</source>





Send MP3 file back to client with Servlet

   <source lang="java">

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.text.DateFormat; public class MyServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     String fileName = (String) request.getParameter("file");
     if (fileName == null || fileName.equals(""))
          throw new ServletException(
           "Invalid or non-existent file parameter in SendMp3 servlet.");
     
     if (fileName.indexOf(".mp3") == -1)
         fileName = fileName + ".mp3";
         
    String mp3Dir = getServletContext().getInitParameter("mp3-dir");
    if (mp3Dir == null || mp3Dir.equals(""))
          throw new ServletException(
            "Invalid or non-existent mp3Dir context-param.");
         
     ServletOutputStream stream = null;
     BufferedInputStream buf = null;
     try{
    
     stream = response.getOutputStream();
     File mp3 = new File(mp3Dir + "/" + fileName);
    
     response.setContentType("audio/mpeg");
     
     response.addHeader("Content-Disposition","attachment; filename="+fileName );
     response.setContentLength( (int) mp3.length() );
     
     FileInputStream input = new FileInputStream(mp3);
     buf = new BufferedInputStream(input);
     int readBytes = 0;
     while((readBytes = buf.read()) != -1)
        stream.write(readBytes);
    } catch (IOException ioe){
    
       throw new ServletException(ioe.getMessage());
        
    } finally {
    if(stream != null)
        stream.close();
     if(buf != null)
         buf.close();
         }
   
   } //end doGet
  
   public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       
       doGet(request,response);
   } 

}</source>





Send Pdf to client using Servlet

   <source lang="java">

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.text.DateFormat; public class MyServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
     String fileName = (String) request.getParameter("file");
     if (fileName == null || fileName.equals(""))
          throw new ServletException(
           "Invalid or non-existent file parameter in SendPdf servlet.");
     
     if (fileName.indexOf(".pdf") == -1)
         fileName = fileName + ".pdf";
         
    String pdfDir = getServletContext().getInitParameter("pdf-dir");
    if (pdfDir == null || pdfDir.equals(""))
          throw new ServletException(
            "Invalid or non-existent "pdf-Dir" context-param.");
         
     ServletOutputStream stream = null;
     BufferedInputStream buf = null;
    try{
    
    stream = response.getOutputStream();
    File pdf = new File(pdfDir + "/" + fileName);
    
     response.setContentType("application/pdf");
     
     response.addHeader(
       "Content-Disposition","attachment; filename="+fileName );
     response.setContentLength( (int) pdf.length() );
     
    FileInputStream input = new FileInputStream(pdf);
    buf = new BufferedInputStream(input);
    int readBytes = 0;
    while((readBytes = buf.read()) != -1)
       stream.write(readBytes);
    } catch (IOException ioe){
    
       throw new ServletException(ioe.getMessage());
        
    } finally {
  
  if(stream != null)
      stream.close();
   if(buf != null)
         buf.close();
     }
   
   }
  
   public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
 
 doGet(request,response);
 
   } 

}</source>





Send Word file to client in a Servlet

   <source lang="java">

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.text.DateFormat; public class MyServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     String fileName = (String) request.getParameter("file");
     if (fileName == null || fileName.equals(""))
          throw new ServletException(
           "Invalid or non-existent file parameter in SendWord servlet.");
     
     if (fileName.indexOf(".doc") == -1)
         fileName = fileName + ".doc";
         
    String wordDir = getServletContext().getInitParameter("word-dir");
    if (wordDir == null || wordDir.equals(""))
          throw new ServletException(
            "Invalid or non-existent wordDir context-param.");
         
     ServletOutputStream stream = null;
     BufferedInputStream buf = null;
    try{
    
    stream = response.getOutputStream();
    File doc = new File(wordDir + "/" + fileName);
    
     //set response headers
     response.setContentType("application/msword");
     
     response.addHeader(
       "Content-Disposition","attachment; filename="+fileName );
     response.setContentLength( (int) doc.length() );
     
    FileInputStream input = new FileInputStream(doc);
    buf = new BufferedInputStream(input);
    int readBytes = 0;
    while((readBytes = buf.read()) != -1)
       stream.write(readBytes);
    } catch (IOException ioe){
    
       throw new ServletException(ioe.getMessage());
        
    } finally {
    
    if(stream != null)
        stream.close();
     if(buf != null)
         buf.close();
         }
   
   }
  
   public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       
       doGet(request,response);
   } 

}</source>





Send XML data to client

   <source lang="java">

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.net.*; public class MyServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
     String file = "/WEB-INF/web.xml";
    
     URL url = null;
     URLConnection urlConn = null;  
     PrintWriter out = null;
     BufferedInputStream buf = null;
    try{
    out = response.getWriter();
    url = getServletContext().getResource(file);
     response.setContentType("text/xml");
   
     urlConn = url.openConnection();
    urlConn.connect();
    buf = new BufferedInputStream(urlConn.getInputStream());
    int readBytes = 0;
    //read from the file; write to the PrintWriter
    while((readBytes = buf.read()) != -1)
       out.write(readBytes);
    } catch (MalformedURLException mue){
   
          throw new ServletException(mue.getMessage());
          
    } catch (IOException ioe){
    
       throw new ServletException(ioe.getMessage());
        
    } finally {
    
    if(out != null)
        out.close();
     if(buf != null)
         buf.close();
         }
   
   } //end doGet
  
   public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       
       doGet(request,response);
   } 

}</source>





Send XML to client using Servlet

   <source lang="java">

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.text.DateFormat; public class MyServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
     String fileName = (String) request.getParameter("file");
     if (fileName == null || fileName.equals(""))
          throw new ServletException(
           "Invalid or non-existent file parameter in SendXml servlet.");
     
     if (fileName.indexOf(".xml") == -1)
         fileName = fileName + ".xml";
         
    String xmlDir = getServletContext().getInitParameter("xml-dir");
    if (xmlDir == null || xmlDir.equals(""))
          throw new ServletException(
            "Invalid or non-existent xmlDir context-param.");
         
     ServletOutputStream stream = null;
     BufferedInputStream buf = null;
    try{
    
    stream = response.getOutputStream();
    File xml = new File(xmlDir + "/" + fileName);
    
     response.setContentType("text/xml");
     
     response.addHeader(
       "Content-Disposition","attachment; filename="+fileName );
     response.setContentLength( (int) xml.length() );
     
    FileInputStream input = new FileInputStream(xml);
    buf = new BufferedInputStream(input);
    int readBytes = 0;
    //read from the file; write to the ServletOutputStream
    while((readBytes = buf.read()) != -1)
       stream.write(readBytes);
    } catch (IOException ioe){
    
       throw new ServletException(ioe.getMessage());
        
    } finally {
    
    if(stream != null)
        stream.close();
     if(buf != null)
         buf.close();
         }
   
   }
  
   public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       
       doGet(request,response);
   } 

}</source>





Use XPath in servlet

   <source lang="java">

import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jdom.Document; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath; public class PostServlet extends HttpServlet {

   private SAXBuilder builder = new SAXBuilder();
   private XPath nameXPath;
   private XPath yearXPath;
   protected void doPost(HttpServletRequest request,
           HttpServletResponse response) throws ServletException, IOException {
       if (!"text/xml".equals(request.getContentType())) {
           response.getWriter().println("Please post as text/xml.");
       } else {
           try {
               Document doc = builder.build(request.getReader());
               StringBuffer buff = new StringBuffer();
               buff.append("You searched for name "" + nameXPath.valueOf(doc)
                       + """);
               String year = yearXPath.valueOf(doc);
               if (!"notselected".equals(year)) {
                   buff.append(" and year "" + year + """);
               }
               buff.append(".");
               response.getWriter().print(buff.toString());
           } catch (JDOMException e) {
               response.getWriter().print(
                       "Error getting search terms: " + e.getMessage());
           }
       }
   }
   public void init() throws ServletException {
       try {
           nameXPath = XPath.newInstance("/search/name/text()");
           yearXPath = XPath.newInstance("/search/year/text()");
       } catch (JDOMException e) {
           throw new ServletException("Unable to create XPaths", e);
       }
       super.init();
   }

}</source>