@Configuration public class MyMvcConfig implements WebMvcConfigurer { //主要用于实现无业务逻辑跳转,例如主页跳转, //简单的请求重定向,错误页跳转等 @Override public void addViewControllers(ViewControllerRegistry registry) { //当访问 “/” 或 “/index.html” 时,都直接跳转到登陆页面 registry.addViewController("/").setViewName("login"); registry.addViewController("/index.html").setViewName("login"); registry.addViewController("/main.html").setViewName("main"); } //注册拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { System.out.println("MyMvcConfig.addInterceptors 注册拦截器"); registry.addInterceptor(new LoginInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/", "/login", "/index.html", "/user/login", "/css/**", "/images/**", "/js/**", "/fonts/**");//放行登录页,登陆操作,静态资源 } }
时间: 2024-04-13 08:25:18 浏览: 122
这是一个使用注解配置的Spring MVC的配置类。它实现了WebMvcConfigurer接口,并重写了其中的两个方法:addViewControllers和addInterceptors。
addViewControllers方法用于配置无业务逻辑的页面跳转。在这个例子中,当访问根路径"/"或者"/index.html"时,会直接跳转到登录页面,而访问"/main.html"时,会跳转到主页面。
addInterceptors方法用于注册拦截器。在这个例子中,注册了一个名为LoginInterceptor的拦截器。拦截器会拦截所有请求("/**"),但是排除了一些路径("/", "/login", "/index.html", "/user/login", "/css/**", "/images/**", "/js/**", "/fonts/**")。也就是说,这些路径不会被拦截器拦截,可以直接访问。
这个配置类的作用是实现简单的页面跳转和请求拦截功能。
相关问题
springboot怎么实现servet跳转
Spring Boot作为Spring的一个模块,简化了基于Spring的应用开发过程。它内置了Tomcat、Jetty或Undertow等嵌入式Web容器,从而可以轻松实现Servlet跳转。以下是通过Spring Boot实现Servlet跳转的几种常见方法:
1. 使用Spring MVC的@Controller注解:
在Spring Boot中,通常不需要直接操作Servlet,而是使用Spring MVC提供的注解来定义控制器(Controller),通过控制器来处理请求并进行跳转。使用@Controller注解的类会自动注册为Spring的bean,并且其方法可以映射HTTP请求。
例如,创建一个简单的控制器用于页面跳转:
```java
@Controller
public class WebController {
@RequestMapping("/index")
public String index() {
return "index"; // 返回视图名称,实际上是跳转到index.html页面
}
@RequestMapping("/toLogin")
public String toLogin() {
return "redirect:login"; // 重定向到login页面
}
}
```
在这个例子中,`/index`请求将被映射到`index()`方法,并返回名为`index`的视图。而`/toLogin`请求将被`toLogin()`方法处理,并通过`redirect:`前缀实现重定向到`login`页面。
2. 实现`WebMvcConfigurer`接口或继承`WebMvcConfigurerAdapter`类:
如果需要自定义Spring MVC的配置,可以通过实现`WebMvcConfigurer`接口或继承`WebMvcConfigurerAdapter`类来进行。
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
registry.addRedirectViewController("/redirect", "/home");
}
}
```
在这个配置类中,通过`addViewControllers`方法添加视图控制器映射,可以实现简单的跳转。
3. 注册自己的Servlet并配置映射:
如果确实需要使用原生的Servlet,可以通过实现`WebApplicationInitializer`接口来注册Servlet。
```java
public class MyWebInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
ServletRegistration.Dynamic myServlet = servletContext.addServlet("myServlet", MyServlet.class);
myServlet.addMapping("/my/*"); // 映射URL到Servlet
}
}
```
在这个例子中,`MyServlet`类需要继承自`HttpServlet`类,并实现需要的方法。`onStartup`方法中注册并映射了自定义的Servlet到特定的URL模式。
SpringBoot实现页面跳转重登陆
在 SpringBoot 中实现页面跳转重登录,可以通过使用 Spring Security 框架来实现。下面是实现步骤:
1. 添加 Spring Security 依赖
在 pom.xml 文件中添加 Spring Security 依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 配置 Spring Security
在 SpringBoot 的主配置类中添加 @EnableWebSecurity 注解,并创建一个继承自 WebSecurityConfigurerAdapter 的配置类。通过配置类来指定安全规则和用户权限等信息。
例如,以下代码配置了一个基本的安全规则,即所有请求都需要认证,登录页面为 /login,登录失败后跳转到 /login?error 页面。
```
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").failureUrl("/login?error").permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
```
3. 创建登录页面
在 resources 目录下创建一个名为 login.html 的登录页面,用于用户输入账号和密码。
4. 创建重定向页面
在登录页面中,添加一个重定向链接,如下所示:
```
<a href="/logout?redirect=/myPage">重新登录</a>
```
其中,/logout 是 Spring Security 的默认登出链接,redirect 参数指定了登录后需要跳转的页面。
5. 创建自定义登出处理器
Spring Security 默认的登出处理器不支持重定向到指定页面,需要使用自定义登出处理器来实现。以下代码定义了一个 LogoutHandler 实现类,用于在用户登出时,重定向到指定页面。
```
@Component
public class CustomLogoutHandler implements LogoutSuccessHandler {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
String redirectUrl = request.getParameter("redirect");
if (StringUtils.isBlank(redirectUrl)) {
redirectUrl = "/";
}
response.sendRedirect(redirectUrl);
}
}
```
6. 配置自定义登出处理器
在 SpringBoot 的主配置类中,通过 @Bean 注解将自定义登出处理器加入 Spring 容器,并将其设置为 Spring Security 的默认登出处理器。
```
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomLogoutHandler customLogoutHandler;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.logout().logoutSuccessHandler(customLogoutHandler);
// 其他配置
}
// 其他配置
@Bean
public LogoutSuccessHandler logoutSuccessHandler() {
return customLogoutHandler;
}
}
```
7. 测试
完成上述步骤后,重新启动应用程序,访问 /myPage 页面。如果未登录,则会自动跳转到 /login 页面,输入正确的账号和密码后,会重定向到 /myPage 页面。当用户点击重新登录链接时,会跳转到 /login 页面,并在登录成功后重定向到 /myPage 页面。
阅读全文