Controlling JSP/servlet output buffering

I'm doing some performance testing on some JSPs and I need to be able
          to separate client side rendering/javascript execution time from
          server side execution of the (JSP-generated) servlet.
          The normal way for the servlet generated from the JSP to behave is
          that the output stream to the browser is buffered - that is, as the
          servlet generates output it is written to the buffer in chunks and the
          buffer is written to the browser in chunks. On all but the shortest
          pages the content from the bottom of the JSP hasn't even been
          generated yet at the time the buffer starts writing to the browser.
          I want to turn this behavior off. I want no output sent to the browser
          until the whole output is generated. This way I can put timers in my
          client side Javascript and know they are measuring only the client
          side execution time, not the server side.
          Does anyone know how to do this?
          Eliot Stock
          Premiere Retail Networks
          San Francisco
          

Hi Eliot,
          you can use the page directive's buffer and autoFlush attributes to
          control the size of the output buffer.
          <%@ page buffer="100kb" autoFlush="false" %>
          Here's a link:
          http://java.sun.com/products/jsp/tags/10/syntaxref10.fm7.html
          Nils
          Eliot Stock wrote:
          >
          > I'm doing some performance testing on some JSPs and I need to be able
          > to separate client side rendering/javascript execution time from
          > server side execution of the (JSP-generated) servlet.
          >
          > The normal way for the servlet generated from the JSP to behave is
          > that the output stream to the browser is buffered - that is, as the
          > servlet generates output it is written to the buffer in chunks and the
          > buffer is written to the browser in chunks. On all but the shortest
          > pages the content from the bottom of the JSP hasn't even been
          > generated yet at the time the buffer starts writing to the browser.
          >
          > I want to turn this behavior off. I want no output sent to the browser
          > until the whole output is generated. This way I can put timers in my
          > client side Javascript and know they are measuring only the client
          > side execution time, not the server side.
          >
          > Does anyone know how to do this?
          >
          > Eliot Stock
          > Premiere Retail Networks
          > San Francisco
          ============================
          [email protected]
          

