我需要一些帮助:)
从事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”}
感谢您的帮助!