Как мне сделать так что бы соответствующий http post запрос доставлял на эту страницу sql запрос, далее который обрабатывался и выдавал ответ в качестве выгрузки html с бд.
JDBC я не могу использовать, так как прямого где login и password у меня нет.
SseEventBuilder event1 = SseEmitter....
emitter.send(event1);
SseEventBuilder event2 = SseEmitter....
emitter.send(event2);
static interface
extends ResponseBodyEmitter и можно было догадаться. https://www.baeldung.com/spring-server-sent-events насколько хорошо spring security защищает
Такой запрос оптимален или есть варианты получше?
Суть вопроса, узнать на сколько это практично
Как мне теперь обратиться к этому объекту в параметре метода контролера?
@InitBinder
но я также не увидел, чтоб вы где-то создали объект "Product". Если WebDataBinder считается объектом, то вы его преобразовали в строку String str = binder.getTarget().toString()+
Далее вы создали MutablePropertyValues, что эквивалентно Map <String, String>
или <String, Object>
Короче говоря: вы нигде не создали объект Product чтоб к нему обращаться. const currentUrl = document.referrer;
$.get('ajax/index', {ref:currentUrl});
private @ResponseBody void checkReferrer(Principal principal,
HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String currentUrl = req.getParameter("ref");
currentUrl = currentUrl.substring(currentUrl.indexOf("/")+2);
String localName = req.getServerName();
if (principal!=null && !currentUrl.startsWith(localName)) {
req.getSession().invalidate();
req.logout();
Cookie [] cookies = req.getCookies();
if(cookies!=null) {
for(Cookie c : cookies) {
c.setValue("");
c.setPath("/");
c.setMaxAge(0);
resp.addCookie(c);
}
}
}
}
http.csrf()
.disable().and()
....
frameOptions().sameOrigin();
Как сделать INSERT в две таблицы в одном запросе?
jdbcTemplate.batchUpdate(new String [] {
"DELETE FROM statusChat WHERE id IN("+id1+", "+id2+") LIMIT 2",
"DELETE FROM invites WHERE id="+id1+" AND idInviter="+id2
});
ArrayList <Long> listID;
String SQL = "DELETE FROM statusChat WHERE id IN(?";
for(int i=0; i<(listID.size()-1; i++)
SQL = SQL+",?"; SQL=SQL+")";
jdbcTemplate.batchUpdate(SQL, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
i=1;
for (int x=0; x<listID.size(); x++, i++) {
long id = listID.get(x);
ps.setLong(i, id));
}
}
Как вернуть страницу с id в Spring?
В пост-методе контроллера "/routes/edit-all-sequence/{id}/" выделяет, как не соответствующую страницу MVC.
model.addFlashAttribute("sequenceGapError", true);
и будет автоматически распространяться на «выходной» FlashMap текущего запроса. return "/routes/edit-all-sequence/";
По идее должна вернуться страница с параметрами {id} текущего запроса и, никакой redirect вам не нужен. Меня смущают форматы значений причем все - RGB, HEX, CMYK.
вопрос в том, как произвести расчет со значениями пикселей в матрице?
result = 0.2126*r + 0.7152*g + 0.0722*b
@GetMapping("users/**")
public String show(@RequestParam(value="id", required=false) String id){
if (id==null)
return "/";
........
return "users";
}
@RequestParam
не нужны.@GetMapping("/publisher/**")
public String publisher(HttpServletRequest req, Principal principal, Model model){
String id = req.getRequestURL().toString();
id = id.substring(id.indexOf("/publisher")+10); // "/publisher" == 10
if (id.startsWith("/"))
id=id.substring(1);
if (principal==null && id.isBlank()) {
return "redirect:/";
}
else {
id = urlModelByOwner(principal, model, id);
}
if(!id.isBlank())
return "redirect:publisher"+id;
return "publisher";
}
<script th:inline="javascript">
var htmlVariable = /*[#th:block th:utext="${htmlText}"/]*/;
</script>
Html текст нужно предварительно взять в 'одинарные' кавычки. Иначе JavaScript не будет работать.var htmlVariable = /*[[${htmlText}]]*/ 'value';
при этом 'value' будет заменено ${htmlText} содержанием. Однако, могут быть проблемы с UTF-8.<script th:inline="javascript">
var htmlVariable = '[(${htmlText})]';
</script>
Сброс кэша в браузере
response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
registry.setCachePeriod(0);
http.
....
and()
.deleteCookies("JSESSIONID")
.http.build();
<td th:text="${teacher.additionalSkills} ?: 'UNKNOWN'" />
List <?>
В Spring этот условный оператор мало чем отличается от if/else, и лично я ни разу его не использовал. Подскажите в чем может быть причина ошибки компиляции?
src\main\java\ru\geraskindenis\repository\impl\PersonalAccountRepositoryImpl.java:32: error: cannot find symbol
preparedStatement.setLong(1, personalAccount.getOwnerId());
@Entity
и БД preparedStatement
Судя по "cannot find symbol" - ошибка ^ в SQL запросе (но это не точно).Как установить в ответ http-код 412 и одновременно отменить выполнение запросов типа POST, PUT, DELETE?
@GetMapping
Второй с аннотацией @RequestMapping("/")
или @PostMapping
для выше упомянутых случаев, и добавить в его параметры HttpServletResponse resp
В теле метода: resp.setStatus(412); return "redirect:error_page.html";
Можно сделать метод void или делать переадресацию.@PostMapping
templateEngine.addDialect(new SpringSecurityDialect());
Класс конфигурации:@Configuration
public class WebSecurityConfig implements WebMvcConfigurer {
........
@Bean
public SpringResourceTemplateResolver templateResolver(){
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(servletContext);
templateResolver.setPrefix("/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCacheable(false);
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine(){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
templateEngine.addDialect(new SpringSecurityDialect());
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver(){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String command = "C:\\ путь к файлу .exe для запуска MySQL сервера с приложения \\MySQL Server 8.0\\bin\\mysqld.exe";
try{
Runtime.getRuntime().exec(command); //run MySql
String url = "jdbc:mysql://localhost/";
String username = "root";
String password = "byDefault";
Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();
try (Connection conn = DriverManager.getConnection(url, username, password)){
Statement statement = conn.createStatement();
statement.execute("CREATE DATABASE IF NOT EXISTS usersdb");
statement.execute("USE usersdb");
statement.execute("CREATE TABLE IF NOT EXISTS users"+
"(id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,"+
"email VARCHAR(256) NOT NULL,"+
"password VARCHAR(128),"+
"UNIQUE KEY(email));");
}
}
catch(Exception e){
e.printStackTrace();
}
}
FuzzyQuery
- это один из множества фильтров (модификаторов) запроса. Фильтры нужно комбинировать для получения желаемого результата. Вот некоторые из них: TermQuery, PhraseQuery, BooleanQuery, WildcardQuery, PrefixQuery...