Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Stuts2进行会话跟踪_Java_Jsp_Session_Struts2 - Fatal编程技术网

Java 使用Stuts2进行会话跟踪

Java 使用Stuts2进行会话跟踪,java,jsp,session,struts2,Java,Jsp,Session,Struts2,鉴于以下代码: index.jsp web.xml struts.xml 我对这个听诊器一无所知。 SessionInterceptor.java 最后,我的动作课 LoginAction.java 我心中的问题是,我是否必须创建一个地图来保存所有用户会话以跟踪他们?我还希望,当用户意外关闭浏览器时,在特定时间内,用户的浏览器仍然可以访问应用程序,而无需再次登录 在登录操作更改中 String username; 与 并为userID创建新的setter和getter。ahhh对该名称感到抱

鉴于以下代码:

index.jsp

web.xml

struts.xml

我对这个听诊器一无所知。 SessionInterceptor.java

最后,我的动作课

LoginAction.java

我心中的问题是,我是否必须创建一个地图来保存所有用户会话以跟踪他们?我还希望,当用户意外关闭浏览器时,在特定时间内,用户的浏览器仍然可以访问应用程序,而无需再次登录

在登录操作更改中

String username; 


并为userID创建新的setter和getter。

ahhh对该名称感到抱歉,毕竟命名不是问题,我只是复制并粘贴了代码,因此无法显示所有代码:要在关闭浏览器后检索会话,请使用Cookies。如果您觉得有用,请选择它作为答案并投票。即使您的声誉为0,您也可以选择它作为答案,但这是您的选择:-
<display-name>Struts 2</display-name>
<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
  <filter-name>struts2</filter-name>
  <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
</filter>

<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- How long the sessions will stick around for -->
<session-config>
<session-timeout>30</session-timeout> <!-- for checking purposes only. session timeout is not official -->
</session-config>
<struts>
<constant name="struts.devMode" value="false" />
    <package name="order" extends="struts-default">
        <interceptors>
             <interceptor name="session" class="com.eaylportal.session.SessionInterceptor"/>
             <interceptor-stack name="sessionExpireStack">
             <interceptor-ref name="session"/>
             </interceptor-stack>
        </interceptors>

    <action name="login" class="com.eaylportal.action.LoginAction">
     <interceptor-ref name="sessionExpireStack"/>
        <result name="input">/error.jsp</result>
     <!--  <result name="success" type="redirectAction">/secure/home</result>-->
        <result name="session">/session.jsp</result>
        <result name="success">/welcome.jsp</result>
        <result name="error">/error.jsp</result>
        <result name="disabled">/disabled.jsp</result>
    </action>
</package>
</struts>  
public class SessionInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;

@Override
  public String intercept(ActionInvocation invocation) throws Exception {
      Map<String,Object> session = invocation.getInvocationContext().getSession();
      if(session.isEmpty()){
          System.out.println(session.containsKey("logged-in"));
          return "success"; // session is empty/expired
      }
      return invocation.invoke();
  }
}
public class LoginAction extends ActionSupport implements SessionAware{
    private static final long serialVersionUID = 1L;
    private String password;
    private String username;
    Map<String, Object> session;

    public String login(){
        try {
            String sql = "SELECT UAFUSERID, UAFUSERTYPE, UAFACCNTSTATUS from USERACCOUNTFILE WHERE UAFUSERID='"+getUsername()+"' AND UAFPASSWORD='"+getPassword()+"'";

            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ibmeaylportaldb", "root", "passw0rd");
            Statement statement = connection.createStatement(); 
            ResultSet rs = statement.executeQuery(sql);
            System.out.println((rs!=null));

            while(rs.next()){
                if(rs.getString("UAFACCNTSTATUS").equals("DIS")){
                        return "disabled";
                }

                sql = "SELECT * from USERDETAILFILE WHERE UAFUSERID='"+getUsername()+"'";
                statement = connection.createStatement(); 
                ResultSet rsUser = statement.executeQuery(sql);

                session.put("logged-in", new UserBean(rsUser.getString(1),rsUser.getString(2),rsUser.getString(3),
                        rsUser.getString(4),rsUser.getString(5),rsUser.getString(6),rs.getString("UAFUSERTYPE")));

                if(rs.getString("UAFUSERTYPE").equals("TRNEE")){
                    return SUCCESS;
                }
            }

            return ERROR;
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return ERROR;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public void setSession(Map<String, Object> session) {
        this.session = session;

    }
}
String username; 
String userID; //variable should match with tag name attribute