Tag: servlet

如何检查会话是否存在?

我正在使用创建会话 HttpSession session = request.getSession(); 在创建会话之前,我想检查它是否存在。 我该怎么办?

每个连接的线程数与每个请求的线程数有什么区别?

能否解释一下在各种servlet实现中实现的两种方法: 每个连接的线程 每个请求的线程 以上两种策略中哪一种更好地扩展?为什么?

HttpSession中的同步是否可行?

更新:解决方案后问题。 题: 通常,同步是在JVM内串行化并行请求,例如 private static final Object LOCK = new Object(); public void doSomething() { … synchronized(LOCK) { … } … } 在查看Web应用程序时,“JVM全局”范围上的某些同步可能会成为性能瓶颈,仅在用户的HttpSession范围内进行同步会更有意义。 以下代码是否可能? 我怀疑同步会话对象是一个好主意,但听到你的想法会很有趣。 HttpSession session = getHttpServletRequest().getSession(); synchronized (session) { … } 关键问题: 是否保证会话对象是处理来自同一用户的请求的所有线程的相同实例 ? 总结答案/解决方案: 看来会话对象本身并不总是相同,它依赖于servlet容器(Tomcat,Glassfish,…)的实现,而getSession()方法可能只返回一个包装器实例。 因此,建议使用存储在会话中的自定义变量作为锁定对象。 这是我的代码提案,欢迎提供反馈: 帮手类中的某个地方,例如MyHelper : private static final Object LOCK = new Object(); public static Object getSessionLock(HttpServletRequest […]

如何检查java中的会话已经过期?

有没有其他方法来检查除此之外的会话到期 session.isNew()

关于servlet的线程安全

可能重复: servlet如何工作? 实例化,会话变量和multithreading servlet是线程安全的吗? 例如,如果我打开5个不同的浏览器并向容器中的一个servlet发送请求,它是否仍然是线程安全的,我特意指的是service()方法

登录后重定向回页面

我正在用一系列Servlets做一个简单的论坛,每个Servlets代表一个家,主题,发布,登录和用户列表页面。 在其中一些页面上,当用户未登录时会显示一个链接。 我想要实现的是在登录后触发重定向(在RequestDispatcher上使用forward()),以便浏览器在单击登录链接之前返回用户所在的页面。 为了做到这一点,我看到了两个解决方案。 第一个解决方案是使用一个带有登录按钮和不可见字段的HTML Form ,该字段将包含将要重定向为Parameter页面的信息。 这是可行的,但我想尝试其他的东西。 第二种解决方案是在session中添加一个Attribute ,以某种方式表示第一个“页面”。 这可能包含一个String,但这与第一种方法没有什么不同。 另一个转折是添加对HttpServlet的引用并使用instanceof或静态String变量,该变量可用于以某种方式标识Servlet。 但是,这需要为所有Servlets创建一个共同的祖先类。 也许还有另一个简单的解决方案,你可以看到,这将形成一个良好的妥协? 或者,上述解决方案中的一种可能完全可以接受?

管理Java servlet的数据库连接的最佳方法

在Java servlet中管理数据库连接的最佳方法是什么? 目前,我只是在init()函数中打开一个连接,然后在destroy()关闭它。 但是,我担心“永久”持有数据库连接可能是一件坏事。 这是处理这个问题的正确方法吗? 如果没有,有什么更好的选择? 编辑:进一步澄清:我已经尝试过为每个请求打开/关闭一个新连接,但是通过测试我看到由于创建了太多连接而导致的性能问题。 在多个请求上共享连接有什么价值吗? 对这个应用程序的请求几乎都是“只读”并且相当快(尽管请求的数据相当小)。

在Java中,如何在不生成String对象的情况下从HttpServletRequest标头中提取密码?

处理敏感数据(==密码)的常见Java安全准则建议不要使用String对象来存储数据,而是使用字节或字符数组。 我试图在HttpServlet处理程序中应用此指南。 特别是,我使用类似于基本身份validation的方法,其中凭据在标头中传入(这是一个GET请求,因此没有正文)。 我遇到的问题是,在没有生成String对象的情况下,似乎无法获取头数据,这违反了get-go的准则。 我已经彻底搜索了一个解决方案,但没有找到任何相关的讨论。 有没有人对此问题有任何见解? 注意:这是通过HTTPS进行的,因此这里没有连接安全问题。

缓存servlet提供的图像

我正在从我的servlet提供图像。 响应内容类型是image / jpeg。 我发现从我的servlet请求的图像没有被缓存。 如何通过文件图像请求缓存它们? 我尝试设置Cache-Control:public但无济于事。

servlet中filter和链的用途是什么?

chain.doFilter(req,res); 我们在servlet程序中使用它。 我想知道servlet中doFilter()方法的用法是什么? 还有什么在Java servlet中使用filter和链概念?