* web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>springweb</display-name>
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
	</context-param>

	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>*.htm</url-pattern>
	</servlet-mapping>
	
	<filter>
		<filter-name>Acegi Filter Chain Proxy</filter-name>
		<filter-class>
			org.acegisecurity.util.FilterToBeanProxy
		</filter-class>
		<init-param>
			<param-name>targetBean</param-name>
			<param-value>filterChainProxy</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>Acegi Filter Chain Proxy</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<welcome-file-list>
		<welcome-file>redirect.jsp</welcome-file>
	</welcome-file-list>
	
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
		<taglib-location>/WEB-INF/tlds/fmt.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
		<taglib-location>/WEB-INF/tlds/fmt-rt.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
		<taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
		<taglib-location>/WEB-INF/tlds/c-rt.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
		<taglib-location>/WEB-INF/tlds/sql.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
		<taglib-location>/WEB-INF/tlds/sql-rt.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
		<taglib-location>/WEB-INF/tlds/x.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
		<taglib-location>/WEB-INF/tlds/x-rt.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://java.sun.com/jstl/fn</taglib-uri>
		<taglib-location>/WEB-INF/tlds/fn.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://www.springframework.org/spring</taglib-uri>
		<taglib-location>/WEB-INF/tlds/spring.tld</taglib-location>
	</taglib>
	
</web-app>

* dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

	<!-- Controller definitions -->
	<bean id="indexController"
		class="springweb.controller.IndexController">
		<property name="greeting">
			<value>Welcome to the Demo App!!</value>
		</property>
	</bean>
	<bean id="logoutController"
		class="springweb.controller.LogoutController" />
	<bean id="initParamSubmitController"
		class="springweb.controller.InitParamSubmitController" />
	<bean id="paramSubmitController"
		class="springweb.controller.ParamSubmitController">
		<property name="sessionForm">
			<value>false</value>
		</property>
		<property name="commandName">
			<value>simplePersonForm</value>
		</property>
		<property name="commandClass">
			<value>springweb.form.SimplePersonForm</value>
		</property>
		<property name="validator">
			<bean
				class="springweb.form.validator.SimplePersonFormValidator" />
		</property>
		<property name="formView">
			<value>initparamsubmit</value>
		</property>
		<property name="successView">
			<value>/secure/app/paramsubmit.htm</value>
		</property>
	</bean>
	<bean id="initAdminController"
		class="springweb.controller.InitAdminController" />


	<!-- URL Mapping definition -->
	<bean id="simpleUrlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/index.htm">indexController</prop>
				<prop key="/logout.htm">logoutController</prop>
				<prop key="/secure/app/initparamsubmit.htm">
					initParamSubmitController
				</prop>
				<prop key="/secure/app/paramsubmit.htm">
					paramSubmitController
				</prop>
				<prop key="/secure/admin/initadmin.htm">
					initAdminController
				</prop>
			</props>
		</property>
	</bean>

	<!-- View Resolver definition -->
	<bean id="xmlViewResolver"
		class="org.springframework.web.servlet.view.XmlViewResolver">
		<property name="location">
			<value>/WEB-INF/springweb-views.xml</value>
		</property>
	</bean>

	<!-- ****** START ACEGI Security Configuration *******-->
	<!-- ======================== FILTER CHAIN ======================= -->

	<!--  if you wish to use channel security, add "channelProcessingFilter," in front
		of "httpSessionContextIntegrationFilter" in the list below -->
	<bean id="filterChainProxy"
		class="org.acegisecurity.util.FilterChainProxy">
		<property name="filterInvocationDefinitionSource">
			<value>
				CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
				PATTERN_TYPE_APACHE_ANT
				/**=httpSessionContextIntegrationFilter,formAuthenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
			</value>
		</property>
	</bean>

	<!-- Start Security filter config -->
	<bean id="exceptionTranslationFilter"
		class="org.acegisecurity.ui.ExceptionTranslationFilter">
		<property name="authenticationEntryPoint">
			<ref bean="formLoginAuthenticationEntryPoint" />
		</property>
	</bean>

	<!-- Define filter to handle BASIC authentication -->
	<bean id="basicProcessingFilter"
		class="org.acegisecurity.ui.basicauth.BasicProcessingFilter">
		<property name="authenticationManager">
			<ref bean="authenticationManager" />
		</property>
		<property name="authenticationEntryPoint">
			<ref bean="authenticationEntryPoint" />
		</property>
	</bean>

	<!-- Define realm for BASIC login-->
	<bean id="authenticationEntryPoint"
		class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint">
		<property name="realmName">
			<value>Spring Web Realm</value>
		</property>
	</bean>

	<!-- Define filter to handle FORM authentication -->
	<bean id="formAuthenticationProcessingFilter"
		class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
		<property name="filterProcessesUrl">
			<value>/j_acegi_security_check</value>
		</property>
		<property name="authenticationFailureUrl">
			<value>/loginFailed.html</value>
		</property>
		<property name="defaultTargetUrl">
			<value>/</value>
		</property>
		<property name="authenticationManager">
			<ref bean="authenticationManager" />
		</property>
	</bean>

	<!-- Define realm for FORM login-->
	<bean id="formLoginAuthenticationEntryPoint"
		class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">
		<property name="loginFormUrl">
			<value>/login.jsp</value>
		</property>
		<property name="forceHttps">
			<value>false</value>
		</property>
	</bean>

	<bean id="httpSessionContextIntegrationFilter"
		class="org.acegisecurity.context.HttpSessionContextIntegrationFilter">
	</bean>
	<!-- End Security filter config -->

	<!-- Start Security interceptor config -->
	<!-- Define authentication manager, decision manager and secure URL patterns -->
	<bean id="filterSecurityInterceptor"
		class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
		<property name="authenticationManager">
			<ref bean="authenticationManager" />
		</property>
		<property name="accessDecisionManager">
			<ref bean="accessDecisionManager" />
		</property>
		<property name="objectDefinitionSource">
			<value>
				CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
				PATTERN_TYPE_APACHE_ANT 
				/secure/admin/*=ROLE_ADMIN
				/secure/app/*=ROLE_USER
			</value>
		</property>
	</bean>
	<!-- End Security interceptor config -->

	<!-- Start authentication config -->
	<bean id="authenticationManager"
		class="org.acegisecurity.providers.ProviderManager">
		<property name="providers">
			<list>
				<ref bean="daoAuthenticationProvider" />
			</list>
		</property>
	</bean>

	<bean id="daoAuthenticationProvider"
		class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
		<property name="userDetailsService">
			<ref bean="userDetailsService" />
		</property>
	</bean>

	<!-- Authentication using In-memory Dao -->
	<bean id="userDetailsService"
		class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
		<property name="userMap">
			<value>
				jklaassen=4moreyears,ROLE_ADMIN
				bouerj=ineedsleep,ROLE_USER
			</value>
		</property>
	</bean>
		
	<!-- Authentication using JDBC Dao -->
	<!-- <bean id="userDetailsService"
		class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
		<property name="dataSource">
		<ref bean="dataSource"/>
		</property>
		</bean>
	 -->
		<!-- End authentication config -->

	<!-- Start authorization config -->
	<bean id="accessDecisionManager"
		class="org.acegisecurity.vote.UnanimousBased">
		<property name="decisionVoters">
			<list>
				<ref bean="roleVoter" />
			</list>
		</property>
	</bean>

	<bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter">
		<property name="rolePrefix">
			<value>ROLE_</value>
		</property>
	</bean>
	<!-- End authorization config -->

	<!-- ****** END ACEGI Security Configuration *******-->

	<!-- DataSource definition -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName">
			<value>com.mysql.jdbc.Driver</value>
		</property>
		<property name="url">
			<value>jdbc:mysql://localhost:3306/springweb_auth_db</value>
		</property>
		<property name="username">
			<value>j2ee</value>
		</property>
		<property name="password">
			<value>password</value>
		</property>
	</bean>
</beans>