Spring 4.x基于Java代码的配置:静态资源文件和Dispatcher servlet
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Spring 4.x基于Java代码的配置:静态资源文件和Dispatcher servlet,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3064字,纯文字阅读大概需要5分钟。
内容图文
![Spring 4.x基于Java代码的配置:静态资源文件和Dispatcher servlet](/upload/InfoBanner/zyjiaocheng/703/b82aa5f121214524b6489c8b4c99bc68.jpg)
参见英文答案 > Annotation Configuration Replacement for mvc:resources – Spring 2个
在servlet 3.0版之前,所有配置都是基于xml的.
我目前正在使用基于代码/注释的配置.
在xml样式配置中,我们有
<mvc:resources mapping="/res/**" location="/res/" />
如何将其转换为基于代码的配置?我一直收到来自eclipse调试控制台的错误,即没有找到资源文件的调度程序servlet.
顺便说一句,这是我的参考,Migrating from Spring Security 3.x to 4.x (Java Configuration)
初始化
public class AppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { MvcConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
mvc配置
@EnableWebMvc
@ComponentScan({ "com.appname.controller" })
public class MvcConfig {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
return resolver;
}
}
安全配置
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password")
.roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/res/**").permitAll()
.and().authorizeRequests()
.anyRequest().hasRole("USER")
.and().formLogin().loginPage("/account/signin").permitAll()
.and().logout().permitAll();
}
}
安全初始化程序
public class SecurityInitializer extends
AbstractSecurityWebApplicationInitializer {
}
自定义登录
public class CustomUserDetailsService implements UserDetailsService {
private AccountRepository accountRepository;
public CustomUserDetailsService() {
this.accountRepository = new AccountRepository();
}
@Override
public UserDetails loadUserByUsername(String email)
throws UsernameNotFoundException {
Account account = accountRepository.getAccountByEmail(email);
if (account == null) {
throw new UsernameNotFoundException("Invalid email/password.");
}
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority("USER"));
return new User(account.getEmail(), account.getPassword(), authorities);
}
}
解决方法:
您可以从WebMvcConfigurerAdapter延伸并覆盖addResourceHandlers方法
@EnableWebMvc
@ComponentScan({"com.appname.controller"})
public class MvcConfig extends WebMvcConfigurerAdapter {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/res/**")
.addResourceLocations("/res/");
}
}
内容总结
以上是互联网集市为您收集整理的Spring 4.x基于Java代码的配置:静态资源文件和Dispatcher servlet全部内容,希望文章能够帮你解决Spring 4.x基于Java代码的配置:静态资源文件和Dispatcher servlet所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。