首先依赖没有特殊要求
项目结构
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>springboot</artifactId> <groupId>com.baizhi</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>springbootfile</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.13.RELEASE</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>9.0.31</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.1.13.RELEASE</version> </dependency> </dependencies> <build> <plugins> <!--启动插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.3.RELEASE</version> <configuration> <fork>true</fork> <jvmArguments>-Dfile.encoding=utf-8</jvmArguments> </configuration> </plugin> </plugins> </build> </project>
login.jsp
<html> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <body> <form action="/springbootfile/login"> 账号: <input type="text" name="username" > <br> 密码: <input type="password" name="password" > <br> <input type="submit" value="提交"> </form> </body> </html>
UserController
package com.baihzhi.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpSession; /** * @Package: com.baihzhi.controller * @ClassName: UserController * @Author: alex * @CreateTime: 2020/11/9 19:08 * @Description: */ @Controller public class UserController { @RequestMapping("/login") public String login(String username, String password, HttpSession session){ if(username.equals("alex")&&password.equals("12345")){ session.setAttribute("status","status"); return "uploadsuccess"; } System.out.println("1111"); return "error"; } @RequestMapping("/show") public String show(){ return "uploadsuccess"; } }
(interceptor拦截器包)LoginInterceptor(拦截器)
package com.baihzhi.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 javax.servlet.http.HttpSession; /** * @Package: com.baihzhi.interceptor * @ClassName: LoginInterceptor * @Author: alex * @CreateTime: 2020/11/9 19:21 * @Description: */ @Component //此处注解一定要写,不然会被springboot忽略,此处注解相当于bean标签 public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); String status =(String) session.getAttribute("status"); System.out.println("22222"); if(status!=null){ System.out.println("33333"); return true; } response.sendRedirect(request.getContextPath()+"/login.jsp"); return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
springbootApplication(入口类)
package com.baihzhi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @Package: com.baihzhi * @ClassName: springbootfileApplication * @Author: alex * @CreateTime: 2020/11/9 14:07 * @Description: */ @SpringBootApplication public class springbootfileApplication { public static void main(String[] args) { SpringApplication.run(springbootfileApplication.class,args); } }
SpringMVCConfig(配置拦截范围,注意和入口类在同一级别的包里面,便于扫描)
package com.baihzhi; //import com.baihzhi.interceptor.LoginInterceptor; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.context.annotation.Configuration; //import org.springframework.web.servlet.HandlerInterceptor; //import org.springframework.web.servlet.config.annotation.InterceptorRegistration; //import org.springframework.web.servlet.config.annotation.InterceptorRegistry; //import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // ///** // * @Package: com.baihzhi // * @ClassName: SpringMVCConfig // * @Author: alex // * @CreateTime: 2020/11/9 19:32 // * @Description: // */ //@Configuration //public class SpringMVCConfig implements WebMvcConfigurer { // @Autowired // private HandlerInterceptor ls; // // @Override // public void addInterceptors(InterceptorRegistry registry) { // InterceptorRegistration interceptor = registry.addInterceptor(ls); // //设置拦截范围 // interceptor.addPathPatterns("/**"); // //排除拦截 // interceptor.excludePathPatterns("/login","/register"); // } //} import com.baihzhi.interceptor.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; 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 SpringMVCConfig implements WebMvcConfigurer { @Autowired private LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { InterceptorRegistration ir = registry.addInterceptor(loginInterceptor); ir.addPathPatterns("/**"); ir.excludePathPatterns("/login","/register"); } }
application.yml
server:
port: 8989
servlet:
context-path: /springbootfile
spring:
mvc:
view:
prefix: /
suffix: .jsp