parece demasiado grande para mi escala
Eso realmente depende del contexto y los requisitos funcionales. Aunque es bastante simple y trivial. Más parece que es "demasiada información" para usted y que realmente necesita aprender los conceptos por separado (HTTP, HTML, CSS, JS, Java, JSP, Servlet, Ajax, JSON, etc.) individualmente para que el la imagen más grande (la suma de todos esos lenguajes/técnicas) se vuelve más obvia. Puede encontrar this answer útil entonces.
De todos modos, aquí es cómo usted podría hacerlo con sólo JSP/servlet sin Ajax:
calculator.jsp
:
<form id="calculator" action="calculator" method="post">
<p>
<input name="left">
<input name="right">
<input type="submit" value="add">
</p>
<p>Result: <span id="result">${sum}</span></p>
</form>
con CalculatorServlet
que se mapea en una url-pattern
de /calculator
:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer left = Integer.valueOf(request.getParameter("left"));
Integer right = Integer.valueOf(request.getParameter("right"));
Integer sum = left + right;
request.setAttribute("sum", sum); // It'll be available as ${sum}.
request.getRequestDispatcher("calculator.jsp").forward(request, response); // Redisplay JSP.
}
Making Ajaxica Las cosas para trabajar tampoco son tan difíciles. Es una cuestión de incluir los siguientes JS dentro de HTML de la página JSP <head>
(por favor, desplácese hacia la derecha para ver los comentarios de código que explica lo que hace cada línea):
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() { // When the HTML DOM is ready loading, then execute the following function...
$('#calculator').submit(function() { // Locate HTML element with ID "calculator" and execute the following function on its "submit" event...
$form = $(this); // Wrap the form in a jQuery object first (so that special functions are available).
$.post($form.attr('action'), $form.serialize(), function(responseText) { // Execute Ajax POST request on URL as set in <form action> with all input values of the form as parameters and execute the following function with Ajax response text...
$('#result').text(responseText); // Locate HTML element with ID "result" and set its text content with responseText.
});
return false; // Prevent execution of the synchronous (default) submit action of the form.
});
});
</script>
y el cambio de las dos últimas líneas de doPost
de la siguiente manera:
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(String.valueOf(sum));
incluso usted puede hacer que una comprobación condicional para que su forma todavía trabaja para el caso de que el usuario tiene desactivado JS:
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
// Ajax request.
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(String.valueOf(sum));
} else {
// Normal request.
request.setAttribute("sum", sum);
request.getRequestDispatcher("calculator.jsp").forward(request, response);
}
Se pueden crear sin ningún tipo de servlets. Solo con html + javascript. Otra forma: hacer cálculos en el servidor. Aquí necesita Ajax para evitar la recarga de la página. ¿De la forma que prefieres y dónde tienes problemas? –