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

塘沽做网站的公司网站seo策划方案案例分析

塘沽做网站的公司,网站seo策划方案案例分析,asp.net做报名网站,怎么查看网站根目录目录 一、拦截器概念 二、拦截器和过滤器的区别 三、拦截器的定义和使用 拦截器的定义:以实现HandleInterceptor接口为例 注册拦截器及其配置 测试自定义拦截器 运行测试 控制台输出成功 四、实例测试 需求:验证用户是否登录 (认证用户) 编写…

目录

一、拦截器概念

二、拦截器和过滤器的区别

三、拦截器的定义和使用

拦截器的定义:以实现HandleInterceptor接口为例

注册拦截器及其配置

测试自定义拦截器

运行测试

控制台输出成功

四、实例测试

需求:验证用户是否登录 (认证用户)

编写一个登陆页面  login.jsp

编写一个Controller处理请求

编写一个登陆成功的页面 success.jsp

在 index 页面上测试跳转!启动Tomcat 测试,此时未登录也可以进入主页!

编写用户登录拦截器

在Springmvc的配置文件中注册拦截器

启动Tomcat进行测试

五、拦截器执行流程

一、拦截器概念

        SpringMVC中的拦截器(interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并做相应的处理

在实际项目中会经常使用到拦截器,例如:

  • 在购物网站中通过拦截器可以拦截未登录的用户,禁止其购买商品
  • 使用它来验证已登录用户是否有相应的操作权限(即权限验证)
  • 记录请求信息的日志等应用

        所谓拦截器,就是能够在进行某个操作之前拦截请求,如果请求符合条件就允许在往下执行。比如说,海关就是一个拦截器,他拦截进出口的货物,如果货物满足进出口条件,则放行,否则就拦截,退回处理。

二、拦截器和过滤器的区别

拦截器和过滤器的功能比较类似,但是有区别:

  • 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。
  • 拦截器是SpringMVC框架独有的。
  • 过滤器配置了/*,可以拦截任何资源。
  • 拦截器只会对控制器中的方法进行拦截。

三、拦截器的定义和使用

        在SpringMVC中要使用拦截器,就需要对拦截器类进行定义和配置,通常拦截器类可以通过两种方式来定义。

  1. 第一种通过实现HandleInterceptor接口,或者继承HandleInterceptor接口的实现类HandleInterceptorAdapter来定义;
  2. 第二种通过实现WebRequestInterceptor接口,或继承WebRequestInterceptor接口的实现类来定义。

!!!拦截器也是AOP思想的一种实现方式!!!

拦截器的定义:以实现HandleInterceptor接口为例

public class MyInterceptor implements HandlerInterceptor {//在请求处理的方法之前执行//如果返回true执行下一个拦截器//如果返回false就不执行下一个拦截器public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {System.out.println("------------before------------");return true;}//在请求处理方法执行之后执行public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {System.out.println("------------after------------");}//在dispatcherServlet处理后执行,做清理工作.public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {System.out.println("------------clear------------");}
}

从以上可以看出,自定义的拦截器类实现了HandlerInterceptor接口,并且实现了接口中的三个方法。对这三个方法解释如下:

preHandle()方法

该方法会在控制器方法前执行,其返回值表示是否中断后续操作。当返回值为true时,表示继续向下执行;当返回值为false时,会中断后续的所有操作(包括调用下一个拦截器和控制器类中的方法执行等)。

postHandle()方法

该方法会在控制器方法调用之后,且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改。

afterCompletion()方法

该方法会在整个请求完成,即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作。

注册拦截器及其配置

    <mvc:interceptors><mvc:interceptor><!--/** 包括路径及其子路径--><!--/admin/* 拦截的是/admin/add等等这种 , /admin/add/user不会被拦截--><!--/admin/** 拦截的是/admin/下的所有--><mvc:mapping path="/**"/><!--bean配置的就是拦截器--><bean class="com.zlh.interceptor.MyInterceptor"/></mvc:interceptor></mvc:interceptors>

测试自定义拦截器

@RestController
public class InterceptorController {@RequestMapping("/interceptor")public String testFunction() {System.out.println("Test MyInterceptor Success");return "hello";}
}

运行测试

控制台输出成功

四、实例测试

需求:验证用户是否登录 (认证用户)

实现思路

  1. 有一个登陆页面,需要写一个controller访问页面。
  2. 登陆页面有一提交表单的动作。需要在controller中处理。将用户名写入session中。返回登陆成功。
  3. 拦截用户请求,判断用户是否登陆。如果用户已经登陆。放行, 如果用户未登陆,跳转到登陆页面

编写一个登陆页面  login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head><h1>Longin Page</h1>
<hr><body>
<form action="/user/login">UserName:<input type="text" name="username"> <br>Password:<input type="password" name="pwd"> <br><input type="submit" value="提交">
</form>
</body>
</html>

编写一个Controller处理请求

package com.zlh.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpSession;@Controller
@RequestMapping("/user")
public class UserController {//跳转到登陆页面@RequestMapping("/jumpLogin")public String jumpLogin() throws Exception {return "login";}//跳转到成功页面@RequestMapping("/jumpSuccess")public String jumpSuccess() throws Exception {return "success";}//登陆提交@RequestMapping("/login")public String login(HttpSession session, String username, String pwd) throws Exception {// 向session记录用户身份信息System.out.println("接收前端==="+username);session.setAttribute("user", username);return "success";}//退出登陆@RequestMapping("logout")public String logout(HttpSession session) throws Exception {// session 过期session.invalidate();return "login";}
}

编写一个登陆成功的页面 success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><h1>首页</h1>
<hr>
<span>${user} Login Success</span>
<br/>
<a href="/user/logout">注销</a>
</body>
</html>

在 index 页面上测试跳转!启动Tomcat 测试,此时未登录也可以进入主页!

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>首页</title>
</head>
<body>
<hr>
<%--登录--%>
<a href="/user/jumpLogin">登录页面</a>
<br/>
<a href="/user/jumpSuccess">首页</a>
</body>
</html>

编写用户登录拦截器

package com.zlh.interceptor;import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;public class LoginInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {// 如果是登陆页面则放行if (request.getRequestURI().contains("login")) {return true;}//获取SessionHttpSession session = request.getSession();// 如果用户已登陆也放行if(session.getAttribute("user") != null) {return true;}// 用户没有登陆跳转到登陆页面request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);return false;}
}

在Springmvc的配置文件中注册拦截器

        如果上面已经注册了拦截器,需要删除其它拦截器或将映射路径改成具体路径,否则拦截器会失效

    <mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean id="loginInterceptor" class="com.zlh.interceptor.LoginInterceptor"/></mvc:interceptor></mvc:interceptors>

配置说明:

  • mvc:mapping:指定处理的请求路径。
  • mvc:exclude-mapping:指定排除的请求路径。
  • bean:指定应用到给定路径的拦截器 bean。

启动Tomcat进行测试

初始页面

点击首页,由于未进行登录,需要先进行登录才能访问首页

登录成功,进入首页成功

!!!此时再次进入首页就不需要进行登录了,注销后需要重新登录,拦截器设置成功!!!

五、拦截器执行流程

不包含拦截器的情况下,DispatcherServlet 处理请求的流程可以简化如下。

添加了拦截器做登录检查后,DispatcherServlet 请求处理的流程可以简化如下。

至此鸣谢:Spring MVC 系列之拦截器 Interceptor 最全总结_springmvc interceptor-CSDN博客

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

相关文章:

  • 温州纪委作风建设网站外贸推广具体是做什么
  • 静态网站设计南京疫情最新消息
  • 加强住房公积金网站建设四川seo技术培训
  • 迅速建设企业网站关键词优化seo外包
  • 黄骅做网站_黄骅昊信科技|黄骅网站|黄骅网站开发|黄骅微信|黄骅seo外链工具源码
  • 微信网站的链接标志图片如何做促销活动推广方法有哪些
  • 网站倒计时代码优化近义词
  • 专业做传奇网站解析南宁seo服务公司
  • 高端网站制作平台百度搜索引擎推广
  • 如何选择宜昌网站建设沧州seo包年优化软件排名
  • 网上购物网站大全收录查询 站长工具
  • 一个域名做两个网站可以么深圳网站建设的公司
  • 免费炫酷网站模板seo超级外链工具
  • 云南网站做的好的公司哪家好新闻类软文营销案例
  • 专门做会议的网站手机百度浏览器
  • 青岛做物流网站淘宝网店代运营正规公司
  • 公安备案网站首页企业宣传文案
  • 公司网站百度小程序开发重庆seo整站优化设置
  • dedecms手机网站制作如何做友情链接
  • 安装网站到服务器怎样申请网站
  • 新乡网站制作接广告的平台
  • 网站功能优化的方法网络营销的流程和方法
  • 湛江做网站的网站京津冀协同发展
  • 如何做电影网站赚钱吗人工智能培训师
  • 做维修广告效最好是哪个网站吗优化大师免安装版
  • 可以做网站的公司有哪些广州官方新闻
  • 产品经理兼职做网站报酬网站检测中心
  • 网站首页设计多少钱企业邮箱如何申请注册
  • 建个网站要多少钱珠海网站建设
  • 巩义专业网站建设公司软文营销推广