有谁知道在struts下,需要在struts-config.xml里面还要定义些什么东西呢?
我按照要求,在web.xml里面定义了filter,在spring的配置里面也定义了/j_acegi_security_check的处理,但没在struts里面做任何事情,结果就是“无法找到该页”,哪位朋友能帮帮忙

解决方案 »

  1.   

    没人能帮我吗????郁闷ing
      

  2.   

    struts-config.xml不需要定义什么。web.xml
    <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>/WEB-INF/spring-context/applicationContext.xml,/WEB-INF/spring-context/applicationContext-security-acegi.xml</param-value>
       </context-param> <!--Acegi Filter Chain Proxy -->
       <filter>
         <filter-name>Acegi Filter Chain Proxy</filter-name>
         <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
         <param-name>targetClass</param-name>
         <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
        </init-param>
       </filter><filter-mapping>
       <filter-name>Acegi Filter Chain Proxy</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
       </listener>   <listener>
         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
       </listener><listener>
         <listener-class>org.acegisecurity.ui.session.HttpSessionEventPublisher</listener-class>
       </listener>
      

  3.   

    to rickhunterchen(千山鸟飞绝) :
    下面是我的配置,可以看出基本和你讲的一致:
    <!--Acegi Filter Chain Proxy -->
    <filter>
    <filter-name>Acegi Filter Chain Proxy</filter-name>
    <filter-class>
    org.acegisecurity.util.FilterToBeanProxy
    </filter-class>
    <init-param>
    <param-name>targetClass</param-name>
    <param-value>
    org.acegisecurity.util.FilterChainProxy
    </param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Acegi Filter Chain Proxy</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--Spring ApplicationContext 载入 -->
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener> <!-- Spring 刷新Introspector防止内存泄露 -->
    <listener>
    <listener-class>
    org.springframework.web.util.IntrospectorCleanupListener
    </listener-class>
    </listener> <listener>
    <listener-class>
    org.acegisecurity.ui.session.HttpSessionEventPublisher
    </listener-class>
    </listener>在spring中配置如下:
    <bean id="filterChainProxy"
    class="org.acegisecurity.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
    <value>
    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
    PATTERN_TYPE_APACHE_ANT
    /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,
    basicProcessingFilter
    </value>
    </property>
    </bean> <bean id="httpSessionContextIntegrationFilter"
    class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" /> <bean id="authenticationProcessingFilter"
    class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
    <property name="authenticationManager"
    ref="authenticationManager" />
    <property name="authenticationFailureUrl"
    value="/pages/welcome.jsp?login_error=1" />
    <property name="defaultTargetUrl" value="/pages/welcome.jsp" />
    <property name="filterProcessesUrl"
    value="/*/j_acegi_security_check" />
    </bean> <bean id="authenticationManager"
    class="org.acegisecurity.providers.ProviderManager">
    <property name="providers">
    <list>
    <ref local="daoAuthenticationProvider" /> </list>
    </property>
    </bean> <!-- 使用Md5算法加密 -->
    <bean id="passwordEncoder"
    class="org.acegisecurity.providers.encoding.Md5PasswordEncoder" /> <bean id="daoAuthenticationProvider"
    class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
    <property name="userDetailsService" ref="userDetailsService" />
    <property name="passwordEncoder" ref="passwordEncoder" />
    </bean> <!-- UserDetailsService is the most commonly frequently Acegi Security interface implemented by end users -->
    <bean id="userDetailsService"
    class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
    <property name="dataSource" ref="dataSource" />
    <property name="usersByUsernameQuery">
    <value>
    select name,passwd from users where and name = ?
    </value>
    </property>
    </bean>jsp中配置如下:
    <form action="<c:url value='../j_acegi_security_check'/>" method="POST">最后的结果是:
    页面http://localhost:8080/springtest/j_acegi_security_check
    HTTP404“无法找到该网页”
      

  4.   

    谈谈我个人的想法:
    我猜测是因为路径的原因,但是因为对spring中url使用不是很精通,因此也不得解,如果各位对url的使用,尤其是/在spring配置和jsp配置中分别代表什么地方,很了解,希望能获得你们的帮助
      

  5.   

    <property name="filterProcessesUrl"
    value="/*/j_acegi_security_check" />怎么是这样呢?
    <property name="filterProcessesUrl"><value>/j_acegi_security_check</value></property>login登录首页:
    <%@ page contentType="text/html;charset=GBK" language="java" %>
    <html>
      <head>
        <title>Login</title>
      </head>  <body>
        <h1>Login</h1><%
      String login_error=request.getParameter("login_error");
      if(login_error!=null){
    %>
          <font color="red">
            登录失败。
          </font>
    <%
      }
    %>    <form action="j_acegi_security_check" method="POST">
          <table>
            <tr><td>User:</td><td><input type='text' name='j_username'></td></tr>
            <tr><td>Password:</td><td><input type='password' name='j_password'></td></tr>        <tr><td colspan='2'><input name="submit" type="submit"></td></tr>
            <tr><td colspan='2'><input name="reset" type="reset"></td></tr>
          </table>
        </form>
      </body>
    </html>