Java,我做一个web项目的注销,怎么清除session里的值,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java,我做一个web项目的注销,怎么清除session里的值,相关的知识,希望对你有一定的参考价值。

登录用的是request.getSession().setAttribute("uiUsers",uiUsers); 现在要做一个注销功能,我设置request.getSession().setAttribute("uiUsers",null); 但是刷新页面后session中还是存在值,我要怎么清?谢谢

java web 项目清楚session的方法是:继承SessionAware类来取得session,然后用invalidate()方法清理

  public class ExitAction extends ActionSupport implements SessionAware
  
@Override
  
public String execute() throws Exception 
  
HttpServletRequest request = ServletActionContext.getRequest(); 
HttpSession session1 = request.getSession();  
session1.invalidate();  
return super.execute();

public void setSession(Map arg0) 
 
   
//第二种方法(用ActionContext取session,然后用clear()方法清理)
   public class ExitAction extends ActionSupport   
@Override  
public String execute() throws Exception   
ActionContext ac = ActionContext.getContext(); 
Map session = ac.getSession();  
session.remove("buser");
session.remove("guser"); 
session.remove("fuser");  
return super.execute(); 
  
参考技术A session.invalidate();
是把session内的所有属性 都清除,
session.removeAttribute("uiUsers");
是清除session中的 "uiUsers" 属性,就是清除一个特定的属性
参考技术B 注销是这样做的:
session.invalidate();
参考技术C request.getSession().removeAttribute()?本回答被提问者采纳 参考技术D 做完清除操作转发回页面,应该刷新就不存在值了

注销清除 SharedPreferences

【中文标题】注销清除 SharedPreferences【英文标题】:Logout clear SharedPreferences 【发布时间】:2014-08-01 13:21:59 【问题描述】:

我有一个登录页面,将usernamepassword 保存到SharedPreferences。我有另一个包含注销按钮的Activity 类。单击注销按钮时,我想清除SharedPreferences。问题是我没有从这堂课中得到SharedPreferences。如何获得SharedPreferences

登录页面

public class MainActivity extends Activity 
public SharedPreferences.Editor loginPrefsEditor;
    public  SharedPreferences loginPreferences;
    private Boolean saveLogin;
@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    name = (EditText) findViewById(R.id.et_Username);
        pass = (EditText) findViewById(R.id.et_Password);
        login = (Button) findViewById(R.id.bt_Login);

         loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
         loginPrefsEditor = loginPreferences.edit();

         saveLogin = loginPreferences.getBoolean("saveLogin", false);

         if (saveLogin == true) 
                name.setText(loginPreferences.getString("username", ""));
                pass.setText(loginPreferences.getString("password", ""));   
            

        login.setOnClickListener(new OnClickListener()
        
            @Override
            public void onClick(View v) 
                 name1 = name.getText().toString();
                 pass1 = pass.getText().toString();
               //new Thread (new Task()).start();
                    loginPrefsEditor.putBoolean("saveLogin", true);
                    loginPrefsEditor.putString("username", name1);
                    loginPrefsEditor.putString("password", pass1);
                    loginPrefsEditor.commit();
                 new myAsyncTask().execute();
            
        );

AnotherActivity 中的注销按钮

 logout.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View view) 
                // Launching News Feed Screen

                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);
            
        );

【问题讨论】:

如果您想在注销时清除首选项,为什么在登录时存储它们? 发布你的代码,我会在 5 分钟内给你解决方案.. 我建议您在使用共享首选项保存或检索代码时检查您的代码,因为在所有活动中都可以访问共享首选项。 SharedPreferences 首选项 =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE); SharedPreferences.Editor 编辑器 = preferences.edit();编辑器.clear(); editor.commit();将此代码粘贴到注销 onclicklistener @GB_Bhayani 感谢帮助它正在工作 【参考方案1】:
SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
             SharedPreferences.Editor editor = preferences.edit();
             editor.clear();
             editor.apply();
             finish();

【讨论】:

【参考方案2】:

在 Kotlin 中,您可以使用此代码清除 sharedpreference 数据

private val sharedPref = "sharedpreference"

val sharedPreferences: SharedPreferences = context.getSharedPreferences(sharedPref, Context.MODE_PRIVATE)
            val editor = sharedPreferences.edit()
            editor.clear()
            editor.apply()

【讨论】:

【参考方案3】:

试试这个!

logout.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View view) 
            // Launching News Feed Screen

             SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
             SharedPreferences.Editor editor = preferences.edit();
             editor.clear();
             editor.apply();
             finish();
 );

【讨论】:

【参考方案4】:
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear();
editor.commit();

【讨论】:

【参考方案5】:

这很简单。就像你把数据保存在SharedPrefernce

SharedPreferences sp = getSharedPreferences("MYKEY",0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("username" , username);
editor.putString("password" , password);

现在您可以像在应用的任何类中一样检索,

SharedPreferences sp = getSharedPreferences("MYKEY",0);
String uname = sp.getString("username");
String pwd = sp.getString("password");

为了清除您的用户名和密码

editor.clear();
editor.commit();

editor.remove("username");
editor.remove("password");
editor.commit();

【讨论】:

【参考方案6】:

我认为您在理解 android 中的共享首选项时遇到了麻烦。

根据官方文档

要为您的应用程序获取 SharedPreferences 对象,请使用以下两种方法之一 方法:

getSharedPreferences() - 如果您需要多个首选项,请使用它 由名称标识的文件,您使用第一个参数指定。

getPreferences() - 如果您只需要一个首选项文件 你的活动。因为这将是您唯一的首选项文件 活动,您不提供名称。

你应该有一个上下文来使用上述两种方法。

共享首选项也存储为键值对,因此清除应该意味着您将值设置为一些空字符串。

更多细节和更好的解释你可以在这里阅读http://developer.android.com/guide/topics/data/data-storage.html#pref 和http://www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html

希望这会有所帮助。

干杯!

【讨论】:

【参考方案7】:

为什么不写一个 SharedPreference 实用程序类。这可以从这两个活动中访问。

【讨论】:

我没有投反对票,但很可能是因为您的回答根本没有描述性。提供有关您的“SharedPreference 实用程序类”是什么以及它如何工作的更多详细信息。也许给一些代码。

以上是关于Java,我做一个web项目的注销,怎么清除session里的值,的主要内容,如果未能解决你的问题,请参考以下文章

java eclipse tomcat清除已经部署的项目

如何在注销/注销时清除 ReactJs 中的所有商店?

使用 SAML 单次注销 (SLO) 调用注销 URL 后如何清除 Android 网络视图 cookie?

那些年我做的开源项目之web篇

Laravel 5.1 auth 刷新后注销

注销清除 SharedPreferences