Button buttonObj = "Submit"; It is because "Submit" is a literal string (slightly different than a String object)
and buttonObj is a Button object. That simple. The only object in Java that can be assigned a literal String is java.lang.String.
Important to not that you are NOT calling a java.lang.String constuctor when you type String s = "Submit";
For example String a = "Submit"; String b = "Submit"; refer to the same object. While String a1 = new String("Submit");
String b1 = new String("Submit"); refer to two different objects.
My Java knowledge
Tuesday, August 10, 2010
Thursday, August 5, 2010
Get the currently logged in users
This code example shows how to get details of currently logged users in a web application.
import java.util.HashSet;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class UserCounterListener implements ServletContextListener,
HttpSessionAttributeListener {
public static final String COUNT_KEY = "userCounter";
public static final String USERS_KEY = "userNames";
private final transient Log log = LogFactory.getLog(UserCounterListener.class);
private transient ServletContext servletContext;
private int counter;
private Set users;
public synchronized void contextInitialized(ServletContextEvent sce) {
servletContext = sce.getServletContext();
servletContext.setAttribute((COUNT_KEY), Integer.toString(counter));
}
public synchronized void contextDestroyed(ServletContextEvent event) {
servletContext = null;
users = null;
counter = 0;
}
synchronized void incrementUserCounter() {
counter =
Integer.parseInt((String) servletContext.getAttribute(COUNT_KEY));
counter++;
servletContext.setAttribute(COUNT_KEY, Integer.toString(counter));
if (log.isDebugEnabled()) {
log.debug("User Count: " + counter);
}
}
synchronized void decrementUserCounter() {
int counter =
Integer.parseInt((String) servletContext.getAttribute(COUNT_KEY));
counter--;
if (counter < 0) {
counter = 0;
}
servletContext.setAttribute(COUNT_KEY, Integer.toString(counter));
if (log.isDebugEnabled()) {
log.debug("User Count: " + counter);
}
}
synchronized void addUsername(Object user) {
users = (Set) servletContext.getAttribute(USERS_KEY);
if (users == null) {
users = new HashSet();
}
if (log.isDebugEnabled()) {
if (users.contains(user)) {
log.debug("User already logged in, adding anyway...");
}
}
users.add(user);
servletContext.setAttribute(USERS_KEY, users);
incrementUserCounter();
}
synchronized void removeUsername(Object user) {
users = (Set) servletContext.getAttribute(USERS_KEY);
if (users != null) {
users.remove(user);
}
servletContext.setAttribute(USERS_KEY, users);
decrementUserCounter();
}
public void attributeAdded(HttpSessionBindingEvent event) {
if (event.getName().equals("loggedinUser")) {
addUsername(event.getValue());
}
}
public void attributeRemoved(HttpSessionBindingEvent event) {
if (event.getName().equals("loggedinUser")) {
removeUsername(event.getValue());
}
}
public void attributeReplaced(HttpSessionBindingEvent event) {
}
}
add declare listener class in web.xml .
<listener>
<listener-class>UserCounterListener</listener-class>
</listener>
The list of logged in users will be in session with attribute "userNames".
import java.util.HashSet;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class UserCounterListener implements ServletContextListener,
HttpSessionAttributeListener {
public static final String COUNT_KEY = "userCounter";
public static final String USERS_KEY = "userNames";
private final transient Log log = LogFactory.getLog(UserCounterListener.class);
private transient ServletContext servletContext;
private int counter;
private Set users;
public synchronized void contextInitialized(ServletContextEvent sce) {
servletContext = sce.getServletContext();
servletContext.setAttribute((COUNT_KEY), Integer.toString(counter));
}
public synchronized void contextDestroyed(ServletContextEvent event) {
servletContext = null;
users = null;
counter = 0;
}
synchronized void incrementUserCounter() {
counter =
Integer.parseInt((String) servletContext.getAttribute(COUNT_KEY));
counter++;
servletContext.setAttribute(COUNT_KEY, Integer.toString(counter));
if (log.isDebugEnabled()) {
log.debug("User Count: " + counter);
}
}
synchronized void decrementUserCounter() {
int counter =
Integer.parseInt((String) servletContext.getAttribute(COUNT_KEY));
counter--;
if (counter < 0) {
counter = 0;
}
servletContext.setAttribute(COUNT_KEY, Integer.toString(counter));
if (log.isDebugEnabled()) {
log.debug("User Count: " + counter);
}
}
synchronized void addUsername(Object user) {
users = (Set) servletContext.getAttribute(USERS_KEY);
if (users == null) {
users = new HashSet();
}
if (log.isDebugEnabled()) {
if (users.contains(user)) {
log.debug("User already logged in, adding anyway...");
}
}
users.add(user);
servletContext.setAttribute(USERS_KEY, users);
incrementUserCounter();
}
synchronized void removeUsername(Object user) {
users = (Set) servletContext.getAttribute(USERS_KEY);
if (users != null) {
users.remove(user);
}
servletContext.setAttribute(USERS_KEY, users);
decrementUserCounter();
}
public void attributeAdded(HttpSessionBindingEvent event) {
if (event.getName().equals("loggedinUser")) {
addUsername(event.getValue());
}
}
public void attributeRemoved(HttpSessionBindingEvent event) {
if (event.getName().equals("loggedinUser")) {
removeUsername(event.getValue());
}
}
public void attributeReplaced(HttpSessionBindingEvent event) {
}
}
add declare listener class in web.xml .
<listener>
<listener-class>UserCounterListener</listener-class>
</listener>
The list of logged in users will be in session with attribute "userNames".
Wednesday, August 4, 2010
About this blog
Hi All
I am currently working as java system analyst in a company in technopark,Triv andrum.This blog was to share my knowledge in java with you.
This blog contains
- Java Tips
- Java code samples
- Java Interview Questions
- Java certification Tips
Subscribe to:
Comments (Atom)