1.写一个用户等登录方法
package com.itheima.controller;
import com.itheima.domain.User;
import com.itheima.domain.Vo;
import com.sun.deploy.net.HttpResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Date;
@Controller
@RequestMapping("/quick")
public class UserController {
/*
* 用户登录方法
* */
@RequestMapping("/quick16")
public String quick16(String name, HttpServletRequest request) throws IOException {
if(name.equals("admin")){
HttpSession session = request.getSession();
session.setAttribute(name,name);
return "hello";
}else{
return "redirect:/index.jsp";
}
}
}
2.写一个拦截类实现HandlerInterceptor拦截器中的方法
package com.itheima.interceptor;
import org.springframework.lang.Nullable;
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;
public class MyInterceptor3 implements HandlerInterceptor{
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("preHandle.....");
HttpSession session = request.getSession();
String admin = (String) session.getAttribute("admin");
if(admin.equals("admin")){
return true;
}else{
request.getRequestDispatcher("/index.jsp").forward(request,response);
return false;//返回true代表放行 返回false代表不放行
}
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception {
}
}
3.在mvc中配置拦截器拦截所有路径,放过登录路径
<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!--对哪些资源执行拦截操作-->
<mvc:mapping path="/**"/>
<!--配置哪些资源排除拦截操作-->
<mvc:exclude-mapping path="/quick/quick16"/>
<bean class="com.itheima.interceptor.MyInterceptor3"/>
</mvc:interceptor>
</mvc:interceptors>
4说明
1.用户访问http://localhost:8080/quick/quick16?name=admin会成功,之后在访问就没问题
2.用户直接访问其他资源无法访问