Java j2ee更新表值甚至不幸地关闭了浏览器或tap
我想在关闭浏览器/点击时更新数据库表值。这是我不满意的代码 Home.jsp:Java j2ee更新表值甚至不幸地关闭了浏览器或tap,java,jquery,jsp,servlets,browser,Java,Jquery,Jsp,Servlets,Browser,我想在关闭浏览器/点击时更新数据库表值。这是我不满意的代码 Home.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery1.11.0.min.js"></script>
</head>
<body>
<h1>Login success!...</h1>
<script type="text/javascript">
$( window ).unload(function() {
$.post( "BrowserCloseServlet", function( ) {
});
});
</script>
</body>
</html>
当我运行代码并关闭浏览或点击时,不会发生任何事情
有人告诉我如何在关闭浏览器/点击时调用BrowserCloseServlet.java并进行更新
我哪里错了?这一问题的根本原因是$window.unload。你应该了解这个问题。此链接将告诉您何时触发卸载事件。一件事是在.jsp中调用$.post&在servlet端doPost为空。为什么会这样?你想做什么?我认为您的业务逻辑应该包含在BrowserCloseServlet中的doPost方法中。让我们试试这个。那么情况如何?你在使用Servlet3吗?你有什么例外吗?如果是,请将其添加到问题中。@OO7我更改了它,但这不是确切的问题。问题是BrowserCloseServlet在关闭窗口时未调用。那么我应该在这里使用什么正确的事件呢?请参阅ur@WebServlet name is BrowserCloseServlet&您已经在$.post中指定了BroserCloseServlet。w不见了。
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.corba.se.spi.orb.ParserImplBase;
/**
* Servlet implementation class BrowserCloseServlet
*/
@WebServlet("/BrowserCloseServlet")
public class BrowserCloseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public BrowserCloseServlet() {
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
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String getId = request.getParameter("getid");
Connection con = null;
PreparedStatement pst = null;
PreparedStatement pst2 = null;
ResultSet rst = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con =DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5","root","");
String query ="select NoOfCount from tbl_BroserCloseTable ";
String query2 ="update tbl_BroserCloseTable set NoOfCount= ? where Sno= ?";
//Statement st = con.createStatement();
//st.executeUpdate("");
pst = con.prepareStatement(query);
rst = pst.executeQuery(query);
if(rst.next())
{
int count = rst.getInt(1);
System.out.println("Actuall count is :"+count);
count -= 1;
pst2 = con.prepareStatement(query2);
pst2.setInt(1, count);
pst2.setInt(2, 1);
pst2.executeUpdate();
System.out.println("Updated successfully...");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
con.close();
rst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}