当前位置: 首页 > wzjs >正文

揭阳企业建站系统模板北京seo设计公司

揭阳企业建站系统模板,北京seo设计公司,国内网站公安部备案,深圳网站制作招聘拦截器 概述 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。 过滤器与拦截器的区别:拦截器是AOP思想的具体应用。 过滤器 servlet规范中的一部分,任何ja…

拦截器

概述

SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。

过滤器与拦截器的区别:拦截器是AOP思想的具体应用。

过滤器

  • servlet规范中的一部分,任何java web工程都可以使用

  • 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截

拦截器

  • 拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用

  • 拦截器只会拦截访问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的(自带静态资源过滤

structs2也有拦截器,他们之间的区别:

  1. 从拦截级别上看,springMVC是方法级别的拦截,而structs2是类级别的拦截

  2. 数据独立性:springMVC方法间独立,独享request和response

所以struct2的配置文件要大于spring MVC

自定义拦截器

那如何实现拦截器呢?

想要自定义拦截器,必须实现 HandlerInterceptor 接口。

1、新建一个Moudule , springmvc-07-Interceptor , 添加web支持,和我前几期博客配置一致

2、配置web.xml 和 applicationContext.xml 文件

3、编写一个拦截器

 
package com.lyc.Interceptor;​import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;​import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;​public class MyInterceptor implements HandlerInterceptor {@Override//return true表示放行,执行下一个拦截器,false表示拦截public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("================处理前===============");return true;}​@Override//日志public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("================处理后===============");}​@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("================清理===============");}}

在springmvc的配置文件中配置拦截器

 
<!--    拦截器配置--><mvc:interceptors><mvc:interceptor><!--            包括这个请求下面的所有的请求--><mvc:mapping path="/**"/><bean class="com.lyc.Interceptor.MyInterceptor"/></mvc:interceptor></mvc:interceptors>

编写一个Controller,接收请求

package com.lyc.controller;​import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;​@RestControllerpublic class InterceptorController {@GetMapping("/h1")public String test(){System.out.println("这个Controller执行了");return "ok";}}

当返回值为true时

当返回值为false时

Controller请求被拦截了,无法发送到前端

实现需要先登录才可以进入首页

案例代码展示

先编写前端页面

首页:

 <%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><h1>首页</h1><span>${username}</span><p><a href="${pageContext.request.contextPath}/user/goOut">注销</a></p></body></html>

登陆页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><%--在WEB-INF下的所有页面或者资源,只能通过controller,或者servlet进行访问--%><h1>登陆页面</h1><form action="${pageContext.request.contextPath}/user/login" method="post">用户名:<input type="text" name="username" required>密码:<input type="password" name="password" required><input type="submit" value="登陆"></form></body></html>

index.jsp

 <%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><h1><a href="${pageContext.request.contextPath}/user/goLogin">登陆页面</a></h1><h1><a href="${pageContext.request.contextPath}/user/main">首页</a></h1></body></html>

在编写拦截器时,思考,要求没有登陆时点击首页会跳到登陆页面,登陆后跳转到首页,再刷新也可以进首页,注销后需要再进入登陆页面

由此得出

LoginInterceptor.javapackage com.lyc.Interceptor;​import org.springframework.web.servlet.HandlerInterceptor;​import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;​public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();//在登陆页面上也需要放行if (request.getRequestURI().contains("goLogin")){return true;}// 判断用户是否登录//第一次登陆,也是没有session的if (request.getRequestURI().contains("login")){return true;}if (session.getAttribute("loginInfo")!= null){return true;}// 重定向到登录页面response.sendRedirect("http://localhost:8023/springmvc_07_intercepter_Web_exploded/user/goLogin");return false;}}

不要忘记在配置文件中注册拦截器的bean

  <mvc:interceptors><mvc:interceptor><!--            包括这个请求下面的所有的请求--><mvc:mapping path="/**"/><bean class="com.lyc.Interceptor.MyInterceptor"/></mvc:interceptor><mvc:interceptor><mvc:mapping path="/user/**"/><bean class="com.lyc.Interceptor.LoginInterceptor"/></mvc:interceptor></mvc:interceptors>

最后写Controller类

LoginController.java

 
package com.lyc.controller;​import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;​import javax.servlet.http.HttpSession;​@Controller@RequestMapping("/user")public class LoginController {@RequestMapping("/goLogin")public String login(){return "login";}@RequestMapping("/login")public String login(HttpSession session, String username, String password, Model model){//把用户的信息存在session中System.out.println("username===>"+username+"password===>"+password);session.setAttribute("loginInfo",username);model.addAttribute("username",username);return "main";}@RequestMapping("/main")public String main1(){return "main";}@RequestMapping("/goOut")public String goOut(HttpSession session){session.removeAttribute("loginInfo");return "main";}}

效果展示:

先进入

点击首页:

 

填写信息,点击登录按钮:

 

再次回到index.jsp:

再次点击首页,这次直接进入

 

点击注销方法

 

需要点击两次注销方法

第一次点击注销方法,先过的拦截器,还存在session,过了拦截器,再注销session,到达了main.jsp

第二次点击注销方法:session在第一次点击已经移除,方法被拦截,返回login页面

以上就是拦截器的简单应用,希望对大家有所帮助!!!

http://www.dtcms.com/wzjs/141116.html

相关文章:

  • 树立网站整体风格深圳网络推广培训学校
  • 防城港网站设计域名访问网站
  • 高端网站开发有哪些弹窗广告最多的网站
  • 扬中人上海搜索优化推广哪家强
  • 电子商务网站建设教程试卷软文网官网
  • 各大网站图片刷关键词怎么刷
  • 调用其他网站php页面百度入驻绍兴
  • 音乐分享网站源码东莞优化排名公司
  • 打开网站代码怎么写色盲测试卡
  • 那个网站做国外售货网站友情链接自动上链
  • 文创产品设计方案模板北京百度推广优化公司
  • 获奖网站设计网址链接查询
  • 日本二手手表网站青岛seo公司
  • 做服装网站需要什么seo从零开始到精通200讲解
  • 电子商务系统网站设计电话销售如何快速吸引客户
  • 手机 网站建设网站建站模板
  • 站长统计导航窗口百度推广一个点击多少钱
  • 网站怎么做百度优化成都关键词seo推广电话
  • 宝鸡企业网站建设免费的seo优化工具
  • 洛阳青峰网络公司做网站短视频营销方式有哪些
  • 禁用软件app大全长沙百度推广优化排名
  • 河东手机网站建设保定百度首页优化
  • 扁平风格企业网站源码推广百度百科
  • 网站如何做抖音推广连云港seo优化
  • 深圳网站seo优化山西网络推广
  • 网站开发人员结构软文写作经验是什么
  • 青团智慧团建登录入口深圳市企业网站seo营销工具
  • 阳明拍卖公司网站网络营销的核心是什么
  • 专做老酒的网站搜索引擎优化的意思
  • 福田做网站的绍兴seo排名外包