0

I am having an issue with creating some JSP pages. I have a few pages (Home, About Us, Contact Us) done up in JSP, and I also have the ability to login to this site using a username and password.

What I want to achieve is to allow visitors to access the About Us and Contact Us page without logging in. Yet if the visitor has logged in, I want to print a simple welcome message in About Us and Contact Us that includes his username.

I am implementing the MVC architecture, so I already have the controller and model done. The code I have for the About Us page is:

<jsp:usebean id="user" type="UserBean" scope="session"/>
...other code...
Welcome, <jsp:getproperty name="user" property="username"/>

This displays fine if the user has already logged in, however it throws an exception if I access this page directly without logging in. I can fix the problem by changing the usebean line to:

<jsp:usebean id="user" class="UserBean"/>

But this doesn't seem in line with MVC, which says that I shouldn't let JSP pages create classes.

Is there any way to conditionally use the bean only if it exists? Or is this implementation wrong, and there is an alternative?

3
Contributors
7
Replies
8
Views
7 Years
Discussion Span
Last Post by celyst
0

Correct me if I am wrong, but I believe the <jsp:usebean> tags are always executed when they are in the JSP page. There is no way to enclose them in a conditional if-else statement. Is this what you meant? Or is there another way using the "JSP expression language" that you mentioned?

0

the usebean tag just tells the page to use a bean of that class. It's a variable declaration, nothing else.

When using JSTL you don't need it. It's an outdated concept designed to be used with JSP tag libraries predating JSTL.

0

How will it look like in JSTL? Actually I have just started learning JSP for a project. I have Java background so it's been a little easier to learn JSP, but I'm still not too sure about some things.

0

Buy O'Reilly's JSP book (3rd edition or newer).
basically you get something like

<c:choose>
  <c:if condition="condition"> 
  </c:if>
  <c:if condition="condition2"> 
  </c:if>
  <c:otherwise>
  </c:otherwise>
</c:choose>
0

@jwenting you made a mistake. if tags are not valid inside choose tags; you need to replace the if tag with when tag

0

Buy O'Reilly's JSP book (3rd edition or newer).
basically you get something like

<c:choose>
  <c:if condition="condition"> 
  </c:if>
  <c:if condition="condition2"> 
  </c:if>
  <c:otherwise>
  </c:otherwise>
</c:choose>

So I will be able to put <jsp:usebean> statements in the condition part?

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.