index=language> Sets the JSP script language to . Defaults to Java. All JSP 1.0 implementations must support Java. Some implementations, like Resin, may support other scripting languages, e.g. JavaScript. Adds to the Java package import list for the generated Java file. Only relevant when using Java. index=errorPage> Defines a page to display if an error occurs in the JSP page. Robust applications can return informative error pages when something goes wrong in a file, for example if a database is overloaded. is returned as the response file. The error page can use the additional implicit variable href='#exception'>exception containing the thrown exception. is relative to the current page. Its root is relative to the application root. The error page itself can be a JSP page. If the error page is a JSP page, it can use the implicit variable to get information about the thrown exception. index='error page'> Gives an error page access to the implicit variable. Default to false. <%@ page isErrorPage="true" %> <h1>Received error <%= exception.message %></h1> index='include, at translation'> Includes the raw file at translation time. The include directive is a replacement for an SSI include (or the C '#include'). It includes the contents of the file at into the JSP file. The included file is parsed as JSP, so it can have active elements like expressions, declarations and scriptlets. is relative to the current page, and its root is the application root. <html><head> <title><%= title %></title> </head> <body color=white> <% var title = "Hello, World"; %> <%@ include file='header.jsp' %> <h1><%= title %></h1> title='<%@ page buffer=sizekb %>'> Gives the of the page buffer in kb or for no buffer. Default 8kb. If is , all output is immediately flushed. JSP 1.0 gives page writers flexibility by buffering its output before sending the response to HTTP. The buffering allows href='#errorpage'>error recovery and forwarding, even after generating some content. Once the buffer has filled, it will be flushed. So applications must still detect their errors early. The following example generates an XML document (for variety). If the form's query is missing the 'name' parameter, it will redirect the results. <?xml version='1.0'?> <form> <% if (request.form["name"] == null) pageContext.forward("redo-form.jsp"); for (var name in request.form) { out.print("<" + name + ">"); out.print(request.form[name]); out.println("</" + name + ">"); } %> </form> title='<%@ page autoFlush="true" %>'> Tells JSP to flush the page buffer when it fills. Default is true. If autoFlush is false, the JSP engine will throw an exception if the buffer overflows. title='<%@ page session="true" %>'> Tells JSP that the page participates in a session. Defaults to true. The session declaration makes the session implicit variable available to a JSP page. If the page doesn't use sessions, it should set to false. <%@ page session="true" %> <% session.value.count++; %> <h1>Welcome, visitor <%= count %></h1;> title='<%@ page isThreadSafe="true" %>'> Tells the JSP that multiple pages can execute in parallel. Defaults to true. JSP pages are always responsible for synchronization of shared variables, such as the and variables. In some rare cases, a page may use servlet variables (created with a declaration), and be too lazy to handle the synchronization. Even with , the JSP engine may create multiple instances of the JSP servlet. So the page author can never absolve herself of synchronization issues. In the following example, a JSP engine might create 3 servlet instances of the page. So three calls to the same page may return counts of 17, 3 and 398. In addition, the JSP engine is free to destroy and recreate the servlet at any time, essentially resetting the counter to 0. <%@ page isThreadSafe="false" %> <%! var count = 0; %> <h1>Welcome, visitor <%= count++ %> Gives a brief description for the page. Sets the content type and character encoding of the page. can also set the character encoding, for example to utf-8. <%@ page contentType="text/plain; charset=utf-8" %> <%! var count = 0; %> <h1>Welcome, visitor <%= count++ %> Changes the generated servlet's class. In general, a filter is a better solution than using the extends directive. Configures tags with prefix to use the tag library . <%@ taglib prefix='x' uri='http://www.caucho.com/mytag/test' %> <x:mytag/>