一、创建项目文件
- 添加依赖
二、将上一讲的复制过来
三、写MVC配置文件,定义视图跳转
1、注释掉控制器
2、创建自定义mvc配置类,实现自动跳转
package net.zjs.lesson11.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry){
registry.addViewController("login.html").setViewName("login");
registry.addViewController("toLoginPage").setViewName("login");
}
}
3、修改登录页面
4、运行测试
- 访问http://localhost:8080/toLoginPage
- 访问http://localhost:8080/login.html
四、编写拦截器
1、创建自定义拦截器
package net.zjs.lesson11.interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Calendar;
@Component
public class Myinterceptor implements HandlerInterceptor {
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception{
request.setAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
}
}
2、在自定义MVC配置类里加载自定义拦截器
3、修改登录页面
- 编译会报错,说无法解析currentYear,不用管它,因为数据不是来自控制器,而是来自拦截器,要运行时请求后才能获取数据,因此编译会报错。
4、运行测试
五、编写登录拦截器,防止非登录用户查看全部用户信息
1、还原登录控制器中的toLoginPage方法的注解
2、在自定义MVC配置中注释掉相应的视图控制器
3、在登录控制里修改login()方法