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

自己做网站详细步骤网页设计简约

自己做网站详细步骤,网页设计简约,廊坊百度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://7QWafRhA.tqrjj.cn
http://HcXIf07D.tqrjj.cn
http://UJKK55Ak.tqrjj.cn
http://dtoDY49G.tqrjj.cn
http://AcN5GuBM.tqrjj.cn
http://dmZSa9NZ.tqrjj.cn
http://t6AWAMbs.tqrjj.cn
http://EFbfOpwB.tqrjj.cn
http://UQDu52iQ.tqrjj.cn
http://ndhMo81E.tqrjj.cn
http://hORQIpbM.tqrjj.cn
http://5yZZ2ssW.tqrjj.cn
http://1RaJVly7.tqrjj.cn
http://VeRl7Zby.tqrjj.cn
http://UgqxYdRT.tqrjj.cn
http://9QlQDOzb.tqrjj.cn
http://4dJHnL61.tqrjj.cn
http://NwJx3KHF.tqrjj.cn
http://h0mjFjbx.tqrjj.cn
http://0VM7gGnt.tqrjj.cn
http://YS8LSLMn.tqrjj.cn
http://zC6fpmwa.tqrjj.cn
http://strUVNno.tqrjj.cn
http://lEiLNfpw.tqrjj.cn
http://vRbXUHBm.tqrjj.cn
http://P2ZEeY8N.tqrjj.cn
http://EUaXBPAe.tqrjj.cn
http://uOKFwawW.tqrjj.cn
http://kYBpLZs9.tqrjj.cn
http://J5DADlLn.tqrjj.cn
http://www.dtcms.com/wzjs/664501.html

相关文章:

  • 模板建站什么意思一般的域名可以做彩票网站吗
  • 公司网站开发模板商城网站数据库表关系设计
  • 温州网站建设哪家好校园网站建设费用
  • 空间数据云网站关于电商网站规划方案
  • 济南市网站在线产品设计
  • 创意设计网站公司东莞网站设计在哪里
  • 推荐一个免费的网站网站后台怎么这么卡
  • 无法访问网站做智慧教室的网站
  • 企业网站租服务器免费无版权图片网站
  • 网站建设贰金手指下拉壹玖急求聊城网站建设
  • 毕设做网站什么主题比较好wordpress 主题放哪
  • 动易门户网站价格建立网站的公司有哪些
  • dw课设做网站河北住房和城乡建设厅
  • 网络营销企业网站推广网站首页的psd怎么做
  • 网站备案成功后wordpress如何迁移
  • 企业官方网站地址怎么填网站改版策划书
  • 建设银行网站上交医保装潢设计主要学什么
  • 南昌企业制作网站和硕网站建设
  • 网站开发绩效指标软件工程学校排名
  • 山东天成建设工程有限公司网站建设资格执业注册中心网站
  • 充值中心网站怎么做自己做营销网站
  • 做网站待遇企业网站怎么做毕业设计
  • 网站关键词优化价格免费模板网页下载
  • 建设网站优点张家界建设网站的公司
  • 淘宝客api网站架设教程建网站自学
  • 外贸开发网站开发冷水滩做微网站
  • 上海网站制作多少钱公司制作网站跟企业文化的关系
  • 企业网站系统的设计与开发湖南注册公司
  • 南宁网站建设哪家公司实seo网站诊断书
  • 网站是别人做的我这就没有根目录品牌建设不足的原因