Quoting "Cooremans, Rony" <[EMAIL PROTECTED]>:

> I ll try the web.xml solution as soon as i solve some other bugs

Take a look at this:

I have a Servlet called XMLServlet:

  <servlet>
    <servlet-name>XMLServlet</servlet-name>
    <servlet-class>XMLServlet</servlet-class>
  </servlet>

And I map everything with extension html, pdf, xml, rtf to this Servlet:

  <servlet-mapping>
    <servlet-name>XMLServlet</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>XMLServlet</servlet-name>
    <url-pattern>*.pdf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>XMLServlet</servlet-name>
    <url-pattern>*.xml</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>XMLServlet</servlet-name>
    <url-pattern>*.rtf</url-pattern>
  </servlet-mapping>

In the servlet I replace the extension by xml and I go looking
for the file somewhere on my filesystem (could be a parameter
in the web.xml too to do it really nice). Depending on the
extension, I construct a PDF, HTML, RTF or XML file...

It's magical, isn't it???
This is what they call MVC:

1 Model, 1 Controller, multiple views!

Or didn't you see the movie 'Lord of the iText'?
One document to rule them all,
One servlet to find them,
One library to bring them all
and in the Brightness bind them ;-)

/*
 * XMLServlet.java
 *
 * Created on 17 mei 2002, 14:16
 */

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.html.HtmlWriter;
import com.lowagie.text.rtf.RtfWriter;
import com.lowagie.text.xml.XmlParser;
import com.lowagie.text.xml.XmlWriter;

/**
 *
 * @author  Bruno Lowagie
 * @version
 */
public class XMLServlet extends HttpServlet {
    
    /** Initializes the servlet.
     */
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }
    
    /** Destroys the servlet.
     */
    public void destroy() {
        
    }
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> 
methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, 
HttpServletResponse response)
    throws ServletException, java.io.IOException {
        Document doc = new Document();
        String path = request.getServletPath();
        
        ByteArrayOutputStream ba = new ByteArrayOutputStream();
        try {
            if (path.endsWith(".html")) {
                response.setContentType("text/html");
                HtmlWriter.getInstance(doc, ba);
            }
            else if (path.endsWith(".pdf")) {
                response.setContentType("application/pdf");
                PdfWriter.getInstance(doc, ba);
            }
            else if (path.endsWith(".rtf")) {
                response.setContentType("application/rtf");
                RtfWriter.getInstance(doc, ba);
            }
            else if (path.endsWith(".xml")) {
                response.setContentType("text/xml");
                XmlWriter.getInstance(doc, ba);
            }
            else {
                java.io.PrintWriter out = response.getWriter();
                
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("Not a supported format");
                out.println("</body>");
                out.println("</html>");
                
                out.close();
                return;
            }
            XmlParser.parse(doc, new FileInputStream(new 
File(constructPath(path))));
            response.setContentLength(ba.size());
            OutputStream out = response.getOutputStream();
            ba.writeTo(out);
            out.flush();
        }
        catch(Exception e) {
            java.io.PrintWriter out = response.getWriter();
            
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("Error: " + e.getMessage());
            out.println("</body>");
            out.println("</html>");
            
            out.close();
            return;
        }
        
    }
    
    public String constructPath(String path) {
        return "D:/www/xml/mvc" + path.substring(0, path.lastIndexOf(".")) + 
".xml";
    }
    
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse 
response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse 
response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "This is the controller";
    }
    
}

_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
iText-questions mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Reply via email to