相当于 session_start()、session_destroy() 和 $_SESSION['username'] 的 Java [英] Java equivalent of session_start(), session_destroy(), and $_SESSION['username']

查看:60
本文介绍了相当于 session_start()、session_destroy() 和 $_SESSION['username'] 的 Java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In PHP when a user logs into her account, I do the following in order to remember the user as she navigates through the site:

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

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

On any other page that may require sensitive data, I check that $_SESSION['username'] is valid.

当用户退出时,我执行以下操作

When a use logs out, I do the following

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

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

How do I do the same thing in Java? I have a REST API which uses Jersey and EJB. In case the following is important, I am persisting with JPA, Hibernate, Glassfish, and 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 中你只会从 HttpRequestgetSession() 方法,在 php 中一直假设,您的代码由某个服务器(即 apache)运行, 在java中,你会从ServletContainer(即Apache Tomcat)获取.

Java is very different from php, so in java You will get session from only HttpRequest 's getSession() method, In php it is all time assumed, your code is run by some server(ie apache), In java, you will obtain it from ServletContainer(ie Apache Tomcat).

与php不同,您不必在java中启动会话,只要您在servlet容器中并发出请求,对于此客户端servlet容器就负责在没有会话的情况下启动

You do not have to start session in java unlike php, As long as you are in servlet container and giving request, for this client servlet container is responsible to start if there is not session for it

因此对于上述操作:

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

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

这里 requestHttpRequest

你可以看看这个 HttpSession

我强烈建议你看看 java scopes

I strongly recommend you to have a look java scopes

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

There is not this kind of thing in php, I wish there is, BUT there is NO

这里是将请求对象放入球衣动作的方法(方法),即通过注入@Context HttpServletRequest httpRequest

Here is how you get request object into your jersey action(method), ie by injecting @Context HttpServletRequest httpRequest

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

You do not create HttpRequest object by yourself, Instead you will get it from servlet container, Your server creates it from clients request and gives for your.

这篇关于相当于 session_start()、session_destroy() 和 $_SESSION['username'] 的 Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