攔截器介紹
@Controller
public class loginController {
@RequestMapping("/main")
public String main(){
return "main";
}
@RequestMapping("/goLogin")
public String login(){
return "login";
}
@RequestMapping("/login")
public String login(HttpSession session,String username, String password){
//把用戶的信息存在session中
session.setAttribute("userLoginInfo",username);
return "main";
}
}
<h1><a href="${pageContext.request.contextPath}/goLogin">登入頁面</a></h1>
<h1><a href="${pageContext.request.contextPath}/main">首頁</a></h1>
<%--在web-inf下的所有頁面或資源,只能通過controller或者servlet進行訪問--%>
<h1>登入頁面</h1>
<form action="${pageContext.request.contextPath}/login" method="post">
用戶名:<input type="text" name="username"/>
密碼:<input type="text" name="password"/>
<input type="submit" value="提交">
進入index頁面
Learn More →
點擊登入頁面
Learn More →
輸入完用戶名、密碼後,返回到首頁
Learn More →
成功!
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
//放行:判斷什麼情況下登入
//登入頁面也會放行
if(request.getRequestURI().contains("goLogin")){
return true;
}
//說明我在提交登入
if(request.getRequestURI().contains("login")){
return true;
}
//第一次登入,也是沒有session的
if(session.getAttribute("userLoginInfo") != null){
return true;
}
//判斷什麼情況下沒有登入
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
return false;
}
}
<mvc:interceptor>
<!--包括這個請求下面的所有請求-->
<mvc:mapping path="/user/**"/>
<bean class="com.kuang.config.LoginInterceptor"/>
</mvc:interceptor>
@Controller
@RequestMapping("/user")
public class loginController {
@RequestMapping("/main")
public String main(){
return "main";
}
@RequestMapping("/goLogin")
public String login(){
return "login";
}
@RequestMapping("/login")
public String login(HttpSession session,String username, String password){
//把用戶的信息存在session中
session.setAttribute("userLoginInfo",username);
return "main";
}
}
<h1><a href="${pageContext.request.contextPath}/user/goLogin">登入頁面</a></h1>
<h1><a href="${pageContext.request.contextPath}/user/main">首頁</a></h1>
不經過登入頁面,直接點擊首頁
Learn More →
經過攔截器判斷,因為沒有經過登入頁面,所以不傳到首頁,而是來到登入頁面
Learn More →
@RequestMapping("/goOut")
public String goOut(HttpSession session){
session.removeAttribute("userLoginInfo");
return "main";
}
<h1>首頁</h1>
<span>${username}</span>
<p>
<a href="${pageContext.request.contextPath}/user/goOut">註銷</a>
</p>
進入登入頁面輸入帳密
進入首頁,顯示輸入的帳號,下方有註銷按鈕
點擊後回到首頁,原先的帳號已經被註銷掉消失
回到index,再次點擊首頁
因為帳號已經被註銷,所以被攔截器傳到登入頁面
成功!
先在pom.xml將對應的jar包安裝 <!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <!--servlet-api导入高版本的--> <dependency> <groupId>javax.servlet</groupId>
Apr 19, 2023SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。 过滤器与拦截器的区别:拦截器是AOP思想的具体应用。 过滤器 servlet规范中的一部分,任何java web工程都可以使用 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截 拦截器 拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
Apr 18, 2023程式編寫1 login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <script src="${pageContext.request.contextPath}/statics/js/jquery-3.6.4.js"></script> <script>
Apr 17, 2023語法 jQuery.post(url,data,success(data, textStatus, jqXHR),dataType) 参数 描述 url 必需。规定把请求发送到哪个 URL。 data 可选。映射或字符串值。规定连同请求发送到服务器的数据。
Apr 16, 2023or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up