Never been to CodeSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

Ubuntu and writing Java servlets

Kind of a strange, and I'm sure this wouldn't have happened on any other distribution of Linux, but I spent forever looking through blogs, message boards, and all manner of other places looking for an answer to this question.

The problem was with this little itty bitty smidge of code:
/**
 * hello.java
 */
import javax.servlet.*;

class HelloWorld
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}


Everytime I wanted to compile this, I got something like "Could not find javax.servlet. blah blah" So, eventually, I just pulled an apt-cache search j2 (for j2ee) and saw an entry for libservlet2.4-java. Hmmmmm, what the heck is that I wondered. I installed it and went to the Ubuntu site to look at what files were installed and sure enough:

/usr/share/java/jsp-api-2.0.jar
/usr/share/java/jsp-api.jar
/usr/share/java/servlet-api-2.4.jar
/usr/share/java/servlet-api.jar


Perfect! I added these paths to my CLASSPATH variable in my .bashrc and whamo, I'm in business and flaunting my little HelloWorld.class file all around town.

I hope this helps someone else!

jsp:include and <%@ include, UTF-8

jsp:include will dynamically detect any changes made to the included file. So in general, it is better to use jsp:include than the include directive.

There is another advantage. If the included file contains UTF-8 characters that are other than ASCII, then using jsp:include will ensure these characters displaying correctly. However, if the included file is a JSP file, you'll need to put this at the beginning:
<%@ page language="java" %>
<%@ page contentType="text/html;charset=UTF-8" %>

Make your JSP an XHTML

By default, a JSP file won't be considered as an XHTML stream by the web browser. This will make things such as XForms not being rendered since the browser XForms plugins/addons render Xforms only for XHTML pages. To make a JSP file as XHTML, put this at the beginning of the JSP file

<?xml version="1.0" encoding="utf-8"?>
<% response.setContentType("application/xhtml+xml"); %>


Note that the XML declaration has to be in the first line for a valid XHTML. Of course, after doing this, you need to make all your tags valid XML in your JSP as well.

How to use JSTL fmt:message and resource bundle

To use JSTL fmt:message tags with a message bundle, there are two ways.

First, if there is only one properties file, use, the following code in web.xml file.

  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>class.path.to.your.resources.bundle</param-value>
  </context-param>


Use <fmt:message key="your.message.key"/> in the JSP.

Second, if there are multiple properties files, and there are different locales, use
<fmt:setBundle basename="class.path.to.your.resources.bundle"/>

before <fmt:message key="your.message.key"/>

Or you can write

<fmt:bundle basename="class.path.to.your.resource.bundle">
  <fmt:message key="your.message.key"/>
</fmt:bundle>