求详解

解决方案 »

  1.   

    当用户登陆成功的时候将用户名放在session中,session.setAttribute("username",username);在其他地方拿出来判断一下就行了,
    String username = (String)session.getAttribute("username");
    if(username != null){
    //登陆过
    }
    else{
    //没登录过
    }
      

  2.   

    登陆的action里面在验证登陆通过之后的地方增加
    ServletActionContext.getRequest().getSession().setAttribute("state", true);
    增加一个延迟登陆的filter作用范围是你所有需要登陆才能操作的页面 public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest) request;
    HttpServletResponse res=(HttpServletResponse) response; Boolean state = (Boolean) req.getSession().getAttribute("state");

    if(state){
    chain.doFilter(request, response);
    }else{
    res.sendRedirect(url);
    }
    }
      

  3.   

    登陆验证的Action哪里如果验证失败,同样的
    ServletActionContext.getRequest().getSession().setAttribute("state", false);
      

  4.   

    Struts2好不好??
    用拦截器,<interceptors>自己配置拦截器栈,用户登录的信息保存在session里面
    重写拦截方法的时候用ActionInvocation的对象得到session,检验即可
      

  5.   

    你写个baseAction嘛,在须要判断登录的Action中继承下就不用每个地方写那代码了.
      

  6.   

    有多大区别?拦截器的本质不是filter?
      

  7.   

    那你在Struts2里面配置filter好了
    我没意见,算我废话
      

  8.   


    public String intercept(ActionInvocation invocation) throws Exception {
    ActionContext context = invocation.getInvocationContext();
    Action action = (Action) invocation.getAction();
    Map<String, Object> session = context.getSession();
    if (session.get(SESSION_ADMIN_KEY) != null) {
    return invocation.invoke();
    }
    return Action.LOGIN;
    }
    以上是我在项目里用到的拦截器,如果session里的指定值不为空,继续调用下一个拦截器,否则返回登录页
      

  9.   

    定义过滤器和拦截器栈都是没有问题的。。baseAction都行。。
    三种办法经常用的。。要是省事一些直接用过滤器
      

  10.   


    -.-其实是哪天我正好在写filter,直接复制过来稍微修改了下
      

  11.   

    登录成功后存在session中,写个过滤器,从session中取,如果session为null就是未登录,否则就是已登录
      

  12.   

    package cn.itcast.surveypark.web.struts.interceptor;import cn.itcast.surveypark.web.struts.actions.LoginAction;
    import cn.itcast.surveypark.web.struts.actions.RegAction;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.Interceptor;public class LoginInterceptor implements Interceptor{ private static final long serialVersionUID = -8045011928759321245L;
    public void destroy() {
    } public void init() {
    }
    public String intercept(ActionInvocation invocation) throws Exception {
    Object obj = ActionContext.getContext().getSession().get("user");
    if(obj != null) {
    return invocation.invoke();
    } else {
    Object action = invocation.getAction();
    if(action instanceof LoginAction || action instanceof RegAction) {
    return invocation.invoke();

    }
    return "login";
    }}
      

  13.   

    package cn.itcast.surveypark.web.struts.interceptor;import cn.itcast.surveypark.web.struts.actions.LoginAction;
    import cn.itcast.surveypark.web.struts.actions.RegAction;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.Interceptor;public class LoginInterceptor implements Interceptor{ private static final long serialVersionUID = -8045011928759321245L;
    public void destroy() {
    } public void init() {
    }
    public String intercept(ActionInvocation invocation) throws Exception {
    Object obj = ActionContext.getContext().getSession().get("user");
    if(obj != null) {
    return invocation.invoke();
    } else {
    Object action = invocation.getAction();
    if(action instanceof LoginAction || action instanceof RegAction) {
    return invocation.invoke();

    }
    return "login";

    }}
      

  14.   

    定义过滤器和拦截器栈都是没有问题的。。baseAction都行。。
    三种办法经常用的。。要是省事一些直接用过滤器
      

  15.   

    定义过滤器和拦截器栈都是没有问题的。。baseAction都行。。
    三种办法经常用的。。要是省事一些直接用过滤器
      

  16.   

    Struts2好!
    用拦截器,<interceptors>自己配置拦截器栈,用户登录的信息保存在session里面
    重写拦截方法的时候用ActionInvocation的对象得到session,检验即可
    package com.jinmy.action;import java.util.Map;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class SecurityInterceptor extends AbstractInterceptor{ @Override
    public String intercept(ActionInvocation arg0) throws Exception {
    ActionContext ac = arg0.getInvocationContext();
    Map<String, Object> session = ac.getSession();
    if(session.get("loginEmp") != null){
    arg0.invoke();
    }
    return "login";
    }}
      

  17.   

    上面说了,用拦截器比较方便。但是用session也可以,不过不知道为什么都不喜欢实现SessionAware接口,要用session.setAttribute()方法,但是struts2的一个目的就是要与servlet解耦合,可是用后者却增加了耦合
      

  18.   

    1.你可以拿出所有的session,然后遍历 知道用户的key if判断一下 就出来了.2.你也可以直接看你的那个用户的session是否为空.要是不为空 那么这个用户就是登录状态.
      

  19.   

    主要的是我在自己的电脑浏览器登陆的话那样session判断是正确的,如果到另外一台电脑访问就没那效果了,用户登录了,另一台电脑上还是可以登陆
      

  20.   

    最好使用过滤器吧,如果一个用户没有登录直接访问该系统的文件名。使用struts2拦截器是达不到这种效果的。