发送Ajax请求到JEE Servlet

时间:2018-12-11 21:58:16

标签: java ajax jsp servlets

我需要一些帮助:)

从事JEE项目。该项目的目的是从与Google Analytics(分析)相似的连接用户(ip,国家/地区,...)检索数据。因此,我首先创建了一个要连接的JSP,然后连接到该JSP的js脚本将检索数据(通过API visitor.js),并通过AJAX请求发送到servlet。

var dataJSON =
    {
        "ip" : visitor.ip.address,
        "country" : visitor.geo.countryName,
        "browser" : visitor.browser.name,
        "screen" : visitor.device.screen.resolution        
    }


$.ajax(
        {
            type:"post",
            url: "./Visitor",
            contentType: "application/json; charset=utf-8",
            data : JSON.stringify(dataJSON),
            success: function(data)
            {

            }
        })

在此servlet中,我尝试在doPost方法中检索此数据,以便将它们作为参数添加到处理与数据库的连接的方法ajoutDonneeVisiteur(java Bean)中。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

     Data visitorsDatas = new Data();
     String ip = (String) request.getParameter("ip");
     String country = (String) request.getParameter("country");
     String browser = (String) request.getParameter("browser");
     String screen = (String) request.getParameter("screen");


     visitorsDatas.ajoutDonneeVisiteur(ip, country, browser, screen);       
     request.setAttribute("utilisateurs", visitorsDatas.recupererUtilisateurs());

     this.getServletContext().getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);

因此,在我的JavaBean中,我创建了一个添加用户数据的方法:

// Méthode qui ajoute les données dans la base
    public void ajoutDonneeVisiteur(String ip, String country, String browser, String screen)
    {
        loadDatabase();    

        try {
            PreparedStatement preparedStatement = (PreparedStatement) connexion.prepareStatement("INSERT INTO visiteurs(ip, pays, browser, screen) VALUES(?, ?, ?, ?);");
            preparedStatement.setString(1, ip);
            preparedStatement.setString(2, country);
            preparedStatement.setString(3, browser);
            preparedStatement.setString(4, screen);

            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    };

但是它不起作用(如果我在Servlet中创建String ip,国家/地区,浏览器和屏幕,则一切正常,并且已集成到BDD中)。因此,实际上是servlet对请求的处理不起作用。在浏览器中,JSON似乎构建良好

{ip:“ x.x.x.x”,国家/地区:“法国”,浏览器:“ Chrome”,屏幕:“ 1920x1080”}

感谢您的帮助!

0 个答案:

没有答案