[springboot::]學習使用過濾器
阿新 • • 發佈:2018-12-25
1.首先新建UserFiler類,並且實現Filter
package com.example.demo.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; @WebFilter(filterName = "userfilter",urlPatterns = "/HELLO") //只攔截HELLO請求 public class UserFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("過濾器開始初始化>>>>>>>>"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpSession session = request.getSession(); if(session.getAttribute("userKey") == null){ //獲取瀏覽器的session System.out.print("使用者登入key不存在,進行攔截"); return; } filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { System.out.println("過濾器開始銷燬>>>>>>>>"); } }
2.在DemoApplication類,用@@ServletComponentScan進行引入,
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication @ServletComponentScan public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
3.用上一篇的userInfo.html頁面進行測試
首先是Controller
@Controller public class ModelAndViewController { /** * 注入服務層 */ @Resource private PubUserService userService; @RequestMapping("userinfo") public String userInfo(Model model, HttpServletRequest request){ List<PubUser> list = userService.findAll(); model.addAttribute("user",list); HttpSession session = request.getSession(); session.setAttribute("userKey","userKey"); //向 瀏覽器 存入session return "pubUser/userInfo"; } @ResponseBody @GetMapping("HELLO") public BaseResult hello(){ BaseResult br = new BaseResult(); br.put("name","三國演義"); return br; } }
userKey的值,在頁面進行展示
<span th:text="${session.user}"></span><a th:href="@{HELLO}">userKey,存在不攔截,不存在攔截</a>
如果過濾器生效的話,就不會在在控制檯 列印,
System.out.print("使用者登入key不存在,進行攔截");
4.測試結果