有谁知道在struts下,需要在struts-config.xml里面还要定义些什么东西呢?
我按照要求,在web.xml里面定义了filter,在spring的配置里面也定义了/j_acegi_security_check的处理,但没在struts里面做任何事情,结果就是“无法找到该页”,哪位朋友能帮帮忙
我按照要求,在web.xml里面定义了filter,在spring的配置里面也定义了/j_acegi_security_check的处理,但没在struts里面做任何事情,结果就是“无法找到该页”,哪位朋友能帮帮忙
<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>
下面是我的配置,可以看出基本和你讲的一致:
<!--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“无法找到该网页”
我猜测是因为路径的原因,但是因为对spring中url使用不是很精通,因此也不得解,如果各位对url的使用,尤其是/在spring配置和jsp配置中分别代表什么地方,很了解,希望能获得你们的帮助
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>