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

一
创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部署) web(远程调用,服务支持)
在创建的项目的pom.xml的<dependencies>增加jsp需要的依赖
<!--整合jsp,需要的依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
二
在application.yml(yml格式的好用,把properties改了)文件中,增加视图解析
server:
# 设置端口为80,访问时可以省略
port: 80
# 视图解析器
spring:
mvc:
view:
prefix: /
suffix: .jsp
三
标记webapp 。在src/main下建立 webapp目录 ,然后在Project Structure中,标记为idea识别的webapp
src/main下 新建 Directory 为webapp ,在project structure中 
在建立的出来的右侧,进行一下操作。apply 应用之后ok退出。如果有 Web,但是右侧下半部是空的,直接点击右侧下半部的+,指定自己创建的文件即可

到此,建立的jsp文件放到这个webapp目录下,启动项目在浏览器直接访问就可以定位到jsp资源。
修改一下配置文件application.properties
server:
# 设置端口为80,访问时可以省略
port: 80
servlet:
context-path: /
# 视图解析器
spring:
mvc:
view:
prefix: /
suffix: .jsp
springboot使用过滤器

首先自己创建一个过滤器
package com.xiaoeyu.springboot4.filter; import javax.servlet.*;
import java.io.IOException; //通过实现Filter来自定义过滤器
public class Myfilter implements Filter {
/*
* filter是servelet规范规定的,只能用于web程序,是servlet容器比如Tomcat支持的,只在请求进入servlet之前,和出来以后起作用
* 拦截器:既可以在web程序,也可以Application,Swing程序中,是spring框架支持的,是spring的一个组件,可以使用spring里的任何资源,对象
* 例如 Service对象,数据源,事务管理等通过IOC注入给拦截器即可。拦截器能够深入到方法前后,异常抛出前后,有更大的弹性
* */
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("doFilter:在请求到达servlet之前执行过滤器");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("doFilter:在请求离开servlet之后离开Tomcat容器之前执行");
}
}
将过滤器进行注册,就是在springboot中使用上
package com.xiaoeyu.springboot4.config; import com.xiaoeyu.springboot4.filter.Myfilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//标注是一个配置类,等价于配置文件.xml,springboot框架会在启动的过程中读取该配置中@Bean注解的方法,将其返回值注入到IOC容器中
@Configuration
public class FilterConfig { @Bean //等同于在spring配置文件中的<bean>的配置,会把方法的返回值对象,注入到IOC容器中
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new Myfilter());//用什么过滤器进行拦截即注册过滤器
bean.addUrlPatterns("/*");//配置过滤器拦截的路径
bean.setOrder(1);//设置启动顺序,正数,越小越优先
return bean;
}
}
springboot使用拦截器

自定义个拦截器
package com.xiaoeyu.springboot4.interceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; //拦截器,需要访问Controller中的方法才会触发
public class Myinterceptor implements HandlerInterceptor { @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle:在进入拦截器,执行Controller之前调用");
//返回值为false请求原路返回,但是前台显示的200状态码,任何请求都可以成功,到这里以后不在往下,原路返回
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle:执行完Controller逻辑,在Controller的return ModelAndView 之前执行,可以操控ModelAndView的数据");
modelAndView.addObject("name", "postHandle:修改姓名JRL");
System.out.println("postHandle:修改了ModelAndView中的name值");
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion:Controller的Return之后,Filter返回给客户端之前(应该是FilterAfter方法执行前)"); }
}
将拦截器加载进去,在springboot能起作用
package com.xiaoeyu.springboot4.config; import com.xiaoeyu.springboot4.interceptor.Myinterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//告知springboot这是一个配置类,在实现WebMvcConfigurer的对象中调用addInterceptors方法。把添加的拦截器注入到IOC容器
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new Myinterceptor()).addPathPatterns("/*");//拦截的路径
}
}
通过Controller在触发拦截器。访问静态资源不到不触发拦截器
package com.xiaoeyu.springboot4.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
public class HelloController {
/*从前台通过url localhost/hello?name=冯永康
传过来一个参数,并把它打印且放到ModelAndView中,在拦截器中对name进行修改,并跳转到jsp页面,查看效果*/
@RequestMapping("/hello")
public ModelAndView hello(String name, ModelAndView mv) {
System.out.println("name:" + name);
mv.setViewName("test");
mv.addObject("name", name);
return mv;
}
}
这是用于方便显示数据的 test.jsp 直接返回字符换也可以
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
我是一个jsp页面<br>
获取ModelAndView中的数据 name=${name}<br>
</body>
</html>
springboot jsp,过滤器,拦截器的更多相关文章
- JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用
JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...
- SpringBoot如何添加拦截器
在web开发的过程中,为了实现登录权限验证,我们往往需要添加一个拦截器在用户的的请求到达controller层的时候实现登录验证,那么SpringBoot如何添加拦截器呢? 步骤如下: 1.继承Web ...
- MVC中的过滤器/拦截器怎么写
创建一个AuthenticateFilterAttribute(即过滤器/拦截器) 引用System.Web.Mvc; public class AuthenticateFilterAttribute ...
- 在springboot中使用拦截器
在springMVC中可以实现拦截器,是通过实现HandlerInterceptor接口,然后在springmvc-web.xml中配置就可以使用拦截器了.在springboot中拦截器也是一样的思想 ...
- Springboot + redis + 注解 + 拦截器来实现接口幂等性校验
Springboot + redis + 注解 + 拦截器来实现接口幂等性校验 1. SpringBoot 整合篇 2. 手写一套迷你版HTTP服务器 3. 记住:永远不要在MySQL中使用UTF ...
- springmvc以及springboot中的拦截器配置
拦截器两种实现 如果不同的controller中都需要拦截器,不能使用相同的拦截器,因为拦截器不能跨controller,这个时候只能为不同的controller配置不同的拦截器,每一个拦截器只能 ...
- springboot中使用拦截器、监听器、过滤器
拦截器.过滤器.监听器在web项目中很常见,这里对springboot中怎么去使用做一个总结. 1. 拦截器(Interceptor) 我们需要对一个类实现HandlerInterceptor接 ...
- SpringBoot 过滤器, 拦截器, 监听器 对比及使用场景
1. 过滤器 (实现 javax.servlet.Filter 接口) ① 过滤器是在web应用启动的时候初始化一次, 在web应用停止的时候销毁. ② 可以对请求的URL进行过滤, 对敏感词过滤, ...
- 过滤器 拦截器 登录login实例
当请求来的时候,首先经过拦截器/过滤器,在经过一系列拦截器/拦截器处理后,再由再根据URL找到Servlet.执行servlet中的代码. 过滤器:按照过滤的对象类型的不同,可分为按资源名过滤和按请求 ...
随机推荐
- JVM(十二):方法调用
JVM(十二):方法调用 在 JVM(七):JVM内存结构 中,我们说到了方法执行在何种内存结构上执行:Java 方法活动在虚拟机栈中的栈帧上,栈帧的具体结构在内存结构中已经详细讲解过了,下面就让我们 ...
- 线上ZK问题排查
问题描述 测试环境ZK集群的三个节点中zk1状态虽然是follower,启动也能正常启动(通过telnet也能telnet 2181端口); 无法通过zk客户端去连接2181端口,状态一致是CONNE ...
- .net测试篇之Moq行为配置
系列目录 我们前面说过.Moq在创建模拟对象的时候,简单对象赋值默认值,引用对象赋值为null,但是有些时候接口里面还包含另一个接口对象,我们知道Moq是可以模拟一个接口对象的,我们可以通过配置让Mo ...
- Java中时间格式处理,指定N天/小时等之后的时间
1)根据当前时间,获取具体的时刻的时间 N天前 M小时之前 可用 new Date().getTime() - 24 * 60 * 60 * 1000*N[N天之前]的方法来获取处理时间之后的具体的值 ...
- LiteORM-For-DotNet,我的第一个开源库
这是一个DotNet轻量级ORM框架,解决C#.Net开发过程中重复繁琐的数据库CURD操作. 前言 因工作中接手的.net项目,源码里面都用了动软代码生成的源码做为数据库操作类库.其中,有些根本就没 ...
- 09 Scrapy框架在爬虫中的使用
一.简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.它集成高性能异步下载,队列,分布式,解析,持久化等. Scrapy 是基于twisted框架开发而来,twisted是一个 ...
- CF #535 (Div. 3) E2 Array and Segments (Hard version) 利用线段树进行区间转移
传送门 题意: 有m个区间,n个a[ i ] , 选择若干个区间,使得整个数组中的最大值和最小值的差值最小.n<=1e5,m<=300; 思路: 可以知道每个i,如果一个区间包含这个 ...
- 求解区间问题的三种做法的区别 线段树、树状数组、RMQ
树状数组主要用于计算区间的和,在区间元素修改值的时候能够快速修改而不是以O(n)的复杂度进行修改: 线段树是把区间以树的形式分拆为若干个小区间,每个小区间存的都有一个值(树状数组的元素存的是区间值), ...
- hdu5491 The Next 模拟
Let LL denote the number of 1s in integer DD’s binary representation. Given two integers S1S1 and S2 ...
- Convolution model by吴恩达
# GRADED FUNCTION: model def model(X_train, Y_train, X_test, Y_test, learning_rate = 0.009, num_epoc ...