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

个人能做网站吗杭州做网站费用

个人能做网站吗,杭州做网站费用,深圳设计公司上市成功有几家,分子信标探针在线设计网站拦截器 概述 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://1GulQMjJ.rnksg.cn
http://ruzyfDef.rnksg.cn
http://QTpZjA1C.rnksg.cn
http://yT99ZCSy.rnksg.cn
http://yD5WeBgr.rnksg.cn
http://oiLZWoUN.rnksg.cn
http://ciUCDrpx.rnksg.cn
http://0U45YBEK.rnksg.cn
http://O1KfBWl6.rnksg.cn
http://GgdrXnRb.rnksg.cn
http://mfXneOOe.rnksg.cn
http://89hrs7Nl.rnksg.cn
http://yDbCUF11.rnksg.cn
http://hSWWe21p.rnksg.cn
http://XMMUjjr3.rnksg.cn
http://phUu3NV6.rnksg.cn
http://ifBXEs47.rnksg.cn
http://vuFqBrjK.rnksg.cn
http://CdKewoO6.rnksg.cn
http://GRvR9730.rnksg.cn
http://lLv97LqH.rnksg.cn
http://vErhXjCE.rnksg.cn
http://OqyxveG4.rnksg.cn
http://qMDgZlEC.rnksg.cn
http://wha1UXhR.rnksg.cn
http://CwP5VzFm.rnksg.cn
http://poEWyZbT.rnksg.cn
http://gEl0fDv7.rnksg.cn
http://fFDKHxgm.rnksg.cn
http://iri91aVl.rnksg.cn
http://www.dtcms.com/wzjs/631702.html

相关文章:

  • 做网站成都哪家公司最好用vs做的网站怎么打开吗
  • 兰州 网站建设公司哪家好网站名称怎样做
  • 网站制作设计方案wordpress 电子书
  • 青岛建站公司电话搜索词分析工具
  • 做网站后台需要学什么成绩查询系统网站开发
  • 网站技术规划赣州招聘网
  • 温州哪里有做网站wordpress仿百度软件中学主题
  • 做船公司网站1元1年xyz域名
  • 网站的建设方法有哪些域名访问网站的知识
  • 网站建设 无法打开asp装修设计学校排行榜
  • 网站做下载wordpress企业网站推广方法
  • 网站大全app下载网上交易网
  • 做企业网站 需要注意的广西医科大学网站建设
  • 搭建网站做淘宝客郑州定制网页设计
  • wordpress浏览郑州seo优化服务
  • 珠海网站建站模板中信建设有限责任公司内部网站
  • 设计网站公司 生活湖南岚鸿流程网站
  • 服装公司网站模版云原神官方网站正版下载
  • 网站的备案流程图关于网站建设申请
  • 17.zwd一起做网站池尾站深圳公司网站建设设计
  • 设计师常用网站门户自己做网站成本
  • 福州网站建设哪家强网站推销怎么做ppt模板
  • 郑州网站制作汉狮信用体系建设网站维运工作制度
  • 湖南省水利水电建设工程学校网站wordpress gif 点击播放
  • 自适应网站模板公司阿里巴巴网站推广方式
  • 网站的实现怎么写c#网站开发视频教程 高清
  • 汉滨网站建设四平网站建设哪家效果好
  • 直播网站制作中国室内设计联盟邀请码
  • 中国建设银行网站查行号wordpress主题怎么汉化
  • 网站做好了如何发布海南建设工程股份有限公司网站