From ca77071f6b3fc79093f4913a2ed25572369920d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=A3=E5=B2=A1=E4=BD=91=E5=93=89?= Date: Mon, 22 Jan 2018 18:26:01 +0900 Subject: [PATCH 1/6] =?UTF-8?q?chaper6=E3=81=AEtime-for-action-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++ .../config/WebApplicationContextConfig.java | 6 +++ .../ProcessingTimeLogInterceptor.java | 38 +++++++++++++++++++ src/main/resources/log4j.properties | 14 +++++++ 4 files changed, 64 insertions(+) create mode 100644 src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java create mode 100644 src/main/resources/log4j.properties diff --git a/pom.xml b/pom.xml index 629e236..9b8fec7 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,12 @@ test + + log4j + log4j + 1.2.17 + + diff --git a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java index 24b8068..64a66fe 100644 --- a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java +++ b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java @@ -1,6 +1,7 @@ package com.packt.webstore.config; +import com.packt.webstore.intercepter.ProcessingTimeLogInterceptor; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -58,4 +59,9 @@ public void configurePathMatch(PathMatchConfigurer configurer) { urlPathHelper.setRemoveSemicolonContent(false); configurer.setUrlPathHelper(urlPathHelper); } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new ProcessingTimeLogInterceptor()); + } } \ No newline at end of file diff --git a/src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java b/src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java new file mode 100644 index 0000000..f3e6a25 --- /dev/null +++ b/src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java @@ -0,0 +1,38 @@ +package com.packt.webstore.intercepter; + +import org.apache.log4j.Logger; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class ProcessingTimeLogInterceptor implements HandlerInterceptor { + + private static final Logger LOGGER = Logger.getLogger(ProcessingTimeLogInterceptor.class); + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, + Object o) throws Exception { + long startTime = System.currentTimeMillis(); + request.setAttribute("startTime", startTime); + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, + Object o, ModelAndView modelAndView) throws Exception { + String queryString = request.getQueryString() == null ? "" : "?" + request.getQueryString(); + String path = request.getRequestURL() + queryString; + long startTime = (Long) request.getAttribute("startTime"); + long endTime = System.currentTimeMillis(); + LOGGER.info(String.format("%s millisecond taken to process the request %s", (endTime - startTime), path)); + + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, + Object o, Exception e) throws Exception { + //nop + } +} diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..6799911 --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,14 @@ +# Root logger option +log4j.rootLogger=INFO, file, stdout +# Direct log messages to a log file +log4j.appender.file=org.apache.log4j.RollingFileAppender +log4j.appender.file.File=/Users/hirookayuukana/Desktop/log/performance.log +log4j.appender.file.MaxFileSize=1MB +log4j.appender.file.MaxBackupIndex=1 +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss} %-5p %c{1}:%L - %m%n +# Direct log messages to stdout +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file From a3a5287eab563a6042f14c454214a4de86bd2971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=A3=E5=B2=A1=E4=BD=91=E5=93=89?= Date: Mon, 22 Jan 2018 18:38:04 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packt/webstore/config/WebApplicationContextConfig.java | 4 ++++ .../webstore/intercepter/ProcessingTimeLogInterceptor.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java index 64a66fe..a8b7bf7 100644 --- a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java +++ b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java @@ -60,6 +60,10 @@ public void configurePathMatch(PathMatchConfigurer configurer) { configurer.setUrlPathHelper(urlPathHelper); } + /** + * インターセプターの設定 + * @param registry + */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new ProcessingTimeLogInterceptor()); diff --git a/src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java b/src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java index f3e6a25..0436657 100644 --- a/src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java +++ b/src/main/java/com/packt/webstore/intercepter/ProcessingTimeLogInterceptor.java @@ -7,6 +7,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +/** + * インターセプターの追加 + * レスポンス速度を測る。 + * @author hirooka + */ public class ProcessingTimeLogInterceptor implements HandlerInterceptor { private static final Logger LOGGER = Logger.getLogger(ProcessingTimeLogInterceptor.class); From 8ad1c424d4752d78d688555708ce4631a1b5f184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=A3=E5=B2=A1=E4=BD=91=E5=93=89?= Date: Mon, 22 Jan 2018 20:39:48 +0900 Subject: [PATCH 3/6] =?UTF-8?q?Charpter7=EF=BC=9A=E3=83=AD=E3=82=B0?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E7=94=BB=E9=9D=A2=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 +++- .../webstore/config/LoginController.java | 17 +++++ .../packt/webstore/config/SecurityConfig.java | 61 +++++++++++++++++ .../SecurityWebApplicationInitializer.java | 13 ++++ .../config/WebApplicationContextConfig.java | 2 + .../controller/ProductController.java | 3 - src/main/webapp/WEB-INF/views/addProduct.jsp | 7 ++ src/main/webapp/WEB-INF/views/login.jsp | 66 +++++++++++++++++++ 8 files changed, 178 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/packt/webstore/config/LoginController.java create mode 100644 src/main/java/com/packt/webstore/config/SecurityConfig.java create mode 100644 src/main/java/com/packt/webstore/config/SecurityWebApplicationInitializer.java create mode 100644 src/main/webapp/WEB-INF/views/login.jsp diff --git a/pom.xml b/pom.xml index 629e236..c560277 100644 --- a/pom.xml +++ b/pom.xml @@ -55,8 +55,19 @@ 3.8.1 test + + org.springframework.security + spring-security-config + 4.1.1.RELEASE + compile + - + + org.springframework.security + spring-security-web + 4.1.1.RELEASE + compile + diff --git a/src/main/java/com/packt/webstore/config/LoginController.java b/src/main/java/com/packt/webstore/config/LoginController.java new file mode 100644 index 0000000..23067ea --- /dev/null +++ b/src/main/java/com/packt/webstore/config/LoginController.java @@ -0,0 +1,17 @@ +package com.packt.webstore.config; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + * ログインコントローラー + * @author hirooka + */ +@Controller +public class LoginController { + @RequestMapping(value = "/login", method = RequestMethod.GET) + public String login(){ + return "login"; + } +} diff --git a/src/main/java/com/packt/webstore/config/SecurityConfig.java b/src/main/java/com/packt/webstore/config/SecurityConfig.java new file mode 100644 index 0000000..150882b --- /dev/null +++ b/src/main/java/com/packt/webstore/config/SecurityConfig.java @@ -0,0 +1,61 @@ +package com.packt.webstore.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + + +/** + * ログインの設定 + * ログインされていない場合これらの設定に従って動作する。 + * @author hirooka + */ +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + //ユーザーの登録 + @Autowired + public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication().withUser("john").password("pa55word").roles("USER"); + auth.inMemoryAuthentication().withUser("admin").password("root123").roles("USER", "ADMIN"); + } + + + /** + * 認証のさいのいろいろな設定 + * + * @param httpSecurity + * @throws Exception + */ + @Override + public void configure(HttpSecurity httpSecurity) throws Exception { + + //認証がされていないときに呼び出される。 + //ここで呼び出すページはコントローラーの中で呼び出されるページと同じ + httpSecurity.formLogin().loginPage("/login") + .usernameParameter("userId") + .passwordParameter("password"); + + httpSecurity.formLogin().defaultSuccessUrl("/market/products/add") + .failureUrl("/login?error"); + + //ログアウトが成功した際のページ呼び出し + httpSecurity.logout().logoutSuccessUrl("/login?logout"); + + //許可されていないページへ入った際に呼び出される。 + httpSecurity.exceptionHandling().accessDeniedPage("/login?accessDenied"); + + //ロールによってredirectするページを変更する。 + httpSecurity.authorizeRequests() + .antMatchers("/").permitAll() + .antMatchers("/**/add").access("hasRole('ADMIN')") + .antMatchers("/**/market/**").access("hasRole('USER')"); + + // + httpSecurity.csrf().disable(); + } +} diff --git a/src/main/java/com/packt/webstore/config/SecurityWebApplicationInitializer.java b/src/main/java/com/packt/webstore/config/SecurityWebApplicationInitializer.java new file mode 100644 index 0000000..b33b871 --- /dev/null +++ b/src/main/java/com/packt/webstore/config/SecurityWebApplicationInitializer.java @@ -0,0 +1,13 @@ +package com.packt.webstore.config; + +import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; + +/** + * Spring起動の際にSpring側にセキュリティログインの設定があることを知らせるためのクラス + * + * @author hirooka + * + */ +public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { + +} diff --git a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java index 24b8068..a35864d 100644 --- a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java +++ b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java @@ -58,4 +58,6 @@ public void configurePathMatch(PathMatchConfigurer configurer) { urlPathHelper.setRemoveSemicolonContent(false); configurer.setUrlPathHelper(urlPathHelper); } + + } \ No newline at end of file diff --git a/src/main/java/com/packt/webstore/controller/ProductController.java b/src/main/java/com/packt/webstore/controller/ProductController.java index 978017b..bb46328 100644 --- a/src/main/java/com/packt/webstore/controller/ProductController.java +++ b/src/main/java/com/packt/webstore/controller/ProductController.java @@ -1,7 +1,6 @@ package com.packt.webstore.controller; import com.packt.webstore.domain.Product; -import com.packt.webstore.domain.repository.ProductRepository; import com.packt.webstore.exeption.NoProductsFoundUnderCategoryException; import com.packt.webstore.exeption.ProductNotFoundException; import com.packt.webstore.service.ProductService; @@ -16,8 +15,6 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.ws.RequestWrapper; import java.util.List; import java.util.Map; diff --git a/src/main/webapp/WEB-INF/views/addProduct.jsp b/src/main/webapp/WEB-INF/views/addProduct.jsp index 51cd9ea..bf26b90 100644 --- a/src/main/webapp/WEB-INF/views/addProduct.jsp +++ b/src/main/webapp/WEB-INF/views/addProduct.jsp @@ -9,6 +9,12 @@ Products +
+ +
@@ -100,6 +106,7 @@
+
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/login.jsp b/src/main/webapp/WEB-INF/views/login.jsp new file mode 100644 index 0000000..8ec2ace --- /dev/null +++ b/src/main/webapp/WEB-INF/views/login.jsp @@ -0,0 +1,66 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + +<%@ taglib prefix="spring" + uri="http://www.springframework.org/tags" %> + + + + + + Products + + +
+
+
+

Welcome to Web Store!

+

The one and only amazing web store

+
+
+
+
+
+
+
+
+

Please sign in

+
+
+ +
+ +
+

Invalid username and password.

+
+
+
+

You have been logged out successfully.

+
+
+
+

Access Denied: You are not authorised!

+
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+ \ No newline at end of file From 49b53caa89e2ce21135754d80a6ff18e32d2518a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=A3=E5=B2=A1=E4=BD=91=E5=93=89?= Date: Sun, 28 Jan 2018 00:58:10 +0900 Subject: [PATCH 4/6] =?UTF-8?q?6=E7=AB=A0=E3=81=AE=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes .gitignore | 2 +- src/main/java/com/packt/webstore/.DS_Store | Bin 0 -> 6148 bytes .../config/WebApplicationContextConfig.java | 16 ++++++- .../controller/ProductController.java | 7 ++- .../intercepter/PromoCodeInterceptor.java | 41 ++++++++++++++++++ .../webapp/WEB-INF/views/invalidPromoCode.jsp | 29 +++++++++++++ 7 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/packt/webstore/.DS_Store create mode 100644 src/main/java/com/packt/webstore/intercepter/PromoCodeInterceptor.java create mode 100644 src/main/webapp/WEB-INF/views/invalidPromoCode.jsp diff --git a/.DS_Store b/.DS_Store index feca8613504bcd7430524202412f605a970dd548..9a874b5768f336915163bb88cd434575b859f936 100644 GIT binary patch delta 26 icmZoMXfc>z$H+L*UY?P0W8yOQ$$BDeo4GlD@&f>7?FW(o delta 24 gcmZoMXfc>z$H*|zUVdZZGWN;3BJ7*FIezj30AOtgj{pDw diff --git a/.gitignore b/.gitignore index d1c4e3c..3290dd5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# Compiled class file +#/ Compiled class file *.class /target/ diff --git a/src/main/java/com/packt/webstore/.DS_Store b/src/main/java/com/packt/webstore/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..db68ea847f89393c4901bc02cff897f79d77c45a GIT binary patch literal 6148 zcmeHKJ8AYqoFR*dikegyW2p9EXqn`F$MEP4@Qz>0 z&$kU46`%rCfC^9nDloeOSz_1Ev!BcZsQ?xD>k8QSp}-Am;uPqg4h-G`0G9~6VeY*I zuvh?C6Q@8#U>a0lP&Hc&4Laf_^J?N07`>Hi$N9z6MQb2ODnJDu6?lr} z#_Ino{D=Pkk;D}hpaTC&0bTZQeTOGyZEYTBwYI=_aLc*D%`kTg1~11zFUMF|Io^6w biGvE;K6e+X{REt!@>6 literal 0 HcmV?d00001 diff --git a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java index a8b7bf7..16d12d4 100644 --- a/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java +++ b/src/main/java/com/packt/webstore/config/WebApplicationContextConfig.java @@ -2,18 +2,18 @@ import com.packt.webstore.intercepter.ProcessingTimeLogInterceptor; +import com.packt.webstore.intercepter.PromoCodeInterceptor; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.config.annotation.*; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; import org.springframework.web.util.UrlPathHelper; -import java.util.ResourceBundle; - @Configuration @EnableWebMvc @ComponentScan("com.packt.webstore") @@ -48,6 +48,16 @@ public MessageSource messageSource(){ return resource; } + @Bean + public HandlerInterceptor promoCodeInterceptor(){ + PromoCodeInterceptor promoCodeInterceptor = new PromoCodeInterceptor(); + promoCodeInterceptor.setPromoCode("OFF3R"); + promoCodeInterceptor.setOfferRedirect("/market/products"); + promoCodeInterceptor.setErrorRedirect("invalidPromoCode"); + return promoCodeInterceptor; + } + + /** * HandlerMappingの設定 * @@ -67,5 +77,7 @@ public void configurePathMatch(PathMatchConfigurer configurer) { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new ProcessingTimeLogInterceptor()); + registry.addInterceptor(promoCodeInterceptor()) + .addPathPatterns("/**/market/products/specialOffer"); } } \ No newline at end of file diff --git a/src/main/java/com/packt/webstore/controller/ProductController.java b/src/main/java/com/packt/webstore/controller/ProductController.java index 978017b..76f03d3 100644 --- a/src/main/java/com/packt/webstore/controller/ProductController.java +++ b/src/main/java/com/packt/webstore/controller/ProductController.java @@ -86,7 +86,12 @@ public String processAddNewProductForm(@ModelAttribute("newProduct") Product new return "redirect:/market/products"; } + @RequestMapping("/products/invalidPromoCode") + public String invalidPromoCode(){ + return "invalidPromoCode"; + } + @InitBinder public void initialiseBinder(WebDataBinder binder) { binder.setAllowedFields("productId", "name", @@ -108,6 +113,4 @@ public ModelAndView handleError(HttpServletRequest request, mav.setViewName("productNotFound"); return mav; } - - } diff --git a/src/main/java/com/packt/webstore/intercepter/PromoCodeInterceptor.java b/src/main/java/com/packt/webstore/intercepter/PromoCodeInterceptor.java new file mode 100644 index 0000000..dd98bab --- /dev/null +++ b/src/main/java/com/packt/webstore/intercepter/PromoCodeInterceptor.java @@ -0,0 +1,41 @@ +package com.packt.webstore.intercepter; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class PromoCodeInterceptor extends HandlerInterceptorAdapter { + private String promoCode; + private String errorRedirect; + private String offerRedirect; + + public PromoCodeInterceptor() { + super(); + } + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, + Object handler) throws Exception { + String givenPromoCode = request.getParameter("promo"); + if (promoCode.equals(givenPromoCode)) { + response.sendRedirect(request.getContextPath() + "/" + offerRedirect); + } else { + response.sendRedirect(errorRedirect); + } + return false; + } + + public void setPromoCode(String promoCode) { + this.promoCode = promoCode; + } + + public void setErrorRedirect(String errorRedirect) { + this.errorRedirect = errorRedirect; + } + + public void setOfferRedirect(String offerRedirect) { + this.offerRedirect = offerRedirect; + } +} diff --git a/src/main/webapp/WEB-INF/views/invalidPromoCode.jsp b/src/main/webapp/WEB-INF/views/invalidPromoCode.jsp new file mode 100644 index 0000000..2cedcd7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/invalidPromoCode.jsp @@ -0,0 +1,29 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + + + Invalid promo code + + +
+
+
+

Invalid Promo Code

+
+
+
+
+ +
+ + From 4e230711000ff991d28dc0665e9093e8335237db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=A3=E5=B2=A1=E4=BD=91=E5=93=89?= Date: Sun, 28 Jan 2018 01:04:24 +0900 Subject: [PATCH 5/6] =?UTF-8?q?7=E7=AB=A0=E3=81=AE=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/packt/webstore/controller/ProductController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/packt/webstore/controller/ProductController.java b/src/main/java/com/packt/webstore/controller/ProductController.java index bb46328..edfa62f 100644 --- a/src/main/java/com/packt/webstore/controller/ProductController.java +++ b/src/main/java/com/packt/webstore/controller/ProductController.java @@ -83,7 +83,6 @@ public String processAddNewProductForm(@ModelAttribute("newProduct") Product new return "redirect:/market/products"; } - public void initialiseBinder(WebDataBinder binder) { binder.setAllowedFields("productId", "name", From 168366614a8bd14ccc641bc8249d3b0d746234c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=A3=E5=B2=A1=E4=BD=91=E5=93=89?= Date: Tue, 27 Feb 2018 13:09:56 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BD=99=E8=A8=88=E3=81=AA=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 0 bytes src/.DS_Store | Bin 6148 -> 0 bytes src/main/.DS_Store | Bin 6148 -> 0 bytes src/main/java/.DS_Store | Bin 6148 -> 0 bytes src/main/java/com/.DS_Store | Bin 6148 -> 0 bytes src/main/java/com/packt/.DS_Store | Bin 6148 -> 0 bytes src/main/java/com/packt/webstore/.DS_Store | Bin 6148 -> 0 bytes 7 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 src/.DS_Store delete mode 100644 src/main/.DS_Store delete mode 100644 src/main/java/.DS_Store delete mode 100644 src/main/java/com/.DS_Store delete mode 100644 src/main/java/com/packt/.DS_Store delete mode 100644 src/main/java/com/packt/webstore/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 9a874b5768f336915163bb88cd434575b859f936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425ml0g0s}V-^m;4I%_5-~tF3k&vj^b9A16778<}(6eNJu~Vz<8=6`~ zboab&MFtUB!i}=AFfm2m$tVxGT*u4pe81nUlA49C} z?O@64YO)2RT{MRe%{!}2F))pG(Sih~)xkgosK7*lF7m<7{{#Hn{6A@7N(HFEpDCdI z{V4u3`M`g7D#EfOgRk)$PGpaPQV2S&>%r5BKkQx-ySzvsH0W%E!l7ES!;KH zv9ktX>-*^w7y&HlPOLmk%$N_j;tOYdpMH*)!|itQBJHgMp3+B5_H$d10#ZNMM4T9irw zDe%t}uwk>?toc%Twm!X{*Y{cVb)%DUIm54?049DEf6&9YUwlEZ41Ihw+$ZCa@h6X)Lo@aaP z8SN|9V*s`}A0B}EG1^C)retP&UmZ5UN|LYIV^7GId!wugko_!<1Nx*JyEL| z5Cd}tZqr?R|9_(XGXKwu@UIxKVf(z@@RO>yEH1@V-^m;4I%_5-~tF3K^+i#j?VMXLSaS~dY0@jc51bKLsN^0 z?w;4J$RHv;+$b9h6I0}!Tx68{^>MkK$MI$*w?)zl@IfZ~xlK?3DnJFO02QDDGg2TA z@_sd=XX2w!0V*&L1?>A!;KrJ4LH~3h_y_tMAK>5S|49o|DnJGPOaWc) zkNX{7D$mxB*R%R5tF~@%&@V@L`w2i|NAVi&hW%m-uqIm&6&Qa6Tm}Xz@KXg|*oF~o diff --git a/src/main/java/com/.DS_Store b/src/main/java/com/.DS_Store deleted file mode 100644 index 6ffafc622ef798f3a86fe0a26573ec09d682cdb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~J&pn~427Q;kXE9hq)f91*c(I$PQV5D>p)^9cKaNiXU7f0)@X#DCFjLXJU?GC z83VA@-{~7z0QjW4;>(AD8RHp#u*VT+{GM*d%i(&xcp4wM*8@7Q@wlGL5)lvq5fA|p z5P=a9h(ny`|9nKxq(>0}5f}#n|2`DDYfWuknf3J&fzcC)AqSx-vu4k3eA1 JAObHXa0fx26O8}> diff --git a/src/main/java/com/packt/.DS_Store b/src/main/java/com/packt/.DS_Store deleted file mode 100644 index d262ee46237387082616da1580b97334d2dacaf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ5EC}5S)b+Pohal=_}+0RuoRa1yD%3NKZ;YX1<`{pG|{ZI9(%oG z%Tv643&7T&yA`kmFwh-w@nLSh?>@7KiWrg3Gd?ili2d&Lewbzd9&qk}Gxpfx^pn3G z$AfRmq<|EV0#ZNYqoFR*dikegyW2p9EXqn`F$MEP4@Qz>0 z&$kU46`%rCfC^9nDloeOSz_1Ev!BcZsQ?xD>k8QSp}-Am;uPqg4h-G`0G9~6VeY*I zuvh?C6Q@8#U>a0lP&Hc&4Laf_^J?N07`>Hi$N9z6MQb2ODnJDu6?lr} z#_Ino{D=Pkk;D}hpaTC&0bTZQeTOGyZEYTBwYI=_aLc*D%`kTg1~11zFUMF|Io^6w biGvE;K6e+X{REt!@>6