[ Team LiB ] Previous Section Next Section

Recipe 16.10 Setting Request Attributes in JSPs

Problem

You want to set a request attribute using a JSP.

Solution

Use the JSTL core tags and the jsp:useBean standard action to create an instance of an object and bind it to the request.

Discussion

The JSP in Example 16-12 stores a com.jspservletcookbook.ContextObject in the request scope by first creating an instance of that object with jsp:useBean. As in Recipe 16.2 and Recipe 16.6, the code uses the c:set tag to bind the object to the request, but this time gives its scope attribute a value of request.

You should store the classes for the objects that JSPs use as request attributes in WEB-INF/classes, or in WEB-INF/lib if the class is part of a JAR file.


The JSP in Example 16-12 is exactly like the JSP code shown in Recipe 16.2 and Recipe 16.6, except this time the code uses the requestScope implicit object to fetch the request attribute and give it a new property and value. The requestScope is used in EL syntax (see Chapter 23) to access request attributes.

Example 16-12. Setting a request attribute and forwarding the request in a JSP
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

<jsp:useBean id="contextObj" class=
    "com.jspservletcookbook.ContextObject" />

<jsp:useBean id="date" class="java.util.Date" /> 
<c:set var="com.jspservletcookbook.ContextObject" value=
    "${contextObj}" scope="request" />

<c:set target=
    "${requestScope[\"com.jspservletcookbook.ContextObject\"].map}" value=
        "${date}" property="${pageContext.request.remoteAddr}"/>

<jsp:forward page="/displayAttr" />

After setting the request attribute and giving it some values, the JSP forwards the request to the servlet path /displayAttr. The servlet or JSP mapped to that path has access to the new request attribute.

See Also

Chapter 23 on using the JSTL; Recipe 16.1-Recipe 16.4 on handling ServletContext attributes in servlets and JSPs; Recipe 16.5-Recipe 16.8 on handling session attributes in servlets and JSPs; Recipe 16.11 and Recipe 16.12 on accessing or removing request attributes in servlets and JSPs; the Javadoc for javax.servlet. ServletRequestAttributeListener: http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletRequestAttributeListener.html.

    [ Team LiB ] Previous Section Next Section