Springboot基础1:使用idea构建项目实现拦截器

首先我先来说说我一个小白对springboot的理解吧,它是基于spring的基础,自带服务器引擎,简化了maven的引入,提供多种功能的一个框架。下图是springboot官网的一些说明。
Springboot基础1:使用idea构建项目实现拦截器_第1张图片

构建项目

1.使用工具idea构建项目,file-new project-spring initializr自动构建项目,选择你需要引入的配置,web、mysql、mybatis.(如果只是spingboot web项目的话,就直接选web即可)。 2.如果需要引擎模板,或者一些webjar的话可以在pom.xml中引入相关依(webjar官网有依赖文档)
例如:引入thymeleaf

  
                 	 org.springframework.boot
            		spring-boot-starter-thymeleaf
     

Springboot基础1:使用idea构建项目实现拦截器_第2张图片
Springboot基础1:使用idea构建项目实现拦截器_第3张图片`

书写拦截器

1.在templates写新建success.html、login.html.
login.html:




    
    login
    
    







success.html:




    
    Title


          

成功

2.映射:

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpSession;
import java.util.Map;

@Controller

public class Hello {
     //映射路径
    @RequestMapping({"/","/login.html"})
    public  String input(){
    //返回跳转的templates的路径
        return "login";
    }

    @RequestMapping("login")
    //接收请求以及做出响应,如果用户密码正确则更新session中的值。
    public String login(@RequestParam("user") String username, HttpSession session, @RequestParam("pass") String password){
           if(username.equals("admin")&&password.equals("123456")){
               session.setAttribute("user",username);
               return "redirect:/success";
           }else{
               return  "redirect:/login.html";
           }
    }

    @RequestMapping("success")
    public  String inputs(Map a){
        a.put("hello","yzx");
        a.put("name","yzx1");
        a.put("name2","yzx1");
        return "success";
    }
}

3.书写拦截器:

 package com.example.demo.controller;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class loginfiter implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String name=(String) request.getSession().getAttribute("user");
        if(name==null) {
           //登录验证不通过提示信息并返回首页
            request.setAttribute("msg","没有权限");
            request.getRequestDispatcher("/login.html").forward(request,response);
            return false;
        }else{
        //放行请求
            return true;
        }

    }

    @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 {

}

}
4.注册拦截器

package com.example.demo.controller;

import org.springframework.context.annotation.Bean;
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.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;


@Configuration
public class config extends WebMvcConfigurerAdapter {
    @Bean
    public loginfiter getSecurityInterceptor() {
        return new loginfiter();
    }

    /*public void addView(ViewControllerRegistry registry){
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/login.html").setViewName("login");
    }*/
    @Override
    //将之前的拦截器loginfiter加入到容器中。
    public void addInterceptors(InterceptorRegistry registry) {
        InterceptorRegistration addInterceptor = registry.addInterceptor(getSecurityInterceptor()).addPathPatterns("/**")
                .excludePathPatterns("/login.html","/","/login");
    }
}

你可能感兴趣的:(java)