У меня есть веб-приложение, созданное с использованием jsp / servlets. Сеанс веб-приложения настроен на тайм-аут после, скажем, 5 минут бездействия пользователя, установленного в web.xml.
Теперь я хочу обновитьнекоторые детали незадолго до истечения времени ожидания этого сеанса относятся к пользователю, у которого истекает время ожидания сеанса.
Допустим, пользователь вошел в систему и время, которое пользователь выбирает, чтобы оставаться неактивным в этой ситуации, мне нужно обновить некоторую информациюдля пользователя, время сеанса которого истекло.
Как мне добиться того же.
package com.student.track;
import java.io.FileInputStream;
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 java.util.Properties;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class sessionInfo implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
}
public void sessionDestroyed(HttpSessionEvent event) {
String query = "insert into SessionInfo values(?)";
try
{
runQuery(query);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void runQuery(String query) throws Exception
{
Connection conn=null;
int result=0;
try
{
conn = getConnection();
PreparedStatement stat=null;
stat = conn.prepareStatement(query);
stat.setString(1,"first");
result = stat.executeUpdate(query);
}
catch(IOException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
conn.close();
}
catch (SQLException e)
{
throw e;
}
}
}
public static Connection getConnection() throws SQLException, IOException, Exception
{
Properties props = new Properties();
FileInputStream in = new FileInputStream("database.properties");
props.load(in);
in.close();
String drivers = props.getProperty("dbcb.jdbcDriver");
try
{
Class.forName(drivers);
}
catch(Exception e)
{
throw e;
}
if (drivers != null)
System.setProperty("jdbc.drivers", drivers);
String url = props.getProperty("dbcb.jdbcURL");
String username = props.getProperty("dbcb.dbUser");
String password = props.getProperty("dbcb.dbPassword");
return DriverManager.getConnection(url, username, password);
}
}
И web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.student.track.InitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>InitServlet</servlet-name>
<url-pattern>/InitServlet</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/orataglib</taglib-uri>
<taglib-location>tlds/orataglib_1_0_2.tld</taglib-location>
</taglib>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<resource-ref>
<description>Sybase Datasource example</description>
<res-ref-name>jdbc/mysybase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<listener>
<description>sessionListener</description>
<listener-class> com.student.track.sessionInfo </listener-class>
</listener>
</web-app>