BAEL-3335 example of reading request multiple times. removed spring boot and using spring-webmvc

This commit is contained in:
sumit-bhawsar
2019-10-20 04:01:29 +01:00
parent 30c1f5e192
commit f0742d285d
4 changed files with 18 additions and 27 deletions

View File

@@ -4,6 +4,7 @@ import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -14,9 +15,12 @@ import org.springframework.web.filter.OncePerRequestFilter;
@Order(value = Ordered.HIGHEST_PRECEDENCE)
@Component
@WebFilter(filterName = "ContentCachingFilter", urlPatterns = "/*")
public class ContentCachingFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
System.out.println("IN ContentCachingFilter ");
CachedBodyHttpServletRequest cachedBodyHttpServletRequest = new CachedBodyHttpServletRequest(httpServletRequest);
filterChain.doFilter(cachedBodyHttpServletRequest, httpServletResponse);
}

View File

@@ -1,37 +1,17 @@
package org.baeldung.cachedrequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
/**
* To initialize the WebApplication, Please see
* {@link org.baeldung.spring.config.MainWebAppInitializer}
*/
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = "org.baeldung.cachedrequest")
public class HttpRequestDemoConfig implements WebMvcConfigurer {
public HttpRequestDemoConfig() {
super();
}
// API
@Override
public void addViewControllers(final ViewControllerRegistry registry) {
registry.addViewController("/sample.html");
}
@Bean
public ViewResolver viewResolver() {
final InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".jsp");
return bean;
}
}

View File

@@ -7,6 +7,9 @@ public class Person {
private int age;
public Person() {
}
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;

View File

@@ -1,10 +1,12 @@
package org.baeldung.cachedrequest;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -16,12 +18,14 @@ import org.springframework.web.filter.OncePerRequestFilter;
@Order(Ordered.LOWEST_PRECEDENCE)
@Component
@WebFilter(filterName = "printRequestContentFilter", urlPatterns = "/*")
public class PrintRequestContentFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
System.out.println("IN PrintRequestContentFilter ");
InputStream inputStream = httpServletRequest.getInputStream();
byte[] body = StreamUtils.copyToByteArray(inputStream);
System.out.println("In PrintRequestContentFilter." + " Request body is: " + new String(body));
System.out.println("In PrintRequestContentFilter. Request body is: " + new String(body));
filterChain.doFilter(httpServletRequest, httpServletResponse);
}
}