相当于 session_start()、session_destroy() 和 $_SESSION ['username' 的 Java ]

标签 java session jersey

在 PHP 中,当用户登录她的帐户时,我会执行以下操作以便在她浏览网站时记住该用户:

session_start();
...
$_SESSION['username'] = $username;

在可能需要敏感数据的任何其他页面上,我检查 $_SESSION['username'] 是否有效。

当用户注销时,我执行以下操作

unset($_SESSION['username']
session_destroy();

如何在 Java 中做同样的事情?我有一个使用 JerseyEJB 的 REST API。如果以下内容很重要,我会坚持使用 JPA、Hibernate、Glassfish 和 mysql。

验证更新:

这是正确的吗?

@Path("login")
public class UserLoginResource {

  @EJB
  private LoginDao  loginDao;

  @Context
  HttpServletRequest request;

  @POST
  public Response login(JAXBElement<Login> jaxbLogin){
    Login login = jaxbLogin.getValue();
    loginDao.authenticateUserLogin(login);
    HttpSession session = request.getSession();
    session.setAttribute("username", login.getUsername());
    return Response.ok().build();
  }
}

最佳答案

Java 与 php 非常不同,因此在 java 中您只能从 HttpRequest 获取 session 的 getSession()方法,在php中它总是假设,你的代码是由一些服务器(即apache)运行的,在java中,你将从ServletContainer(即Apache Tomcat)中获取它。

与 php 不同,您不必在 java 中启动 session ,只要您在 servlet 容器中并发出请求,如果没有 session ,此客户端 servlet 容器负责启动

因此对于上述操作:

    reqest.getSession().setAttribute("udername","Elbek");
    //later 
    reqest.getSession().removeAttribute("udername");

   //destroy it
   reqest.getSession().invalidate();

这里的requestHttpRequest的对象类

你可以看看这个HttpSession

我强烈推荐你看看java scopes

php 中没有这种东西,我希望有,但是没有

Here是你如何将请求对象放入你的 Jersey Action (方法),即通过注入(inject) @Context HttpServletRequest httpRequest

编辑: 您不会自己创建 HttpRequest 对象,而是从 servlet 容器中获取它,您的服务器根据客户端请求创建它并为您提供。

关于相当于 session_start()、session_destroy() 和 $_SESSION ['username' 的 Java ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826643/

相关文章:

java - 无法使用 "SecretBox"(C#) 打开 TweetNacl (Java) 生成的 "Libsodium-net"

java - 如何为 Mule 和 Jersey 使用 Grizzly 嵌入式服务器

java - JAX-RS 与 Jersey : Testing REST service deployed in weblogic/JBoss

java - 网络设计【使用Netty】

c# - Unity 的 Android 插件给出错误

ruby - 使用设计 gem “登录为”

session - spring 安全 session 超时

java - Jersey 不遵循 302 重定向

java - 登录并从网页 Jsoup 提取数据

php - 从一个子域重定向到另一个子域时如何保留 session 信息?