JSTL has two tags that help you handle input: <fmt:parseNumber> to help you read numbers, and <fmt:parseDate> to help you read dates. The <fmt:parseNumber> tag is specifically for cases in which you need to parse or interpret complicated numbers E.g. if the user enters 50,000 (including the comma), or if you read values that contain commas or spaces from an XML file or database, you can't treat these values as numbers; you need to parse them first. Source number is parsed with respect to locale setting of the browser. This is the key thing to realize about JSTL's parsing and formatting support: by default, pages automatically adapt to the correct locale, and you can forget about the matter and focus on more important things:

HTML form specifying user number:

...
<form method="post" action="parseNumber.jsp">
	What's your favorite number?
	<input type="text" name="favorite" size="10" />
	<input type="submit" value="Enter"/>
</form>
...
////////////// page using JSTL to parse number:
...
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>

<p>
	You entered "<c:out value="${param.favorite}"/>". 
</p>

<fmt:parseNumber var="fav" value="${param.favorite}"/>

<p>
	As far as I can tell, this corresponds to the
	number <c:out value="${fav}"/>.
</p>

<p>If you multiply this number by 2 and add 1, you get
	<c:out value="${fav * 2 + 1}"/>. I like that number
	better.
</p>
...