Similar Messages

  • Java Controls, JSPs, Servlets and Filters

    Hi, everybody.
    How can i invoke a custom java control from a JSP ?
    How can i invoke a custom java control from a Servlet or Filter ?
    I've tried using WlwProxy.create(controlInterfaceClass, request) but i don't know if this is the "official and recommended" way of do it. By the way, invocation is falling because Workshop is trying to find a .jcx file (i have only a .jcs).
    Thanks in advance.

    Hi Vimala.
    All the business logic of my project will be implemented as Java Controls (that's the reason of my questions about Controls' accessibility):
    1. From a JSP
    A) I can use netui tag <netui-data:callControl>
    B) I can call a page flow to execute Java Control and to populate http request (or session) within some Java Beans. After this, the JSP will "consume" these Java Beans.
    2. From init method of a startup Servlet
    I can't call a Java Control from here. Can i implement analogous feature using Builtin Timer Control ?
    3. From service (doGet/doPost) method of a "ordinary" Servlet
    I can call a page flow to execute Java Control and to populate http request (or session) within some Java Beans. After this, the Servlet will "consume" these Java Beans.
    4. From filter method of a Servlet Filter
    This is the "trickest" one, but i really need to access business logic from here.
    I've found an way (and i'm not proud of how i'm doing this):
    i) The filter will populate a request attribute within information about which method of which control will be executed. Method parameters values will be stored too;
    ii) The filter will "forward" request to a Page Flow, using a HttpServletRequestWrapper and a "dummy/empty" HttpServletResponseWrapper. This is really odd. I'm not sure if a filter should try to "forward" or to "include" another webapp resources. When doing this, you should be aware about issues like "recursion" and configurations like filter-dispatched-requests-enabled (http://edocs.bea.com/wls/docs90/webapp/progservlet.html#160016);
    iii) The Page Flow will receive the new request, "unpack" invocation data, execute appropriate Java Control, "pack" the result in the http request and forward to an "empty" JSP;
    iv) The "execution control" will be returned to the filter. This filter will "discard" the contents of HttpServletResponseWrapper, "unpack" the result data out of the http request and use it.
    To "hide" all this mess of my filters and Page Flows, the filters will use a "dynamic proxy" to act as "Page Flow clients" (this proxy will look like as an ordinary Java Control to my filters). The Page Flows will use an helper class to store Java Controls (at onCreate lifecycle method), to use them (at begin method) and to discard/release them (at onDestroy lifecycle method).
    I've tested this and it has worked. I'm not sure about performance and multithread behaviour of this solution.
    I'm accepting any suggestion (official or "unofficial") about how to make this easier.
    Thanks !!!
    Sample code:
    == JavaControlClientProxy.java ==
    public Object invoke(Object proxy, Method method, Object[] parameters)
        throws Throwable {
        Object result = null;
        if (LOG.isDebugEnabled()) {
            LOG.debug("before: " + method.getName());
        try {
            HttpServletRequestWrapper newRequest =
                 new HttpServletRequestWrapper(this.request);
            HttpServletResponseWrapper newResponse =
                 new HttpServletResponseWrapper(this.response);
            InvocationData invocationData = new InvocationData();
            invocationData.setCaller(this.javaControlCaller);
            invocationData.setTarget(this.javaControlInterface);
            invocationData.setTargetMethod(method);
            invocationData.setParameters(parameters);
            newRequest.setAttribute(InvocationData.ATT_NAME, invocationData);
            try {
                RequestDispatcher dispatcher = this.request
                    .getRequestDispatcher(this.javaControlServerPath);
                /* include doesn't work (.jpf ?) */
                dispatcher.forward(newRequest, newResponse);
                invocationData = (InvocationData) newRequest
                    .getAttribute(InvocationData.ATT_NAME);
                if (invocationData.getException() != null) {
                    throw invocationData.getException();
                } else {
                    if (invocationData.getReturnValue() != null) {
                        result = invocationData.getReturnValue();
            } finally {
                newResponse.getWriter().close();
                newResponse.getOutputStream().close();
            return result;
        } finally {
            if (LOG.isDebugEnabled()) {
                LOG.debug("after: " + method.getName());
    }== ControlCallController.jpf ==
    * This method represents the point of entry into the pageflow
    * @jpf:action
    * @jpf:forward name="success" path="empty.jsp"
    protected Forward begin()
        try {
            this.controlServer.execute(getRequest());
        } catch (IllegalArgumentException e) {
            try {
                /* Avoid external access to this resource. */
                getResponse().sendError(HttpServletResponse.SC_NOT_FOUND);
            } catch (IOException e1) {
                throw new UnhandledException(e1);
            throw e;
        return new Forward("success");
    protected void onCreate() throws Exception {
        super.onCreate();
        this.controlServer = new JavaControlServer();
        this.controlServer.addControl(MyControl1.class, this.myControl1);
        this.controlServer.addControl(MyControl2.class, this.myControl2);
    protected void onDestroy(HttpSession arg0) {
        this.controlServer = null;
        super.onDestroy(arg0);
    }== JavaControlServer.java ==
    public void execute(final HttpServletRequest request)
        throws IllegalArgumentException {
        InvocationData invocationData = (InvocationData) request
            .getAttribute(InvocationData.ATT_NAME);
        if (LOG.isDebugEnabled()) {
            LOG.debug("InvocationData " + invocationData + ".");
        if (invocationData == null) {
            throw new IllegalArgumentException("Http request doesn't contain "
                                               + InvocationData.ATT_NAME + ".");
        Control targetControl = (Control) this.controlMap.get(invocationData
                                                              .getTarget());
        if (targetControl == null) {
            throw new IllegalArgumentException("Missing control "
                                               + invocationData.getTarget() + ".");
        Method method = invocationData.getTargetMethod();
        try {
            Object returnValue = method.invoke(targetControl, invocationData
                                               .getParameters());
            invocationData.setReturnValue(returnValue);
        } catch (IllegalArgumentException e) {
            LOG.error("Could not invoke method", e);
            throw new UnhandledException(e);
        } catch (IllegalAccessException e) {
            LOG.error("Could not invoke method", e);
            throw new UnhandledException(e);
        } catch (InvocationTargetException e) {
            LOG.debug("An error has ocurred when invoking method", e);
            invocationData.setException(e.getCause());
        request.setAttribute(InvocationData.ATT_NAME, invocationData);
    }

  • How to compress JSP/Servlet output with WebCache?

    Hello,
    I have an application using servlet/JSP. A request coming from the browser is handle by a servlet, and then forward the processing to a JSP page that produces the response. The requests are like http://host:port/athena/execute/action and we use POST method. It seems WebCache does not compress the output if I specify this compression rule
    URL expression: ^/athena/.*$
    Method POST
    POST Body Expression .*
    What's wrong ??
    Thanks in advance.

    This is already answered in another identical thread.

  • Using JSP/Servlet to write Word Document to BLOB

    Hi
    I need some help pls
    When I use a normal class with a main method, it loads the word document into a blob and I can read this 100%.Stunning.
    With a JSP/Servlet I cannot get the document out again. The "format" seems to be lost.
    Any ideas,help greatly appreciated:
    Here is the Main class that works:
    package mypackage1;
    import java.io.OutputStream;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.PrintWriter;
    import java.io.IOException;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.FileNotFoundException;
    import java.io.Writer;
    import java.sql.Connection;
    import oracle.jdbc.*;
    import oracle.jdbc.OracleResultSet;
    import oracle.sql.BLOB;
    import org.apache.log4j.Logger;
    import Util_Connect.DataBase;
    public class TestLOB
    //static final Logger logger = Logger.getLogger("test");
    public TestLOB()
    public static void main(String args[])
    TestLOB testLOB = new TestLOB();
    testLOB.TestLOBInsert("c:\\my_data\\callcenterpilot.doc");
    public void TestLOBInsert(String fileName)
    Connection conn = getConnection("wizard");
    BLOB blob = null;
    try
    conn.setAutoCommit(false);
    String cmd = "SELECT * FROM so_cs.testlob WHERE docno = 1 FOR UPDATE";
    PreparedStatement pstmt = conn.prepareStatement(cmd);
    ResultSet rset = pstmt.executeQuery(cmd);
    rset.next();
    blob = ((OracleResultSet)rset).getBLOB(2);
    File binaryFile = new File(fileName);
    System.out.println("Document length = " + binaryFile.length());
    FileInputStream instream = new FileInputStream(binaryFile);
    OutputStream outstream = blob.getBinaryOutputStream();
    int size = blob.getBufferSize();
    byte[] buffer = new byte[size];
    int length = -1;
    while ((length = instream.read(buffer)) != -1)
    outstream.write(buffer, 0, length);
    instream.close();
    outstream.close();
    conn.commit();
    closeConnection(conn);
    catch (Exception ex)
    System.out.println("Error =- > "+ex.toString());
    private Connection getConnection(String dataBase)
    Connection conn = null;
    try
    DriverManager.registerDriver(new OracleDriver());
    conn = DriverManager.getConnection("jdbc:oracle:thin:@oraclu5:1600:dwz110","so_cs","so_cs");
    catch (Exception ex)
    System.out.println("Error getting conn"+ex.toString());
    return conn;
    private void closeConnection(Connection conn)
    if (conn != null)
    try
    conn.close();
    catch (Exception se)
    System.out.println("Error closing connection in get last imei"+se.toString());
    Works fine:
    Here is the display servlet: Works when main class inserts file
    package mypackage1;
    import java.io.InputStream;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.PrintWriter;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.FileNotFoundException;
    import java.io.Writer;
    import java.sql.Connection;
    import oracle.jdbc.*;
    import oracle.jdbc.OracleResultSet;
    import oracle.sql.BLOB;
    import org.apache.log4j.Logger;
    import Util_Connect.DataBase;
    public class DisplayLOB extends HttpServlet
    private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
    static final Logger logger = Logger.getLogger(DisplayLOB.class);
    public void init(ServletConfig config) throws ServletException
    super.init(config);
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    //response.setContentType(CONTENT_TYPE);
    //PrintWriter out = response.getWriter();
    Connection conn = null;
    PreparedStatement pstmt = null;
    try
    conn = getConnection("wizard");
    //out.println("<html>");
    //out.println("<head><title>DisplayLOB</title></head>");
    //out.println("<body>");
    //out.println("<p>The servlet has received a POST. This is the reply.</p>");
    InputStream is=null;
    oracle.sql.BLOB blob=null;
    response.setContentType("application/msword");
    //response.setContentType("audio/mpeg");
    OutputStream os = response.getOutputStream();
    String term = "1";
    String query = "SELECT docdetail FROM testlob WHERE docno = 1";
    pstmt = conn.prepareStatement(query);
    ResultSet rs = pstmt.executeQuery();
    while (rs.next())
    blob=((OracleResultSet)rs).getBLOB(1);
    is=blob.getBinaryStream();
    int pos=0;
    int length=0;
    byte[] b = new byte[blob.getChunkSize()];
    while((length=is.read(b))!= -1)
    pos+=length;
    os.write(b);
    }//try
    catch (Exception se)
    se.printStackTrace();
    finally
    try
    pstmt.close();
    catch (Exception ex)
    System.out.println("Error closing pstmt "+ex.toString());
    //out.println("</body></html>");
    //out.close();
    private Connection getConnection(String dataBase)
    Connection conn = null;
    try
    conn = DataBase.getPoolConnection(dataBase);
    catch (Exception se)
    logger.fatal("Error getting connection: ",se);
    return conn;
    private void closeConnection(Connection conn)
    if (conn != null)
    try
    conn.close();
    catch (Exception se)
    logger.error("Error closing connection in get last imei",se);
    Here is JSP/Servlet
    <%@ page import="org.apache.log4j.*"%>
    <%@ page contentType="text/html; charset=ISO-8859-1" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>untitled</title>
    <title>Wizard SMS Interface</title>
    <link rel='stylesheet' type='text/css' href='main1.css'>
    <script language='JavaScript' src='copyright.js'></script>
    </head>
    <pre>
    <%
    //HTTP 1.1
    response.setHeader("Cache-Control","no-cache");
    //HTTP 1.0
    response.setHeader("Pragma","no-cache");
    //prevents caching at the proxy server
    response.setDateHeader ("Expires", 0);
    Logger logger = Logger.getLogger("co.za.mtn.wizard.administration.admin01.jsp");
    %>
    </pre>
    <body>
    <FORM ACTION="/WizardAdministration/uploadfile"
    METHOD="POST"
    ENCTYPE="multipart/form-data">
    <INPUT TYPE="FILE" NAME="example">
    <INPUT TYPE="SUBMIT" NAME="button" VALUE="Upload">
    </FORM>
    </body>
    </html>
    <font> <b>Copyright &copy;
    <script>
    var LMDate = new Date( document.lastModified );
    year = LMDate.getYear();
    document.write(display(year));
    </script>
    Mobile Telephone Networks.
    <p align="left"><i><b><font face="Georgia, Times New Roman, Times, serif" size="1"></font></b></i></p>
    package co.za.mtn.wizard.admin;
    import java.io.InputStream;
    import java.util.Enumeration;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.PrintWriter;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.FileNotFoundException;
    import java.io.Writer;
    import java.sql.Connection;
    import oracle.jdbc.OracleResultSet;
    import oracle.sql.BLOB;
    import org.apache.log4j.Logger;
    import Util_Connect.DataBase;
    public class UploadFile extends HttpServlet
    private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
    //static final Logger logger = Logger.getLogger(UploadFile.class);
    public void init(ServletConfig config) throws ServletException
    super.init(config);
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    String headerName = null;
    Enumeration en = request.getHeaderNames();
    try
    while ( en.hasMoreElements() )
    Object ob = en.nextElement();
    headerName = ob.toString();
    System.out.println("Value for headerNAme is >"+headerName+"<");
    String aaa = request.getHeader(headerName);
    System.out.println("Value for aa is >"+aaa+"<");
    catch (Exception ex)
    System.out.println("Error in extracting request headers"+ex.toString());
    Connection conn = getConnection("wizard");
    BLOB blob = null;
    try
    conn.setAutoCommit(false);
    String cmd = "SELECT * FROM so_cs.testlob WHERE docno = 1 FOR UPDATE";
    PreparedStatement pstmt = conn.prepareStatement(cmd);
    ResultSet rset = pstmt.executeQuery(cmd);
    rset.next();
    blob = ((OracleResultSet)rset).getBLOB(2);
    //File binaryFile = new File("h:\\callcenterpilot.doc");
    //System.out.println("Document length = " + binaryFile.length());
    //FileInputStream instream = new FileInputStream(binaryFile);
    response.setHeader("Content-Type","application/vnd.ms-word");
    String contentType = request.getContentType();
    System.out.println("Content type received in servlet is >"+contentType+"<");
    ServletInputStream instream = request.getInputStream();
    OutputStream outstream = blob.getBinaryOutputStream();
    int size = blob.getBufferSize();
    byte[] buffer = new byte[size];
    int length = -1;
    while ((length = instream.read(buffer)) != -1)
    outstream.write(buffer, 0, length);
    instream.close();
    outstream.close();
    conn.commit();
    closeConnection(conn);
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    catch (Exception ex)
    System.out.println("Error =- > "+ex.toString());
    //out.println("</body></html>");
    //out.close();
    private Connection getConnection(String dataBase)
    Connection conn = null;
    try
    conn = DataBase.getPoolConnection(dataBase);
    catch (Exception se)
    System.err.println("Error getting connection: "+se.toString());
    return conn;
    private void closeConnection(Connection conn)
    if (conn != null)
    try
    conn.close();
    catch (Exception se)
    System.err.println("Error closing connection in get last imei"+se.toString());
    This is what the display servlet is showing when the JSP/Servlet insert the document
    -----------------------------7d31422224030e
    Content-Disposition: form-data; name="example"; filename="H:\(your name) Skills Matrix.doc"
    Content-Type: application/msword
    �� ࡱ � > ��     � � ���� � � ���������������������
    Tks
    Andre

    hello,
    there are multiple documents out there, describing the oracle reports server setup. try doc.oracle.com for documentation.
    also it is part of the online-documentation.
    you need to install 9iAS enterprise edition. the server is pre-configured and will listen to the url http://yourserver/dev60cgi/rwcgi60.exe
    passing only this url you will get a help-screen, describing the syntax.
    regards,
    the oracle reports team

  • JSP Servlet and convert the result set of an SQL Query To XML file

    Hi all
    I have a problem to export my SQL query is resulty into an XML file I had fixed my servlet and JSP so that i can display all the records into my database and that the goal .Now I want to get the result set into JSP so that i can create an XML file from that result set from the jsp code.
    thisis my servlet which will call the jsp page and the jsp just behind it.
    //this is the servlet
    import java.io.*;
    import java.lang.reflect.Array;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.naming.*;
    import javax.sql.*;
    public *class *Campaign *extends *HttpServlet
    *private* *final* *static* Logger +log+ = Logger.+getLogger+(Campaign.*class*.getName());
    *private* *final* *static* String +DATASOURCE_NAME+ = "jdbc/SampleDB";
    *private* DataSource _dataSource;
    *public* *void* setDataSource(DataSource dataSource)
    _dataSource = dataSource;
    *public* DataSource getDataSource()
    *return* _dataSource;
    *public* *void* init()
    *throws* ServletException
    *if* (_dataSource == *null*) {
    *try* {
    Context env = (Context) *new* InitialContext().lookup("java:comp/env");
    _dataSource = (DataSource) env.lookup(+DATASOURCE_NAME+);
    *if* (_dataSource == *null*)
    *throw* *new* ServletException("`" + +DATASOURCE_NAME+ + "' is an unknown DataSource");
    } *catch* (NamingException e) {
    *throw* *new* ServletException(e);
    protected *void *doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    Connection conn = *null*;
    *try* {
    conn = getDataSource().getConnection();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select post_id,comments,postname from app.posts");
    // out.println("Le r&eacute;sultat :<br>");
    ArrayList <String> Lescomments= *new* ArrayList<String>();
    ArrayList <String> Lesidentifiant = *new* ArrayList<String>();
    ArrayList <String> Lesnoms = *new* ArrayList <String>();
    *while* (rs.next()) {
    Lescomments.add(rs.getString("comments"));
    request.setAttribute("comments",Lescomments);
    Lesidentifiant.add(rs.getString("post_id"));
    request.setAttribute("id",Lesidentifiant);
    Lesnoms.add(rs.getString("postname"));
    request.setAttribute("nom",Lesnoms);
    rs.close();
    stmt.close();
    *catch* (SQLException e) {
    *finally* {
    *try* {
    *if* (conn != *null*)
    conn.close();
    *catch* (SQLException e) {
    // les param&egrave;tres sont corrects - on envoie la page r&eacute;ponse
    getServletContext().getRequestDispatcher("/Campaign.jsp").forward(request,response);
    }///end of servlet
    }///this is the jsp page called
    <%@ page import="java.util.ArrayList" %>
    <%
    // on r&eacute;cup&egrave;re les donn&eacute;es
    ArrayList nom=(ArrayList)request.getAttribute("nom");
    ArrayList id=(ArrayList)request.getAttribute("id");
    ArrayList comments=(ArrayList) request.getAttribute("comments");
    %>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    Liste des campagnes here i will create the xml file the problem is to display all rows
    <hr>
    <table>
    <tr>
    </tr>
    <tr>
    <td>Comment</td>
    <td>
    <%
    for( int i=0;i<comments.size();i++){
    out.print("<li>" + (String) comments.get(i) + "</li>\n");
    }//for
    %>
    </tr>
    <tr>
    <td>nom</td>
    <td>
    <%
    for( int i=0;i<nom.size();i++){
    out.print("<li>" + (String) nom.get(i) + "</li>\n");
    }//for
    %>
    </tr>
    <tr>
    <td>id</td>
    <td>
    <%
    for( int i=0;i<id.size();i++){
    out.print("<li>" + (String) id.get(i) + "</li>\n");
    }//for
    %>
    </tr>
    </table>
    </body>
    </html>
    This is how i used to create an XML file in a JSP page only without JSP/SERVLET concept:
    <%@ page import="java.sql.*" %>
    <%@ page import="java.io.*" %>
    <%
    // Identify a carriage return character for each output line
    int iLf = 10;
    char cLf = (*char*)iLf;
    // Create a new empty binary file, which will content XML output
    File outputFile = *new* File("C:\\Users\\user\\workspace1\\demo\\WebContent\\YourFileName.xml");
    //outputFile.createNewFile();
    FileWriter outfile = *new* FileWriter(outputFile);
    // the header for XML file
    outfile.write("<?xml version='1.0' encoding='ISO-8859-1'?>"+cLf);
    try {
    // Define connection string and make a connection to database
    Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/SAMPLE","app","app");
    Statement stat = conn.createStatement();
    // Create a recordset
    ResultSet rset = stat.executeQuery("Select * From posts");
    // Expecting at least one record
    *if*( !rset.next() ) {
    *throw* *new* IllegalArgumentException("No data found for the posts table");
    outfile.write("<Table>"+cLf);
    // Parse our recordset
    // Parse our recordset
    *while*(rset.next()) {
    outfile.write("<posts>"+cLf);
    outfile.write("<postname>" + rset.getString("postname") +"</postname>"+cLf);
    outfile.write("<comments>" + rset.getString("comments") +"</comments>"+cLf);
    outfile.write("</posts>"+cLf);
    outfile.write("</Table>"+cLf);
    // Everything must be closed
    rset.close();
    stat.close();
    conn.close();
    outfile.close();
    catch( Exception er ) {
    %>

    Please state your problem that you are having more clearly so we can help.
    I looked at your code I here are a few things you might consider:
    It looks like you are putting freely typed-in comments from end-users into an xml document.
    The problem with this is that the user may enter characters in his text that have special meaning
    to xml and will have to be escaped correctly. Some of these characters are less than character, greater than character and ampersand character.
    You may also have a similiar problem displaying them on your JSP page since there may be special characters that JSP has.
    You will have to read up on how to deal with these special characters (I dont remember what the rules are). I seem to recall
    if you use CDATA in your xml, you dont have to deal with those characters (I may be wrong).
    When you finish writing your code, test it by entering all keyboard characters to make sure they are processed, stored in the database,
    and re-displayed correctly.
    Also, it looks like you are putting business logic in your JSP page (creating an xml file).
    The JSP page is for displaying data ONLY and submitting back to a servlet. Put all your business logic in the servlet. Putting business logic in JSP is considered bad coding and will cause you many hours of headache trying to debug it. Also note: java scriptlets in a JSP page are only run when the JSP page is compiled into a servlet by java. It does not run after its compiled and therefore you cant call java functions after the JSP page is displayed to the client.

  • JSP/Servlets & XML - suggestion needed

    Hi everyone,
    I don't have any coding issues, I'm really just looking for some help on deciding how to go with a project I want to make. First off, I wrote a Java library that builds messages in a special format. I wanted to come up with a pretty frontend for it, so I decided I'd try my hand at a webapp since I've been interested in them for a while. So far my web app consists of jsps, servlets and my library.
    At this point I'd like to add the ability for the webapp to store created messages in an XML file (read / write). The XML library I want to use is JAXB. I have it setup to read/write my XML file fine in a test servlet, however I'd like to implement this in a kind of "best practice" approach. So I'm looking for suggestions on how I should do this.
    A few of my ideas:
    1) Use a jsp page to call a "MessagesBean" which retrieves my data from my xml file. I could then format this nicely in the jsp page. The problem with this however is that I can't find any way to open a file relative to the webapp from within a Bean. ie. when I try to open "messages.xml", I can see from tomcat errors that it attempts to open it in tomcats bin folder (or if i run from within eclipse, eclipses bin folder). I know I could get around this by using an absolute path but I want this to be portable. Any suggestions?
    2) To solve the above problem I found "getServletContext().getRealPath("")" in the Servlet API. Using this method I'm able to open my XML file relative to my webapp. The only issue I have here is that I'm now using a servlet to display the page, making it harder for me to format the output.
    I'm very new to JSP/Servlets/etc so I really don't know how I should be doing this. I'm just trying to make sure I don't start out on the wrong foot. Can someone please give some suggestions on what I could do?
    Cheers.

    I suggested not putting business logic in the servlet, but instead instansiating a business logic object in the servlet and calling one of its functions to do the work.
    There is nothing wrong with putting the business logic in the servlet on first try. Just later on, you might want to refactor the code to more conform to the above.
    In your code, you mentioned that the MessagesBean in the JSP page doesnt seem to call the constructor. The <useBean> tag first looks to
    see if the object is in request scope. If it is, it uses it (doesnt call constructor). If its not, it creates its own (calls constructor). You should always
    have it in request scope ready for useBean to use.
    I think this line:
    <jsp:useBean id="messages" class="my.package.MessagesBean" />
    should be changed to something like:
    <jsp:useBean id="messages" class="my.package.MessagesBean" scope="request" />
    The MessagesBean should only have get/set methods to get data out of its object (its a very simple object that holds data). None of its functions
    should perform business logic such as hitting the database.
    Therefore these items in your JSP page should be in the servlet or business logic:
    messages.setPath( getServletContext().getRealPath("") ); // Pass in relative PATH
    messages.processXML(); // Process XML file
    While this should be in your JSP:
    java.util.List<TEXT> TextFiles = messages.getTEXTFiles(); // Return a List of TEXT objects
    Question: The JSP calls my Bean "MessagesBean". It then passes in the current relative path. This seems fairly hackish to me, is there a better way to give the relative path to my bean?
    Answer: Hard code the relative path to the JSP page in the servlet or business logic. There is no need for the JSP page to pass its path back to the servlet or business logic. Your servlet
    'knows' the path to all the JSP pages it needs to dispatch to.
    The best way to learn MVC is to continually refactor your code until it looks more and more like MVC (separation of concerns).

  • Can somebody explain to me how JSP, servlets, ASP work within Sun's server

    Ok, I'm only beginning to get a grip of how all this works. And I have a lot of questions and confusion.
    1.) The server that comes with J2EE, what is that server? Is it an app server that runs only servlets and JSP, with some Web server stuff so it can output some info? Is it a stripped down version of TomCat? I am having a lot of trouble with the J2EE server (the one that comes with the SDK), and that is why I'm asking, maybe I don't need it. But I really want to learn JSP's, JScripts, and Beans. How else can I go about doing that, other than all out Tomcat.
    2.) Also can I run Servlets on Microsft's IIS on a Windows 2000 machine? Do I need a special API to run servlets, or JSPs?
    So how I see it, and again, I am a newbie at this. Machines that host a website, above all needs a web server. let's say most people use Apache, and they want to run it in Linux, becuase they want to be hackers. So then do they also run Tomcat, or IIS, or Coldfusion, or a million other servers in tandem on the same machine, so that they can handle ASP, JSPs, servlets, .cmf, etc.? or do they separate the app server from the webserver and then do some sort of linking? if somebody can direct me to how all this stuff works, I would greatly greatly appreciate it.

    Sounds like you need to read the J2EE spec as well as
    the servlet and JSP specs. It helps to glance through
    sections you are interested in.
    Ok, I'm only beginning to get a grip of how all this
    works. And I have a lot of questions and confusion.
    I think for a newbie, deploying your jsp's and servlets
    to a J2EE compliant app server can be quite a headache.
    You might want to concentrate on tomcat, which does servlet
    and jsp.
    Some app servers provide a http connector for most common web servers.
    I think tomcat has a IIS connector. In this case IIS would serve static html as well as its own stuff, other things like servlets and jsp go to tomcat. I am unsure about this as I mostly use tomcat in standalone mode. You can run tomcat on windows, as it is written in java.
    >
    2.) Also can I run Servlets on Microsft's IIS on a
    Windows 2000 machine? Do I need a special API to run
    servlets, or JSPs?

  • Enable paging in tabular data in JSP/Servlet

    i have a JSP page which will show the list of records from the database.
    and i can do a buld delete of these records.
    what i have done is this jsp page calls a servlet once i check some values and press the delete button. this servlet will delete the selected rows and sow the values deleted.
    now when i come back to my jsp page and refresh it, i can see that values being removed from the list.
    now i want to do the following things
    1) Automatically refresh my jsp page when i click the delete button and don't want to be redirected to a page.
    2) i want to enable paging. hope those who have worked with asp.net grid view understand this.
    thx

    If you are familiar with ASP.NET you should probably consider using Netbeans 5.5 with the visual web pack plugin.
    http://www.netbeans.org/products/visualweb
    It's currently a preview, but should be released "soon"
    It features drag and drop web app development and a paged control like the one you are looking for. Much simpler than using the manual old jsp/servlet route.
    The latest Oracle JDeveloper also support visual web app development with these types of components.

  • JSP - Servlet - Please help

    Hi:
    Can any one suggest me the code for the following scenerio, Am new to jsp-Servlet....
    I need to give an EMPNAME in a Textbox on clicking GO button from my JSP page, a servlet must process thei query and display the output of that employee details back to that JSP page..
    Please help me out with some code snippets...
    Regards,

    The sun's site provides a detailed introduction to JDBC. or
    have to google for JDBC and once you've understood the JDBC concept, then you could progress from there. There is no simple way of doing what you asked.
    You will need a database, though you could use MS Access. But you still need the JDBC.

  • For a simple JSP/Servlet application, is JBoss better than Tomcat?

    Hi,
    We have a simple JSP/Servlet/Struts application which currently runs inside a Tomcat container. Are there any advantages to move to JBoss in terms of better memory management or things like that?
    Thanks in advance.
    Niranjan

    If your requirements and application is small and simple then I think that Tomcat is OK atleast Tomcat is clean and simple. Tomcat gives you slight better performance as compared to JBoss on simple sites but please google to find out how can you tune your tomcat to give you desired output.

  • Different Classloader for JSP, Servlets?

    Hi!
              Does the WL5-JSP-servlet use an other classloader then the other
              servlets??
              I've previous posted an article with the subject "JSP - Servlet - Static
              Code in Classes".
              I will try to describe my problem better:
              At server startup I pass information to my startup servlet, for example
              the user and pw for our connection pool. The startup servlet instanciates
              the class Global which creates a db-pool with the user and pw getting
              from
              the startup-servlet.
              startup-servlet {
              public void init(ServletConfig config)
              Global.init("user","pw");
              The class Global looks like this:
              class Global {
              static {
              // register jdbc driver
              // store file informations
              static public init(string, string) {
              // init the connection pool with user and pw
              static public getConnection() {
              // returns connection from pool
              All our other servlets then just use the methode Global.getConnection()
              and other methods from the class Global.
              All servlets works perfect and can access the db-pool.
              When a jsp-file is called which also uses the methode
              Global.getConnection(), a new Instance of the class Global will be made.
              In order to init all values again, I would have to call the
              Global.init(user, pw) methode again.
              So my question is: Why does the jsp file causes a new instance of the
              class Global?
              Does the WL5-JSP-servlet use an other classloader then the other
              servlets??
              

    I am seeing the problem is sp3. I can't use sp4 becuase form based
              authentication, FBA, was broken. I can only hope that FBA will be
              re-fixed in sp5.
              Kumar Allamraju wrote:
              >
              > If you are seeing this problem in SP4, yes this is a regression in SP4 &
              > SP5. We are already aware of this
              > problem. SP5 will be out in a week or so. But this fix won't be available
              > in SP5. Follow-up with
              > support.
              >
              > --
              > Kumar
              >
              > "Bryon G. Rigg" wrote:
              >
              > > I have an application which has a servlet that controls page navigation
              > > via an xml file. The servlet class is located beneath the
              > > WEB-INF/classes as is the xml file. When I have weblogic pointing to
              > > the app directory, my servlet finds the xml file, using the
              > > Class.getResourceAsStream() method, without a hitch. But when I
              > > package everything up into a war file, and point weblogic at the war
              > > file instead, the servlet can not locate the xml file.
              > >
              > > What gives? Is there some kind of brain-dead classloader being used
              > > for war files versus a normal classloader used for directories? Any
              > > workarounds? And when will sp5 be released? I have been hearing a
              > > week or two for weeks.
              [bryon.vcf]
              

  • How can i display data on tha same page in jsp/servlet

    Hello friend,
    I am storing 50 items in a dataBase. i ve two buttons/links name previous and next. i ve to display 10 items each time in the same page when i click next button and the revrese for previous. through JSP/Servlet.
    Any suggestions will be appreciated.
    chintan anand

    I'm not sure this is the best practice... try to add the item in the arraylist, then when u click next button, add 10 to the counter. subtract if it is a previous button. thats it!
    ex..
    for(int x=counter;x<=arraylist.lenght();x++)
    ....print item here......
    }

  • How to install eclipse and MyEclipse and use it for jsp-servlet-web service

    hi ,
    please help me to install eclipse 3.1 and How to integrate MyEclipse to do jsp-servlet programming and web services.
    please also help me to include application server like tomcat and axis and use that environment in MyEclipse ide.
    please help me.....

    At the time of installation , you can't change SID XE.
    After installation, you can add another service name
    Check following thread for more details
    Re: How to create service on Oracle 10g XE
    - Virag Sharma
    http://virag.sharma.googlepages.com
    http://viragsharma.blogspot.com

  • How to get the size of JSP html output?

    Hi,
    Is there a JSP method to get the size of JSP HTML output.
    e.g. I would like to print the size of the JSP e.g.
    Size of this page is <%=pageContext.getPageSize()%> Kb ???
    Any ideas? Thanks.
    George
    Edited by: googchro on Jan 5, 2010 4:45 PM

    Would you like to print "the size of this page is..." before or after you calculate the size of the page.
    Because adding that bit of text to the page will make the page bigger...
    Doing it in java, the best approach would probably to have a filter counting the number of bytes that gets sent to the writer/output stream.
    A client side tool measuring the amount of bytes received would probably be easier though.
    You can always look at the Content-length header sent with a response. Though you normally don't have access to that on the java/jsp side, as it is sent by the container.
    cheers,
    evnafets

  • How can I call EJB from JSP/Servlets in iWS?

    Hi!!
    My JSP/Servlets are on iWS, and I deploy EJB on iAS.
    In this case, I don't know how JSP/Servlet call EJb on iAS.
    I'd like to know how I can set JNDI name in JSP/Servlet on iWS.
    I will thank you if you give me a simple example source using JSP/Servlet
    and EJB.
    Thanks in advance!!!
    - Park-

    Park,
    Why Are you running your JSP/Servlets in iWS instead of iAS? For whatever
    reason,
    look at the Converter sample from iAS. You will be doing RMI/IIOP in this
    case and the sample explains in detail what to do.
    hth,
    -robert
    "SungHyun, Park" <[email protected]> wrote in message
    news:9jpfmt$[email protected]..
    Hi!!
    My JSP/Servlets are on iWS, and I deploy EJB on iAS.
    In this case, I don't know how JSP/Servlet call EJb on iAS.
    I'd like to know how I can set JNDI name in JSP/Servlet on iWS.
    I will thank you if you give me a simple example source using JSP/Servlet
    and EJB.
    Thanks in advance!!!
    - Park-

Maybe you are looking for

  • Help needed in knowing the B2B Table strucure

    Hi All, I would like to know the tables in the B2B database that stores the ISA,GS,ST,Receiver ID and Ack flag data. Or any document which contains the description of all the tables and what data is stored in them . Thanks in advance. Regards, Kaavya

  • Acknowledgment in File Adapter

    Hi, I tried a BPM that receive from a SOAP and writes into a file. I need BPM because of alerts. Because I started a s/a-bridge, I would like to send the soap adapter a response (like an errorcode). The sender step got a field Acknowledgement. How ca

  • Why can't I link to an image in Yahoo! mail options Signature? It works in Explorer.

    I use the Yahoo! Mail options Signature to insert a signature every time I e-mail. I have inserted my logo and cannot get the link to work when you browse over the logo. I could not even copy the link in Firefox, I had to do it in Explorer. This may

  • Calling a method in a different class. PLEASE HELP!!

    For my java class I am writing a program on exceptions. Bascially this is the skeleton of the program that I have written. The program is too long to type in this messgae. class ryan includes main suberror2 is called from here suberror 3 is called fr

  • Oracle 10G Release 2 and OS x Lion

    I am looking to install 10G R2 on OS x Lion and wondered if anybody has had success. If so, would they like to share their findings with the community. I found some instructions on installing 10G R2 on OS x Leopard but those steps work for the most p