Чтобы установить дату для подготовленного оператора, вам нужно изменить тип значения:
String date = request.getParameter("date");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // your template here
java.util.Date dateStr = formatter.parse(date);
java.sql.Date dateDB = new java.sql.Date(dateStr.getTime());
теперь преобразовать дату String в java.sql.Date и использовать другой метод:
preparedStatement.setDate(4,dateDB);
Отправляете ли вы заголовок «с учетными данными» на стороне клиента? Если это угловое 7 приложение, вы должны разрешить заголовок with credentials на стороне сервера, добавить конфигурацию cors и добавить перехватчик на стороне клиента для каждого http-запроса клиента. Кроме того, вы не должны указывать "*" как разрешенные источники, иначе заголовок with credentials не будет работать.
На Angular создайте это:
@Injectable()
export class CredentialsInterceptor implements HttpInterceptor {
constructor() {}
intercept(request: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
request = request = request.clone({
withCredentials: true
});
return next.handle(request);
}
}
И добавьте в app.module:
providers: [{
provide: HTTP_INTERCEPTORS,
useClass: CredentialsInterceptor,
multi: true
}
Еще одной проблемой может быть порядок фильтра cors, он должен быть до фильтр на filterChain. Вы можете справиться с этим примерно так:
@Bean
FilterRegistrationBean<CorsFilter> corsFilter(CorsConfigurationSource
corsConfigurationSource)
{
CorsFilter corsFilter = new CorsFilter(corsConfigurationSource);
FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>
();
bean.setFilter(corsFilter);
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}