首先看一下我的项目目录吧
1,添加拦截器
我们做项目肯定要用到拦截器这个功能哈,没登录的话一些页面我们是不能访问的哈,这里是用到了HandlerInterceptor。
分别在图中的位置创建2个目录和2个文件:
WebConfig:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration//标识这是一个配置类
public class WebConfig implements WebMvcConfigurer {/*** 重写addCorsMappings()解决跨域问题* 配置:允许http请求进行跨域访问*/@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")//指哪些接口URL需要增加跨域设置.allowedOriginPatterns("*")//指的是前端哪些域名被允许跨域.allowCredentials(true)//需要带cookie等凭证时,设置为true,就会把cookie的相关信息带上.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")//指的是允许哪些方法.maxAge(3600);//cookie的失效时间,单位为秒(s),若设置为-1,则关闭浏览器就失效}/*** 重写addInterceptors()实现拦截器* 配置:要拦截的路径以及不拦截的路径**/@Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册Interceptor拦截器(Interceptor这个类是我们自己写的拦截器类)InterceptorRegistration registration = registry.addInterceptor(new GlobalInterceptor());//addPathPatterns()方法添加需要拦截的路径registration.addPathPatterns("/**"); //所有路径都被拦截//excludePathPatterns()方法添加不拦截的路径registration.excludePathPatterns( //添加不拦截路径"/login.html", //登录页面的地址【不拦截】"/","/login","/toLogin",//"/**/*.html", //html静态资源"/**/*.js", //js静态资源"/**/*.css" //css静态资源);}
}
GlobalInterceptor:
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 拦截器*/
public class GlobalInterceptor implements HandlerInterceptor {/*** 在请求处理之前进行调用(Controller方法调用之前)*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {System.out.println("执行了Interceptor的preHandle方法");try {//统一拦截(查询当前session是否存在loginName用户信息)(这里loginName会在每次登陆成功后,写入session)String loginName = (String)request.getSession().getAttribute("loginName");if (loginName != null) {return true;}else{//这里设置拦截以后重定向的页面,一般设置为登陆页面地址request.getContextPath() +response.sendRedirect("/toLogin");return false;}} catch (IOException e) {e.printStackTrace();}return true;//如果设置为false时,被请求时,拦截器执行到此处将不会继续操作//如果设置为true时,请求将会继续执行后面的操作}
}
2,设置controller跳转
设置输入端口就直接能进入我们的login.html页面(或者你想要进的首页)
@RequestMapping("/")
public ModelAndView login(){ModelAndView mv = new ModelAndView("login.html");return mv ;
}
这里设置后,我们输入localhost:80回车就能进入login.html,不需要输入localhost:80/login.html。(当然这个80端口是在application文件里面配置,大家应该知道吧)
3,打jar包发布到Linux服务器
打jar包发布到Linux服务器,需要配置pom文件,不然的话发布到服务器上会报404,。
<build><resources><resource><directory>${basedir}/src/main/webapp</directory><targetPath>META-INF/resources</targetPath><includes><include>**/**</include></includes></resource><resource><directory>src/main/resources</directory><filtering>false</filtering><includes><include>**/**</include></includes></resource></resources>
</build>
就是在里添加这些配置信息,指定页面位置