Skip to main content

Posts

Recovering from a checked exception in Java

If you are working on the back-end, this might be of use. Very trivial but rarely used. /** * This class demonstrates how to recover from checked exceptions * @author Joset */ public class CheckedExceptionRecovery { /** * @param args the command line arguments */ public static void main(String... args) { InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); int input = 0; boolean done = false; do { try { System.out.println("Please enter an integer: "); input = Integer.parseInt(bufferedReader.readLine().trim()); done = true; } catch (NumberFormatException numberFormatException) { System.out.println("Invalid input. Please try again."); } catch (IOException ioException) { System.out.println("C...

Controller (MVC) Tips for Java Servlets / JSP

I was inspired by a face-to-face technical interview awhile ago that is why I am writing this down. To avoid having the Servlet’s doXXX() methods clogged, use reflection by breaking down your controller code into modules. Here’s how. You must have the following. 1. Reflection Interface (ServletHandler.java) - An interface for reflection. Nice definition! 2. Main Servlet (MainServlet.java) - A class extending HttpServlet. 3. Module Handler (CreditHandler.java) - A class containing the module’s controller code, for this example, the Credit Module. in file ServletHandler.java , import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface ServletHandler { public abstract void setServlet(HttpServlet servlet); public abstract void handle(HttpServletRequest request, HttpServletResponse response); } in file MainServlet.java , protected void doGet(HttpServletRequest r...

Method Piercing in Java

There’s nothing new here. I just want to reiterate though. class TargetClass { private static String DB_PASSWORD = "sw0rdfish"; private static String getDatabasePassword() { return DB_PASSWORD; } } And the attack? import java.lang.reflect.Method; public class ClassPiercing { public static void main(String... args) throws Exception { Class targetClass = Class.forName("TargetClass"); Method[] methods = targetClass.getDeclaredMethods(); methods[0].setAccessible(true); String databasePassword = (String)methods[0].invoke(null, null); System.out.println("Database Password: " + databasePassword); } } Output: Database Password: sw0rdfish Check out Val’s Blog by clicking [here] . He has more examples.

Sad reality about Wrapper Classes in Java

Consider the snippet. Integer firstInteger = 1000; // autoboxing Integer secondInteger = 1000; //autoboxing if (firstInteger != secondInteger) { System.out.println("Different objects!"); } if(firstInteger.equals(secondInteger)) { System.out.println("Meaningfully equivalent!"); } Output: Different objects! Meaningfully equivalent! How about this one. Integer firstInteger = 100; // autoboxing Integer secondInteger = 100; //autoboxing if (firstInteger == secondInteger) { System.out.println("Equal objects!"); } if(firstInteger.equals(secondInteger)) { System.out.println("Meaningfully equivalent!"); } And the output? Equal objects! Meaningfully equivalent! And the explanation? Two instances of the wrapper objects will always be == when their primitive values are the same. - Boolean - Byte - Character from \u0000 to \u007F (0 to 127) - Short from -128 to 127 - Integer from -128 to 127 Tsk.

MD5 Hashing in Java

This is useful for storing passwords in a database though still vulnerable to md5 dictionary attacks, anyway, here’s a static method. public static String hash(String text) { String hashedString = ""; try { MessageDigest md5Hash = MessageDigest.getInstance("MD5"); md5Hash.update(text.getBytes(), 0, text.length()); hashedString = new BigInteger(1, md5Hash.digest()).toString(16); } catch (NoSuchAlgorithmException exception) { exception.printStackTrace(); } return hashedString; } This will return the MD5 hash. Have a great day!

Static Methods and Variables in Java

Static methods and variables are shared by all instances of the class. Static variables are initialized when a class is loaded whereas instance variables are initialized when an instance of the class is created. Static methods belong to a class, therefore, it can only access static members of the class and it can be called before instantiating the class. class StaticCase { static int staticCounter = 0; int nonStaticCounter = 0; StaticCase() { staticCounter++; //class level nonStaticCounter++; //instance level } } class StaticCaseImpl { //static method, entry point public static void main(String... args) { //StaticCase.nonStaticCounter, error, not a static variable StaticCase sc1 = new StaticCase(); StaticCase sc2 = new StaticCase(); System.out.println("staticCounter sc1: " + sc1.staticCounter); //output is staticCounter sc1: 2 //or in static context, StaticCase.staticCounter System.out.println("nonSta...

Magic: The Gathering

I got this from Amerei . Here is my color. Take the Magic: The Gathering ‘What Color Are You?’ Quiz.

Something for Solaris SPARC

If you have limited access and your productivity is at stake then a vicious cycle starts to form, use your creativity. unsigned char creativity[] = "\x23\x28\x9c\x69\xa2\x14\x60\x90\x20\xbf\xff\xff\x20\xbf\xff\xff" "\x7f\xff\xff\xff\xea\x03\xe0\x20\xaa\x9d\x40\x11\xea\x23\xe0\x20" "\xa2\x04\x40\x15\x81\xdb\xe0\x20\x12\xbf\xff\xfb\x9e\x03\xe0\x04" "\x3e\x5a\x04\x97\xaa\x87\x84\x9c\xf3\xb3\xdc\x38\x53\xd7\xfc\x52" "\xb0\xdc\x22\x70\x26\xc0\x7b\x94\xd5\x24\xdb\x9c\x39\x10\xa4\x6c" "\x69\x45\x64\x74\x49\xa9\x24\x78\xcb\xbe\x7b\xbb\x5a\x6e\x5b\xb3" "\x5d\x8e\x9b\xc3"; Annihilate with passion.

Equality of Java Objects

There are 3 candidates for the equality test in Java: 1. Primitives 2. References 3. Objects When we compare things in Java, what is really being compared? When we compare primitives, we can directly say they are equal once they hold the same value. Therefore they can be compared using the == operator. The same is true for reference variables, however, we are not comparing the actual values being referred to, rather we compare the pointers to the actual values. Primitive int someInt = 1; if (someInt == 1) { //this block will execute } The equality of two objects is tested using the equals method of the Object class. The default behavior of the equals method is just the same as the == operator. However, some classes override this method for a specific comparison. One example is the String class, the equals method is overridden to test the equality of the actual strings being held by two String objects. Object without an overridden equals method Object a = new Object(); Ob...