Skip to content

Instantly share code, notes, and snippets.

@splacentino
Last active February 24, 2023 09:22
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 11 You must be signed in to fork a gist
  • Save splacentino/672b3a32ca1877d68d05 to your computer and use it in GitHub Desktop.
Save splacentino/672b3a32ca1877d68d05 to your computer and use it in GitHub Desktop.
A JSP cheat sheet

Java expression evaluated at run time.

Prototype

<%=     %>

Example

Current date : <%= new java.util.Date() %>

Scriptlets

Prototype

<%      %>

Example

<%
     System.out.println("Write in console log");
     out.println("write in : javax.servlet.jsp.JspWriter \"out \" variable <br>");
     java.util.Date date = new java.util.Date();
%>

<%
    if ( hello ) {
        %>
        <P>Hello, world at : <%= date %>
        <%
    } else {
        %>
        <P>Goodbye, world at : <%= date %>
        <%
    }
%>

Directives

Prototype

<%@     %>

Example with a "page directive"

Java library includes

<%@ page import="java.util.Date, java.util.ArrayList" %>

Current date : <%= new Date() %>

Example with a "include directive"

Physically include the contents of another file, HTML or JSP

<html>
        <body>
                include other.jsp...<BR>
                <%@ include file="other.jsp" %>
        </body>
</html>

Declarations

You can also add variable and method declarations to this class. You can then use these variables and methods from your scriptlets and expressions.

Prototype

<%!     %>

Example

The date will be the same, no matter how often you reload the page. This is because these are declarations, and will only be evaluated once when the page is loaded

<%!
    Date theDate = new Date();
    Date getDate()
    {
        System.out.println( "In getDate() method" );
        return theDate;
    }
%>
Hello!  The time is now <%= getDate() %>

Tags

Prototype

        <some:tag>
                body
        </some:tag>

If the tag does not require a body, the start and end can be conveniently merged together, as

<some:tag/>

Example with include

jsp:include is similar. But instead of loading the text of the included file in the original file, it actually calls the included target at run-time

<html>
        <body>
                Going to include hello.jsp...<BR>
                <jsp:include page="hello.jsp"/>
        </body>
</html>

JSP session

Prototype

<%
        session.setAttribute(... , ...);
%>

Example

<%
        string name = request.getParameter("username");
        session.setAttribute("theName" , name);
%>

<html>
        <body>
                Hello, <%= session.getAttribute( "theName" ) %>
        </body>
</html>

JSP bean

You need first to declare java class that will be used as bean

package my.big.fat.package.name.as.folders.where.class.files.are.included;

public class UserData {

    private String username;
    private String email;
    private int age;

    public void setUsername( String username )
    {
        this.username = username;
    }

    public void setEmail( String email )
    {
        this.email = email;
    }

    public void setAge( int age )
    {
        this.age = age;
    }

    public String getUsername() 
    { 
    	return this.username; 
    }

    public String getEmail() 
    { 
    	return this.email; 
    }

    public int getAge() 
    { 
    	return this.age; 
    }

}

Prototype

<jsp:useBean id="userId" class="my.big.fat.package.name.as.folders.where.class.files.are.included.UserData" scope="session"/>

Example

getName.html

<html>
	<body>
		<form METHOD=POST ACTION="SaveName.jsp">
		What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR>
		What's your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR>
		What's your age? <INPUT TYPE=TEXT NAME=age SIZE=4>
		<P><INPUT TYPE=SUBMIT>
		</form>
	</body>
</html>

SaveName.jsp

<jsp:useBean id="john" class="my.big.fat.package.name.as.folders.where.class.files.are.included.UserData" scope="session"/>
<jsp:setProperty name="john" property="*"/> 
<jsp:setProperty name="john" property="*"/> 

<html>
	<body>
		<a href="NextPage.jsp"> Continue </a>
	</body>
</html>

NextPage.jsp

<jsp:useBean id="john" class="my.big.fat.package.name.as.folders.where.class.files.are.included.UserData" scope="session"/> 

<html>
	<body>
		You entered<BR>
		Name: <%= john.getUsername() %><BR>
		Email: <%= john.getEmail() %><BR>
		Age: <%= john.getAge() %><BR>
	</body>
</html>
@minhphong306
Copy link

Thanks you.
It's a nice cheatsheet. Can you provide usage of filter ?

@zurakin
Copy link

zurakin commented May 31, 2022

Thank you. But I have to say, my.big.fat.package was a questionable choice.

@Anirban20001962
Copy link

This material is very helpful.

@Mahikolhe23
Copy link

Thanks for this sheet nicely explain

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment