本帖最后由 Javainging 于 2012-12-29 12:10:13 编辑

解决方案 »

  1.   

    在web.xml里面配置一个自定义的Filter,在Filter中检查用户登录信息,没有就跳到登录页面
      

  2.   


    额,谢谢,我直接配置的拦截器
    我可以新建一个package,这个package放的都是一些拦截器。
     然后其他package继承这个package嘛,这应该就不需要每个package都写拦截器了吧??
      

  3.   

    用拦截器基本就是每个action都要配,提示很简单,比如没有登录让他跳到一个jsp,那个jsp里写个脚本提示后在跳到login.jsp
      

  4.   

    我可以新建一个package,这个package放的都是一些拦截器。
     然后其他package继承这个package嘛,这应该就不需要每个package都写拦截器了吧??
      

  5.   

    写一个就够了,让默认的拦截器栈引用它,所有的action都引用这个拦截器栈,我也记不清了,这些都是前任写好的
      

  6.   


    额,我写了一个package 里面设置了一个 <default-interceptor-ref name="myLogin"></default-interceptor-ref>然后所有的package都继承了这个package,这样的话,他就所有的方法都拦截了,我想要拦截部分方法怎么办呢
      

  7.   

    估计是前后台吧?只能让后台的继承package吧,前台不用了吧,只要你能明白原理,功能实现了,没有什么方法是不可以的。
      

  8.   


    恩,原理已经知道了,现在正在调试,呵呵,我的package是根据业务来的,
    比如,用户 就是一个package 前台+后台的都是,呵呵。没设计好。
      

  9.   


    额,我是有部分页面、action不需要登陆就可以访问的呢,
      

  10.   

    有拦截器 还要filter 干啥 
    如果是一个packet下面不是所有的action都需要进行拦截 那么 你这个登录拦截不能配置成全局的拦截器 这样子的话,你需要进行登录拦截的action需要配置 一下登录拦截器
      

  11.   

    当然 你可以把不需要登录的action放到一个单独的packet下面
      

  12.   

    我们都直接写在action的类里:
    /**
     * 用户员工action
     * @version 1.0
     */
    @ActionBean(name = "/user", interceptor = "myInterceptor")
    public class UserAction extends BaseAction {

    private static final Logger log = LoggerFactory.getLogger(UserAction.class);
    private static final String LIST = "/jsp/user/list.jsp";
    private static final String ADD = "/jsp/user/add.jsp";
    private static final String EDIT = "/jsp/user/edit.jsp";
    private static final String PROMPT = "/prompt.jsp";

    /**
     * 员工列表
     * @return String
     */
    public String list() {
    log.info("员工列表");
    return LIST;
    }

    /**
     * 添加员工
     * @return String
     */
    public String add() {
    if ("save".equals(paramString(METHOD_NAME))) {
    try { bean.setNamePY(UtilTool.getBean().getFirstPinyin(bean.getRealName()));
    bean = mng.add(bean);
    resetPage(OPERATE_RIGHT, "parent.getUsers();", "添加员工【" + bean.getRealName() + "】成功!");
    } catch (Exception e) {
    resetPage(OPERATE_ERROR, "", OPERATE_ERROR_MESSAGE);
    }
    return PROMPT;
    }
    setRequestAttr("company", companyMng.get(id));
    return ADD;
    }

    /**
     * 编辑员工
     * @return String
     */
    public String edit() {
    if ("update".equals(paramString(METHOD_NAME))) {
    try {
    bean.setNamePY(UtilTool.getBean().getFirstPinyin(bean.getRealName()));
    bean = mng.edit(bean);
    resetPage(OPERATE_RIGHT, "parent.getUsers();", "编辑员工【" + bean.getRealName() + "】成功!");
    } catch (Exception e) {
    resetPage(OPERATE_ERROR, "", OPERATE_ERROR_MESSAGE);
    }
    return PROMPT;
    }
    bean = mng.get(id);
    return EDIT;
    }

    /**
     * 删除员工
     * @return String
     */
    public String del() {
    try {
    bean = mng.del(id);
    resetPage(OPERATE_RIGHT, "parent.getUsers();", "删除员工【" + bean.getRealName() + "】成功!");
    } catch (Exception e) {
    resetPage(OPERATE_ERROR, "", OPERATE_ERROR_MESSAGE);
    }
    return PROMPT;
    } @MatchingBean
    public UserMng mng;
    private User bean; public User getBean() {
    return bean;
    } public void setBean(User bean) {
    this.bean = bean;
    }}/**
     * 项目中的action拦截器
     * @version 1.0
     */
    @InterceptorBean(name = "myInterceptor")
    public class MyInterceptor implements Interceptor {

    private static final Logger log = LoggerFactory.getLogger(MyInterceptor.class); public String advance(HttpServletRequest request, HttpServletResponse response) throws FrameworkException {
    log.info("访问地址:" + request.getRequestURI());
    System.out.println("你想怎样拦截,就把代码写在这儿吧");
    return null;
    }}xml配置是多余的,访问action的每个方法,都必须通过这个拦截器
      

  13.   

    你第一步没有在web。xml中配置核心过滤器?