javaajax将值从jsp传递到servlet

javaajax将值从jsp传递到servlet,java,jquery,ajax,jsp,servlets,Java,Jquery,Ajax,Jsp,Servlets,我试图通过ajax将基本值(如id)从jsp传递到servlet。我尝试了所有方法,但只传递了null。即使console.log(val)也不会将任何内容打印到浏览器控制台 我的理解是:网页有表单值,onsubmit调用js文件。js有ajax,它调用servlet并传递表单的数据。servlet通过request.getParameter(val) 这是我的密码: Main.jsp <%@ page language="java" contentType="text/html; cha

我试图通过ajax将基本值(如id)从jsp传递到servlet。我尝试了所有方法,但只传递了null。即使
console.log(val)
也不会将任何内容打印到浏览器控制台

我的理解是:网页有表单值,onsubmit调用js文件。js有ajax,它调用servlet并传递表单的数据。servlet通过
request.getParameter(val)

这是我的密码:

Main.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript">
<script src="js/main.js" type="text/javascript"></script>
</head>
<body>

<form method="post" action="Main" id="firstform">
    <h1>Enter name:</h1>
    <input type="text" name="id" id="id" />
    <input type="submit" name="submit"/>
</form>

</body>
</html>
package servlets;

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 Main
 */
@WebServlet("/Main")
public class Main extends HttpServlet {
    private static final long serialVersionUID = 1L;

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

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        int ids;
        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();
        String val = request.getParameter("id");
        System.out.print(val);
        if(val != null){
            ids = Integer.parseInt(val);
            out.print(ids); //
        }

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}
Main.java

package servlets;

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 Main
 */
@WebServlet("/Main")
public class Main extends HttpServlet {
    private static final long serialVersionUID = 1L;

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

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        int ids;
        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();
        String val = request.getParameter("id");
        System.out.print(val);
        if(val != null){
            ids = Integer.parseInt(val);
            out.print(ids); //
        }

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}
**问题:
1) 从jsp传递到servlet的值
2) console.log不会在浏览器控制台上打印任何内容


1) 可以工作,但2)仍然不能。**

在main.js中类型是
类型:“post”
并且您已经在get方法中编写了代码
输入:'get'

输入字段中没有name属性。当你在做

String val = request.getParameter("id"); 
然后在servlet中,它将搜索具有
name=“id”
的输入字段,但在您的表单中没有任何内容,因此它将返回
null

为输入字段命名,如

<input type="text" id="id" name="id"/>


另外,正如sanjay所说,您的ajax已经键入post,因此也将其更改为
get
,仅用于控制台。日志(数据)问题可能是$.ajax()函数与响应类型混淆,请尝试以下操作:

  • Ajax

    package servlets;
    
    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 Main
     */
    @WebServlet("/Main")
    public class Main extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Main() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            int ids;
            response.setContentType("text/html;charset=UTF-8");
    
            PrintWriter out = response.getWriter();
            String val = request.getParameter("id");
            System.out.print(val);
            if(val != null){
                ids = Integer.parseInt(val);
                out.print(ids); //
            }
    
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    
    }
    
    $.ajax({
        url: 'Main',
        data: form.serialize(),
        type: 'post',
        dataType:'text/plain',
        success: function(data){ 
            console.log(data);
        }
    });
    
  • Servlet

    package servlets;
    
    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 Main
     */
    @WebServlet("/Main")
    public class Main extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Main() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            int ids;
            response.setContentType("text/html;charset=UTF-8");
    
            PrintWriter out = response.getWriter();
            String val = request.getParameter("id");
            System.out.print(val);
            if(val != null){
                ids = Integer.parseInt(val);
                out.print(ids); //
            }
    
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    
    }
    
    response.setContentType("text/plain;charset=UTF-8");
    

将此更改的名称属性改为trued@www.sblog.in,但仍然不起作用尝试在表单中登录。submit()并查看得到的值。还要检查form.serialize()@fscore你得到答案了吗?我现在改为“post”,但仍然没有结果。它甚至不会像这里提到的那样在java控制台上打印-System.out.print(val);所以类型应该是“get”,而不是post。。。我接受了你的回答,尽管。。console.log仍不能运行work@fscore首先尝试在不使用ajax的情况下提交表单,如果您得到任何值或值,请告诉我not@fscore你是说这行console.log(“gi”);是的,它不打印。事实上,即使我做了console.log(id),它也不会打印出来too@fscore如果没有错误,那么您至少应该在console.log(“gi”);中获取此信息;。至少gi会被打印出来