Ciao a tutti ho un problema con AJAX utilizzando le jsp

Devo "popolare" una select provincie dopo aver scelto la regione da una prima select
ho provato una soluzione che utilizzavo cn php anni fà ma non mi funziona
Da segnalare che non sono alle prime armi con JSP e Servlet

Qualcuno sa darmi una buona Guida con AJAX e le JSP GRAZIE o aiutarmi?

GRAZIE


Posto un pò di codice

codice:
menu.jsp
<form method="POST" action="DelServlet">
		<table border="0"  cellspacing="25">
			<tr><td>Regioni</td><td>
			<select name="regioni" onchange="abilitaProvince();popola('getProvince.jsp',this.value)" >
			<option>Scegli  Regione...</option>
			<%
				String query = "SELECT * FROM REGIONI";
				try {
					ps = con.prepareStatement(query);
					rs = ps.executeQuery();
					con.commit();
					while (rs.next()) {
						out.print("<option value='"+rs.getString("REGIONI_ID")+"'>"+rs.getString("REGIONI_NAME")+"</option>");
					}

				} catch (SQLException e) {
					System.out.println("errore: " + e.getMessage());
				}
			%>	
			</select></td></tr>
			<tr><td>Provincie</td><td>
				<select name="province" id="province" disabled="disabled">
					<option>Scegli Provincia...</option>
					
				</select></td></tr>
			<tr><td></td><td><button type="reset">RESET</button></td><td><button type="submit">DELETE</button></td></tr>
		</table>
	</form>

codice:
javascript AJAX
function GetXmlHttpObject(handler)  
{  
	var objXMLHttp=null;  
	if (window.XMLHttpRequest)  
	{  
		objXMLHttp=new XMLHttpRequest();  
	}  
	else if (window.ActiveXObject)  
	{  
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");  
	}  
	return objXMLHttp;  
}




function popola(url,reg)
{  
	if (url.length==0)  
	{  
		document.getElementById("txtResult").innerHTML="";  
		return;  
	} 

	xmlHttp=GetXmlHttpObject();

	if (xmlHttp==null)  
	{  
		alert ("Browser does not support HTTP Request");  
		return;  
	}
	url=url+"?"+reg;
	url=url+"&sid="+Math.random(); 
	alert(url);
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);   
}

function stateChanged()
{

	//alert("stateChanged");
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{
		document.getElementById("province").innerHTML=xmlHttp.responseText;
		//alert("qui");
	}
	else
	{
		//  alert("Qui");      
	}
}


codice:
getProvince.jsp
<%@ page import="java.sql.*" %>
<%	
						Connection con=null;
						PreparedStatement ps=null;
						ResultSet rs=null;
						String ID = (String) request.getAttribute("regioni");
						String query = "SELECT * FROM PROVINCE WHERE REGIONI_ID='"+ID+"'";
						try {
							con = (Connection) request.getSession().getAttribute("connection");
							ps = con.prepareStatement(query);
							rs = ps.executeQuery();
							//rs.next();
							con.commit();
							while (rs.next()) {

								out.print("<option value='"+rs.getString("REGIONI_ID")+"'>"+rs.getString("REGIONI_NAME")+"</option>");
							}

						} catch (SQLException e) {
							System.out.println("errore: " + e.getMessage());
						}
					%>
</body>
</html>