What is JavaBean ?
JavaBean is a special Java class which is written according to the JavaBean API. There are conventions for JavaBeans.
- The class should be serializable.
- The class must have a public constructor (no arguments).
- It can have getter and setter methods for every property in the class.
JavaBean naming conventions
There is a post for Java naming rules in this blog. You can refer it for more details.
Example for JavaBean
package user; import java.io.Serializable; public class JavaBeanExample implements Serializable{ private String name=null; //setProperty public void setName(String name){ this.name=name; } //getProperty public String getName(){ return name; } }
JavaBean with JSP
You can access JavaBeans through JSP. To do this task we use jsp:useBean action with few attributes. Here is an example that shows how to add useBean action into your JSP page.
<jsp:useBean id="Bean ID" scope="Bean's scope"/>
jsp:useBean attributes
There you have seen what are the attribute that can be used with jsp:useBean. There are few rules that you need to follow writing jsp pages.
- id attribute is mandatory. This is the unique identifier of the bean.
- scope attribute is optional. Default value is page. You cannot use session scope if session attribute of page directive is set to false.
- Other three attributes can be used according to following combinations. At least one of them should be mentioned.
- class
- type
- class + type
- beanName + type
jsp:setProperty action
In JavaBean class there are setter and getter methods as I mentioned before. This setProperty action is used set methods. Here you can see how to use it in JSP.
<jsp:setProperty name="bean's id" property="property name" value="value">
jsp:setProperty attributes
As you can see there are only four attributes in jsp:setProperty. You need to understand few things before step forward into jsp:getProperty.
- name attribute is mandatory. Because this is used to identify the bean. This value should be same as the id of the jsp:useBean action.
- property attribute is also mandatory. It indicates the property of the bean to be set. You can set all the properties to respect values using " * " for property attribute. (property = "*")
- value is optional attribute. Look at the following codes. Both are same.
<jsp:setProperty name="userName" property="firstName" value="Ann">
Above code is equal to following scriplet code.
<% userName.setFirstName("Ann") %>
- Instead of using value attribute it can be used param attribute to define requested parameters. Following codes are equivalent.
<jsp:setProperty name="userName" property="firstName" param="newName">
Above code is equal to following scriptlet code.
<% userName.setName(request.getParamter("newName")) %>
jsp:getProperty action
This is used to retrieve and print values of the bean. You can use it as follows.
<jsp:getProperty name="beanInstanceName" property="propertyName">
jsp:getProperty attributes
Following JSP code and Scriptlet codes are equal.
<jsp:getProperty name="userName" property="firstName">
This is equal to,
<% out.print(userName.getFirstName()); %>
Now it is the time to see what really happens in coding. Here is an example that demonstrate how to use JavaBeans with JSP.
EmployeeBean.java
package factory; import java.io.Serializable; public class EmployeeBean implements Serializable{ private String name = null; private String id = null; public String getName(){ return name; } public String getId(){ return id; } public void setName(String name){ this.name = name; } public void setId(String id){ this.id = id; } }
home.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <body> <h2>Employee details</h2> <form method="post" action="employeeJsp.jsp"> <label>Name :</label> <input type="text" name="name"></br> <label>ID :</label> <input type="text" name="id"></br> <input type="submit" value="Submit"> </form> </body> </html>
employeeJsp.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="factory" class="factory.EmployeeBean" scope="session"/> <jsp:setProperty name="factory" property="name"/> <jsp:setProperty name="factory" property="id"/> <%-- Instead of using above two statemens, you can use following code <jsp:setProperty name="factory" property="*"/> --%> <!DOCTYPE html> <html> <body> <h1>Hi <jsp:getProperty name="factory" property="name"/> ! </h1> <h2>Your ID is <jsp:getProperty name="factory" property="id"/> </h2> <%-- Instead of using jsp:getProperty, you can use following code <%= factory.getName() %> <%= factory.getId() %> --%> </body> </html>
Download project file
JSP JavaBeans
Reviewed by Ravi Yasas
on
7:45 PM
Rating:
No comments: