springboot使用jsp,过滤器,拦截器(拦截器与过滤器区别重点

jsp使用配置

  创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部署) web(远程调用,服务支持)

在创建的项目的pom.xml的<dependencies>增加jsp需要的依赖

  1. <!--整合jsp,需要的依赖-->
  2. <dependency>
  3. <groupId>org.apache.tomcat.embed</groupId>
  4. <artifactId>tomcat-embed-jasper</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>javax.servlet</groupId>
  8. <artifactId>javax.servlet-api</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>javax.servlet</groupId>
  12. <artifactId>jstl</artifactId>
  13. </dependency>


  在application.yml(yml格式的好用,把properties改了)文件中,增加视图解析

  1. server:
  2. # 设置端口为80,访问时可以省略
  3. port: 80
  4. # 视图解析器
  5. spring:
  6. mvc:
  7. view:
  8. prefix: /
  9. suffix: .jsp

  标记webapp 。在src/main下建立 webapp目录 ,然后在Project Structure中,标记为idea识别的webapp

src/main下 新建 Directory 为webapp ,在project structure中 

在建立的出来的右侧,进行一下操作。apply 应用之后ok退出。如果有 Web,但是右侧下半部是空的,直接点击右侧下半部的+,指定自己创建的文件即可

到此,建立的jsp文件放到这个webapp目录下,启动项目在浏览器直接访问就可以定位到jsp资源。

修改一下配置文件application.properties

  1. server:
  2. # 设置端口为80,访问时可以省略
  3. port: 80
  4. servlet:
  5. context-path: /
  6. # 视图解析器
  7. spring:
  8. mvc:
  9. view:
  10. prefix: /
  11. suffix: .jsp

springboot使用过滤器

    

首先自己创建一个过滤器

  1. package com.xiaoeyu.springboot4.filter;
  2.  
  3. import javax.servlet.*;
  4. import java.io.IOException;
  5.  
  6. //通过实现Filter来自定义过滤器
  7. public class Myfilter implements Filter {
  8. /*
  9. * filter是servelet规范规定的,只能用于web程序,是servlet容器比如Tomcat支持的,只在请求进入servlet之前,和出来以后起作用
  10. * 拦截器:既可以在web程序,也可以Application,Swing程序中,是spring框架支持的,是spring的一个组件,可以使用spring里的任何资源,对象
  11. * 例如 Service对象,数据源,事务管理等通过IOC注入给拦截器即可。拦截器能够深入到方法前后,异常抛出前后,有更大的弹性
  12. * */
  13. @Override
  14. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  15. System.out.println("doFilter:在请求到达servlet之前执行过滤器");
  16. filterChain.doFilter(servletRequest, servletResponse);
  17. System.out.println("doFilter:在请求离开servlet之后离开Tomcat容器之前执行");
  18. }
  19. }

将过滤器进行注册,就是在springboot中使用上

  1. package com.xiaoeyu.springboot4.config;
  2.  
  3. import com.xiaoeyu.springboot4.filter.Myfilter;
  4. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. //标注是一个配置类,等价于配置文件.xml,springboot框架会在启动的过程中读取该配置中@Bean注解的方法,将其返回值注入到IOC容器中
  8. @Configuration
  9. public class FilterConfig {
  10.  
  11. @Bean //等同于在spring配置文件中的<bean>的配置,会把方法的返回值对象,注入到IOC容器中
  12. public FilterRegistrationBean filterRegistrationBean() {
  13. FilterRegistrationBean bean = new FilterRegistrationBean();
  14. bean.setFilter(new Myfilter());//用什么过滤器进行拦截即注册过滤器
  15. bean.addUrlPatterns("/*");//配置过滤器拦截的路径
  16. bean.setOrder(1);//设置启动顺序,正数,越小越优先
  17. return bean;
  18. }
  19. }

springboot使用拦截器

    

自定义个拦截器

  1. package com.xiaoeyu.springboot4.interceptor;
  2.  
  3. import org.springframework.web.servlet.HandlerInterceptor;
  4. import org.springframework.web.servlet.ModelAndView;
  5.  
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8.  
  9. //拦截器,需要访问Controller中的方法才会触发
  10. public class Myinterceptor implements HandlerInterceptor {
  11.  
  12. @Override
  13. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  14. System.out.println("preHandle:在进入拦截器,执行Controller之前调用");
  15. //返回值为false请求原路返回,但是前台显示的200状态码,任何请求都可以成功,到这里以后不在往下,原路返回
  16. return true;
  17. }
  18.  
  19. @Override
  20. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  21. System.out.println("postHandle:执行完Controller逻辑,在Controller的return ModelAndView 之前执行,可以操控ModelAndView的数据");
  22. modelAndView.addObject("name", "postHandle:修改姓名JRL");
  23. System.out.println("postHandle:修改了ModelAndView中的name值");
  24. }
  25.  
  26. @Override
  27. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  28. System.out.println("afterCompletion:Controller的Return之后,Filter返回给客户端之前(应该是FilterAfter方法执行前)");
  29.  
  30. }
  31. }

将拦截器加载进去,在springboot能起作用

  1. package com.xiaoeyu.springboot4.config;
  2.  
  3. import com.xiaoeyu.springboot4.interceptor.Myinterceptor;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  6. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  7. //告知springboot这是一个配置类,在实现WebMvcConfigurer的对象中调用addInterceptors方法。把添加的拦截器注入到IOC容器
  8. @Configuration
  9. public class InterceptorConfig implements WebMvcConfigurer {
  10. @Override
  11. public void addInterceptors(InterceptorRegistry registry) {
  12. registry.addInterceptor(new Myinterceptor()).addPathPatterns("/*");//拦截的路径
  13. }
  14. }

通过Controller在触发拦截器。访问静态资源不到不触发拦截器

  1. package com.xiaoeyu.springboot4.controller;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.servlet.ModelAndView;
  6.  
  7. @Controller
  8. public class HelloController {
  9. /*从前台通过url localhost/hello?name=冯永康
  10. 传过来一个参数,并把它打印且放到ModelAndView中,在拦截器中对name进行修改,并跳转到jsp页面,查看效果*/
  11. @RequestMapping("/hello")
  12. public ModelAndView hello(String name, ModelAndView mv) {
  13. System.out.println("name:" + name);
  14. mv.setViewName("test");
  15. mv.addObject("name", name);
  16. return mv;
  17. }
  18. }

这是用于方便显示数据的 test.jsp  直接返回字符换也可以

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. 我是一个jsp页面<br>
  8. 获取ModelAndView中的数据 name=${name}<br>
  9. </body>
  10. </html>

springboot jsp,过滤器,拦截器的更多相关文章

  1. JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用

    JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...

  2. SpringBoot如何添加拦截器

    在web开发的过程中,为了实现登录权限验证,我们往往需要添加一个拦截器在用户的的请求到达controller层的时候实现登录验证,那么SpringBoot如何添加拦截器呢? 步骤如下: 1.继承Web ...

  3. MVC中的过滤器/拦截器怎么写

    创建一个AuthenticateFilterAttribute(即过滤器/拦截器) 引用System.Web.Mvc; public class AuthenticateFilterAttribute ...

  4. 在springboot中使用拦截器

    在springMVC中可以实现拦截器,是通过实现HandlerInterceptor接口,然后在springmvc-web.xml中配置就可以使用拦截器了.在springboot中拦截器也是一样的思想 ...

  5. Springboot + redis + 注解 + 拦截器来实现接口幂等性校验

    Springboot + redis + 注解 + 拦截器来实现接口幂等性校验   1. SpringBoot 整合篇 2. 手写一套迷你版HTTP服务器 3. 记住:永远不要在MySQL中使用UTF ...

  6. springmvc以及springboot中的拦截器配置

    拦截器两种实现   如果不同的controller中都需要拦截器,不能使用相同的拦截器,因为拦截器不能跨controller,这个时候只能为不同的controller配置不同的拦截器,每一个拦截器只能 ...

  7. springboot中使用拦截器、监听器、过滤器

     拦截器.过滤器.监听器在web项目中很常见,这里对springboot中怎么去使用做一个总结. 1. 拦截器(Interceptor)   我们需要对一个类实现HandlerInterceptor接 ...

  8. SpringBoot 过滤器, 拦截器, 监听器 对比及使用场景

    1. 过滤器 (实现 javax.servlet.Filter 接口) ① 过滤器是在web应用启动的时候初始化一次, 在web应用停止的时候销毁. ② 可以对请求的URL进行过滤, 对敏感词过滤, ...

  9. 过滤器 拦截器 登录login实例

    当请求来的时候,首先经过拦截器/过滤器,在经过一系列拦截器/拦截器处理后,再由再根据URL找到Servlet.执行servlet中的代码. 过滤器:按照过滤的对象类型的不同,可分为按资源名过滤和按请求 ...

随机推荐

  1. monkey学习总结笔记

    一.什么是monkey? Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...

  2. docker方式部署elk日志搜索平台

    Docker部署ELKF操作文档 前提介绍 1.之前搭建elk+f+k使用原生系统软件安装方式,由于docker镜像日趋成熟,docker官网和elastic官网都有相关镜像和各自安装文档可供参考,各 ...

  3. LoRaWAN调试踩坑心得(一)

    先说两句 在调试和移植的过程中 我们经常想用节点去抓上行包 或者去抓下行包 但在抓取的过程中发现,上行包抓取不到到,或是下行包抓取不到,或者是两个都抓取不到,觉得非常的诡异.明明接收频点.BW和SF都 ...

  4. 求平方根算法 Heron’s algorithm

    求平方根问题 概述:本文介绍一个古老但是高效的求平方根的算法及其python实现,分析它为什么可以快速求解,并说明它为何就是牛顿迭代法的特例. 问题:求一个正实数的平方根. 给定正实数 \(m\),如 ...

  5. net core WebApi——文件分片下载

    目录 前言 开始 测试 小结 @ 前言 上一篇net core WebApi--文件分片上传与跨域请求处理介绍完文件的上传操作,本来是打算紧接着写文件下载,中间让形形色色的事给耽误的,今天还是抽个空整 ...

  6. TomatoLog-1.1.0实现ILoggerFactory

    TomatoLog TomatoLog 是一个基于 .NETCore 平台的产品. The TomatoLog 是一个中间件,包含客户端.服务端,非常容易使用和部署. 客户端实现了ILoggerFac ...

  7. odoo模板中的t-标签用法

    在OpenERP中,通过QWeb来对模板进行渲染后加载到浏览器中,而模板中有许多的标签来定制各种需求变化,在这里记录学习过程中碰到的标签定义,以方便查询. 模板中的标签统一都是以"t-&qu ...

  8. MySQL的count(*)的优化,获取千万级数据表的总行数[转]

    一.前言 这个问题是今天朋友提出来的,关于查询一个1200w的数据表的总行数,用count(*)的速度一直提不上去.找了很多优化方案,最后另辟蹊径,选择了用explain来获取总行数. 二.关于cou ...

  9. Oracle性能图表工具:awrcrt.sql 介绍,更新到了2.14 (2018年3月31日更新)

    2018-03-31 awrcrt更新到了2.14版本, 下载地址为 https://pan.baidu.com/s/1IlYVrBJuZWwOljomVfta5g https://pan.baidu ...

  10. vue实现对语言的切换,结合vue-il8n。

    1.安装vue-i18n: npm install vue-i18n 如果npm长时间无反应,或安装失败,可以换成淘宝镜像安装: cnpm install vue-i18n 2.在main.js中引用 ...