呵呵,好想问得不太明白
我想要的是struts结构下的用户身份验证
或者说就是解决用户在知道页面的地址而直接在浏览器中输入页面的地址而进入页面,避开权限检查
,这种情况用过滤器怎么实现雅?
那儿有过滤器的资料
thanks a lot.....

解决方案 »

  1.   

    机械工业出版社 《servlet与jsp 权威指南》
    可以参考
      

  2.   

    package corecraft.web;import org.apache.log4j.Logger;import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;import corecraft.config.CoreConfigFactory;
    import corecraft.ccsf.acl.Session;
    import corecraft.ccsf.acl.CoreSession;/**
     * Created by IntelliJ IDEA.
     * User: Dickensi Wen [email protected]
     * Date: 2003-10-7
     * Time: 23:08:30
     * To change this template use Options | File Templates.
     */
    public class RequestFilter implements javax.servlet.Filter {
        private static Logger logger = Logger.getLogger(RequestFilter.class);
        private FilterConfig filterConfig;
        private static String m_sInitialPath = CoreConfigFactory.getProperties("config.startpage");    public void init(FilterConfig filterConfig) throws ServletException {
            this.filterConfig = filterConfig;
        }    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
            HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;        String sUrl = httpRequest.getServletPath();//.getRequestURL().toString();
            HttpSession session = httpRequest.getSession();
            // logger.debug("sUrl         :" + session.getAttribute("core-session"));
            CoreSession coreSession = (CoreSession) session.getAttribute("core-session");        //logger.debug("in filter");
            try {
                if (coreSession == null) {
                    logger.debug("sUrl         :" + sUrl);
                    if (sUrl.equalsIgnoreCase("/index.jsp") || sUrl.equals("")) {
                        logger.debug("set session: IP:" + httpRequest.getRemoteAddr());
                        session.setAttribute("core-session", new CoreSession());
                    } else if (sUrl.endsWith(".gif") || sUrl.endsWith(".jpg")) {
                    } else {
                        logger.debug("redirect: IP:" + httpRequest.getRemoteAddr());
                        session.setAttribute("core-session", new CoreSession());
                        httpRequest.getRequestDispatcher(m_sInitialPath).forward(servletRequest, servletResponse);
                        return;
                    }
                }
            } catch (Exception e) {
                logger.fatal("filter error:" + e.toString(), e);
            }
            // logger.debug(sUrl);
            filterChain.doFilter(servletRequest, servletResponse);
        }    public void destroy() {
        }
    }在web.xml加入:<web-app>
      <!--display-name>Jive Forums</display-name>
      <description>Community application by Jive Software.</description>
      <context-param>
        <param-name>jiveHome</param-name>
        <param-value>E:\\myweb\\jive\\WEB-INF\\classes\\jiveHome</param-value>
      </context-param-->
      <filter>
        <filter-name>acl filter</filter-name>
        <filter-class>corecraft.web.RequestFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>acl filter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  3.   

    Dickensi :
    你的方法有效吗?
    假如,我在我的session有效期间内,但是有一个画面我原本不能进去,但是通过直接输入url,你这样还是不能阻止吧。
    希望得到你的回答。碰到了和搂主一样的问题。
    原本想在自己的每一个页面保存一个变量,来进行判断,但是这样的话,就需要修改很多以前已经做好的jsp文件了,还有好的过滤器的例子吗?除了动用session以外。