Keeping user preferences for that page after periodic page refresh for many browsers

I like to keep the user preferences for that JSP web page (e.g. the number of rows per table) after periodic page refresh.
The solution need to work for multiple browsers on the same or different PCs.
Please note that the user preferences (e.g. the number of rows per table) for different tabs (pages) on the same browser may be different.
URL Parameter Passing is the only approach I can think of.
e.g. http://127.0.0.1:8080/datadisplay?page=1&rowsperpage=20
Are there other approaches?

Store the info in a cookie OR store it in a session.

Is there any sample code or tutorial?
The following is my attempt.
It is still work in progress and contains bugs.
I also like to pass user input between two Controllers and display user input after submit

The displayHw.jsp and displayHwController handles the user input.
It reads from the database and display the data.
It posts the write input to displayHwMgrController.
The displayHwMgrController writes to the database and redirects back to the displayHwController.
How to pass user input between two Controllers?
The user input disappear from the jsp page after the Apply button is clicked to submit the user input.
How to display the recently user input on the jsp page?
I am new to Spring 2.5.x and Prototype javascript library.
Please help.
Thanks.

displayHw.jsp

<script type="text/javascript">
  // wrie all user input to db
  function writeDb() {
    var elem = document.getElementsByName("hwradio");
    var hwgroup = 'all';
    var index = 0;
    for (var i=0; i < document.hwform.hwradio.length; i++) {
       if (elem[i].checked) {
         hwgroup = elem[i].value;
         index = i;
         break;
       }
    }

    var chkelem = document.getElementById("Enabled");
    var Enabled = chkelem.checked;
    var rowsPerPage = document.getElementById("rowsPerPage");
    // post by the Prototype javascript library
    new Ajax.Request("displayHwMgr", {
        method: "post",
        parameters: {
            hwgroup: hwgroup,
            Enabled: Enabled,
            rowsPerPage: rowsPerPage
        },
        onSuccess: function(request){ },
        onFailure: function(request){ }
	}
     );
   }

   function setGroup() {
      writeDb();
   }
</script>  

<form name="hwform" action="displayHwMgr" method="post">
<fieldset><legend>Choose hw type</legend>
   <input type="radio" name="hwradio" value="all" onClick="setGroup()"> All
   <input type="radio" name="hwradio" value="type1" onClick="setGroup()"> Type1
   <input type="radio" name="hwradio" value="type2" onClick="setGroup()"> Type2
</fieldset>  
</form>

<-- other forms -->
<-- ... -->

<form name="mainform" id="mainform" action="displayHwMgr" method="post">
  <br><input type="checkbox" name="Enabled" id="Enabled" onClick="writeDb()">Enabled
  <br>Rows Per Page<input type="text" class="required validate-digits" name="rowsPerPage" id="rowsPerPage"/>
  <input type="submit" value="Apply" onClick="writeDb()"><br>
</form>

<c:forEach items="${hwinfos}" var="hwinfo">
  <!-- display data -->
</c:forEach>

displayHwMgrController.java

public class displayHwMgrController extends ParameterizableViewController {
	@Override
	public ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

        // get data from displayHw.jsp
	String rowsPerPageStr = request.getParameter("rowsPerPage");
	if (rowsPerPageStr != null && rowsPerPageStr != "") {
        	rowsPerPage = Integer.parseInt(rowsPerPageStr);
	}

        // ...

        // write to db
        // ...

        // pass data to displayHwController
	HashMap<String, Object> model = new HashMap<String, Object>();
	ModelAndView mav;
	String str;

       	str = getViewName() + "&rowsPerPage=" + rowsPerPage;
        mav = new ModelAndView(str, "model", model);
   	model.put("rowsPerPage", rowsPerPage);
        mav.addObject("rowsPerPage", rowsPerPage);
        return mav;
}

displayHwController.java

public class displayHwController extends ParameterizableViewController {
	@Override
	public ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

        // get data from displayHwMgrController.  How to do that?
        int rowsPerPage = 20;
	String rowsPerPageStr = request.getParameter("rowsPerPage");
	if (rowsPerPageStr != null && rowsPerPageStr != "") {
        	rowsPerPage = Integer.parseInt(rowsPerPageStr);
	}

        // read from db
        List<ArrayList<String>> hwinfoInfo = new ArrayList<ArrayList<String>>();
        hwinfoInfo = HwService.getInfo(pageNumber, rowsPerPage, locale);

        // create ModelAndView
	ModelAndView mav;
	String str;

       	str = getViewName() + "&rowsPerPage=" + rowsPerPage;
        mav.addObject("rowsPerPage", rowsPerPage);
        mav.addObject("hwinfos", hwinfoInfo);
        return mav;
}