it seems too big for my scale
这取决于上下文和功能要求。这很简单和微不足道。它更像是对你而言是“太多的信息”,并且您实际上需要单独学习单独的概念(HTTP,HTML,CSS,JS,Java,JSP,Servlet,Ajax,JSON等),以便更大的图像(所有这些语言/技术的总和)变得更加明显。你可能会发现this answer有用。
无论如何,下面是如何使用JSP / Servlet而不使用Ajax:
calculator.jsp:
Result: ${sum}
与CalculatorServlet映射在/ calculator的url模式:
@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.
}
使Ajaxical的东西工作也不是那么难。这是在JSP的HTML< head>中包含以下JS的问题。 (请向右滚动查看代码注释,说明每一行的作用):
$(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
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.
});
});
并更改doPost的最后两行如下:
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(String.valueOf(sum));
您甚至可以使其成为条件检查,以便您的表单仍然适用于用户禁用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);
}