【问题标题】:Handling Ajax Request in JSP Servlet在 JSP Servlet 中处理 Ajax 请求
【发布时间】:2017-05-28 02:06:41
【问题描述】:

我正在使用 JSP 和 Ajax 的示例来抛出名称和总和,但我没有看到显示结果的窗口。这些是我的文件

我找不到错误,或者他们认为在哪里,或者我可以修复它?

index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%>

    <!DOCTYPE html>
    <html>
<head>
<title>Demo Ajax</title>

<link href="/resources/css/miPrimerCSS.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="resources/js/jquery.js"></script>
<script type="text/javascript">



  $(document).ready(function(){
     $('#unHola').click(function(){
         var nombreCompleto = $('#nombreCompleto').val();
         $.ajax({
             type:'POST',
             data: {
                 nombreCompleto : nombreCompleto,
                 action: 'demo1'
             },
             url: 'AjaxController',
             success: function(result){
                 $('#resultado1').html(result);
             }

         });
     });

     $('#unaSuma').click(function(){
         var numero1 = $('#numero1').val();
         var numero2 = $('#numero2').val();
         $.ajax({
             type:'POST',
             data: {
                 numero1 : numero1,
                 numero2 : numero2,  
                 action: 'demo2'
             },
             url:'AjaxController',
             success : function(result){
                 $('#resultado2').html(result);
             }

         });
     }); 



  }); // $(document).ready(function()

</script>
</head>
<!-- <span id="titulo">Un Saludo</span>
<p style="font-size: 20px">Un Hola<p>

-->
 <body>

     <fieldset>
        <h1>Un Hola</h1>
           <form>
              Nombre <input type="text" id="nombreCompleto"><br>
              <input type="button" value="Hola" id="unHola"><br> 
              <span id="resultado1"></span>
           </form>
     </fieldset>


     <fieldset>
          <h2>Una Suma</h2>
             <form>
                Numero 1 <input type="text" id="numero1"><br>
                Numero 2 <input type="text" id="numero2"><br> 
                Resultado <span id=resultado2></span><br>
                <input type="button" value="Suma" id="unaSuma">


             </form>
    </fieldset>



  </body>

</html>

AjaxController.java

package controladores;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AjaxController
 */
@WebServlet("/AjaxController")
public class AjaxController extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxController() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }



    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/plain ");

        PrintWriter out =  response.getWriter();
        String action = request.getParameter("action");

        if(action.equals("demo1")){
            String nombreCompleto = request.getParameter("nombreCompleto");
            out.println("Hola " + nombreCompleto);
        }
        else if (action.equals("demo2")){
            int a = Integer.parseInt(request.getParameter("numero1"));
            int b = Integer.parseInt(request.getParameter("numero2"));
            out.println(a + b);
        }



    }

}

例子应该是这样的

【问题讨论】:

    标签: java ajax jsp servlets


    【解决方案1】:

    我在我的上下文中重新运行您的代码,并在以下修复后按预期运行。试试看:

    • 您的 JQuery 可能未正确加载。尝试确保此导入 URL 有效并运行 &lt;script type="text/javascript" src="resources/js/jquery.js"&gt;&lt;/script&gt;
    • 考虑使用一些 jstl taglib 支持来加载上下文相关资源,例如 &lt;script src="&lt;c:url value="/resources/js/jquery.min.js" /&gt;"&gt;&lt;/script&gt;

    • &lt;script&gt;&lt;/script&gt; 放在正文的末尾。实际上,在 body 的末尾加载 JS 文件是一个很好的做法,因此它不会阻塞页面加载。

    更多提示:

    • 除非您真的计划任何自定义的事情,否则您无需在 Servlet 中声明构造函数

    • 如果您不使用doGet(),则不要将其保留在 Servlet 中。

    【讨论】:

    • 我通过直接在 URL 上添加库而不是从“Web-Content”中找到了解决方案:“
    • 是的,这是附加静态资源的另一种方式。它也可以工作且无忧无虑。
    猜你喜欢
    • 2011-12-26
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2015-10-13
    • 2012-12-09
    相关资源
    最近更新 更多