- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临着similar problem并了解到我的监听器类将在读取 web.xml 时实例化。我在监听器类中有几个函数供主 servlet 的 doPost 使用(它与数据库(mysql)交互以读取/写入有关用户的数据。)以及 HttpSessionListener 的方法。那么是什么阻止了容器加载监听器类。我收到 404 错误。
片段:
public class EntryServlet extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PlayersList playa = new PlayersList(); //listener class
if(!playa.isExisting(params[3])){
if(params[1].equals("Register")){
playa.addPlayer(params);
}
}
else
out.println("Username already exists");
if(playa.isExisting(params[argUName],params[argUPwd])){
HttpSession session = request.getSession(true);
session.setMaxInactiveInterval(600);
HashMap playersMap = playa.getActivePlayers();
//code . .
}
else
out.println("Couldn't locate player Name!");
out.println(playa.getIn());
}
监听器类:
public class PlayersList implements HttpSessionListener{
private Connection cn;
private Statement st;
PlayersList(){
try{
Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection("jdbc:mysql://localhost/homeDbse\'","root","");
st = cn.createStatement();
}
catch(ClassNotFoundException ce){}
catch(SQLException se){}
catch(Exception e){}
}
public boolean isExisting(String player){
//interaction with dbse
}
public void addPlayer(String[] args){
//interaction with dbse
}
public void sessionCreated(HttpSessionEvent se){
//session managing
}
public void sessionDestroyed(HttpSessionEvent se){
//session managing
}
最佳答案
这种做法是完全错误的。你应该从另一边做。创建一个实现 HttpSessionBindingListener
的 Player
对象并使用它来代替。
public class Player implements HttpSessionBindingListener {
@Override
public void valueBound(HttpSessionBindingEvent event) {
// Add player to list.
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
// Remove player from list.
}
// ...
}
当您执行此操作时,valueBound()
将被触发
Player player = new Player(name);
request.getSession().setAttribute("player", player);
当 session 过期或删除属性时,valueUnbound()
将被触发。
与具体问题无关,您的代码中存在严重的 JDBC 问题。每当数据库由于打开时间过长而导致连接超时时,该应用程序就会崩溃。您应该在尽可能短的范围内打开和关闭连接、语句和结果集。即,在执行 SQL 查询的同一 try
block 的 finally
block 中关闭它们。
关于java - 实现 HttpSessionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5259764/
我面临着similar problem并了解到我的监听器类将在读取 web.xml 时实例化。我在监听器类中有几个函数供主 servlet 的 doPost 使用(它与数据库(mysql)交互以读取/
关于在我的 tomcat web 小程序中使用这些 session 监听器,我有一个非常基本的问题。我对它们的运作方式缺乏基本的了解。他们一直在运作吗?他们能否以某种方式检测用户何时注销,而无需明确单
我最近开始使用 JBossTM 以便在多个数据库连接上使用 JTA,这非常成功。如果我尝试从任何 Controller 执行事务,它可以正常工作。 但是,我最近开始尝试从 HttpSessionLis
我已经实现了 HttpSessionListiner,但它不起作用。用调试器检查它——进入 servlet 后创建新 session ,登录后 JSESSION_ID 发生变化,但 session.g
问题:此注入(inject)的依赖项将始终从 SimpleController 返回 0 为什么在尝试对 HttpSessionListener 实现进行依赖注入(inject)时此 bean 的上下
我正在尝试在 Java servlet 中跟踪有效的用户 ID,我可以通过这种方式实现 HttpSessionListener 吗? public class my_Servlet extends H
更新。我使用了其他的方法,即拥有一个私有(private)静态 int 总计。我在 sessionCreated() 上增加总数,并在 sessionDestroyed() 上减少 sessionCo
Tomcat 没有用于访问 Activity session 集合的 API,因此我想为我的 WebApp 设计一个 HttpSessionListener,但我对实现有一些顾虑。 如果我的监听器有一
我正在编写一个允许人们协作的 Web 应用程序。我希望我的一些服务仅限于协作(涉及几个人)而不是任何单独的 http session 。我创建了一个自定义的 Scope 来存储 bean。为了管理 b
我想在 session 即将到期时提醒用户。我不想使用 Ajax 或 JavaScript。那么如何在 HttpSessionListener 实现类的 sessionDestroyed() 方法中获
我有一个非常简单的 Servlet 和一个非常简单的 HttpSessionListener: @WebServlet("/HelloWorld") public class HelloWorld e
我一直在 tomcat 中尝试一些操作,突然我的所有 JSP 和 Servlet 都出现了状态代码 404。我收到了这个错误: 11-Jun-2018 17:40:57.528 SEVERE [mai
我在我的项目中创建了一个HttpSessionListener。在此监听器中,我在 session 中设置了如下内容: public void sessionCreated(HttpSessionE
问题:此注入(inject)的依赖项将始终从 SimpleController 返回 0 为什么在尝试将依赖项注入(inject)到 HttpSessionListener 实现中时,该 Bean 的
我已经在我的 web.xml 中注册了一个 HttpSessionListener 并且它工作正常,但是我需要从其他区域(例如 Servlet)访问对象实例,并且不希望使用旧的 public stat
我正在使用 HttpSessionListener 的 sessionDestroyed() 方法来获取当前 session 对象,但这是不可能的,因为在执行 sessionDestroyed() 之
我想从 HttpSessionListener.sessionCreated() 中获取用户名。当我说用户名时,我特指 HttpServletRequest.getRemoteUser() 返回的名称
我正在尝试使用带有代理 servlet 的嵌入式 jetty 实现 HttpSessionListener 接口(interface),我已经注册了 SessionListener,但它根本没有被调用
我有这样一种情况,我需要在创建 session 时创建一个 cookie,而当 session 被删除时,我必须删除该 cookie。当用户手动结束 session 时,我可以在注销 servlet
我正在尝试部署我没有编写的 war ,但我在日志中收到此错误: java.lang.NoClassDefFoundError: HttpSessionListener 我知道 HttpSessionL
我是一名优秀的程序员,十分优秀!