Ho risolto poi! Ho ascoltato il consiglio del button, grazie! Ma quello che mi creava veramente problemi era più banalmente il nome con cui richiamavo il form nella funzione javascript: (#form) che era sbagliato!

Ora avrei un altra domanda se era possibile: mi piacerebbe creare un oggetto json a partire sempre dai campi di questo form, ho ovviamente fatto qualcosa che posto
codice:
<%@page import=" org.json.*"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE>
<html>
<head>


<!--/Importazione jQuery-->
<script type="text/javascript" src="js/jquery-2.2.2.js"></script>


<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">


<!--/Importazione CSS-->
<link rel="stylesheet" href="Style.css" type= "text/css">


<title>Form d'inserimento username e password</title>
</head>
<body>
<div id="container">
<div id="header"><h2>Form Inserimento Username / Password </h2></div>


<div id="form">
<form id="form_ajax" method="post" action="UserController">


<div id="header">
    <label for="username">Inserisci il tuo username: </label>
    <input id="username" type="text"  name="username">
    
    <p><label for="password">Inserisci la tua password: </label>
    <input id="password" type="password"  name="password">
<div id="header">
<h3>Accedi come</h3>
<select id="roletype" name="roletype">
<option value="0">Utente</option>
<option value="1">Amministratore</option>
</select></div>
<input id="submit" type="submit" value="Login">
</div>
</form>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
    $('#submit').click(function(){
    	$('#form_ajax').append('<img src="img/load.gif" alt="loading" id="loading" />');
    	var username= $('#username').val();
    	var password= $('#password').val();
    	var roletype= $('#roletype').val();
    	var jsonObj = {
    		    "username": username,
    		    "password": password,
    		    "roletype": roletype,
    	};
    	var jsonString = JSON.stringify(jsonObj);
    	$.ajax({
    		url:  'UserController',
    		type: 'POST',
    		dataType:'JSON',
    		data: jsonString,     
    		contentType: 'application/json',
            mimeType: 'application/json',
    		success: function (risposta){
    			$('#risposta').remove();
    			$('#form').append('<p id="risposta">'+ risposta +'</p>');
    			$('#loading').fadeOut(800,function(){
    				$(this).remove();
    			})
    		}
    	});
    	return false;
    });
});
</script>
</body>
</html>
Quando cerco di recuperare il jason lato servlet con:

String oggetto = (String)request.getParameter("jsonString");

recupero un bel null purtroppo! Visto che in logica "query parameter" il tutto funzionava sto evidentemente sbagliando a utilizzare il json. Nello specifico cosa sbaglio?
Tra l'altro ho anche un "java.lang.NumberFormatException: null", immagino che si riferisce al roletype(int). Perchè?
Chiedo lumi please! Grazie come sempre!