@Bean
public SpringResourceTemplateResolver templateResolver(){
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(servletContext);
templateResolver.setPrefix("/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setCacheable(false); // отключаем везде кэш на время разработки
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine(){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver(){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
return viewResolver;
}
jakarta.servlet
и thymeleaf-spring6
в poom.xml<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</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>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
src/main/webapp/hello.html
templateResolver.setPrefix("/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
@Controller
@RequestMapping("/")
public class FirstController {
@GetMapping("/hello")
public String helloPage() {
return "hello";
}
}
localhost:8080/hello
где 8080 - это номер порта на котором работает ваш сервер.String imgName;
for(byte i=0; i<arrayImages.size();i++) {
imgName = arrayImages.get(i).getOriginalFilename().toLowerCase();
if (imgName.isBlank())
removeSlide(i);
else if (imgName.indexOf("s-1.")!=-1 || imgName.indexOf("s-2.")!=-1 ||
imgName.indexOf("s-3.")!=-1 || imgName.indexOf("s-4.")!=-1) {
assert true; // file exists. Nothing to do.
}
else {
imgName = setCorrectName(imgName, i);
if (imgName!=null) {
// some code...
}
}
indexOf()
на регулярное выражение matches
но оно ни в какую не хочет корректно работать. возможно, вы знаете другие способы обработки запросов помощников CORS?
HashSet<String>
то сможете проверить наличие определенного String-а в массиве строк, заменив s.equals(sb)
на list.contains(sb)
Такой код будет работать в оперативной памяти используя hashcode (32 битный идентификатор объекта). Это работает быстро и эффективно, так как числовые значения гораздо легче и быстрей сравнить. Однако, каждая строка будет представлять собой отдельный объект и занимать свою ячейку в памяти.outofmemoryerror
прежде чем GC (сборщик мусора) успеет собрать все созданные объекты.HashSet<String>
но с одной ("резиновой") ячейкой в памяти.Как мне сделать так что бы соответствующий http post запрос доставлял на эту страницу sql запрос, далее который обрабатывался и выдавал ответ в качестве выгрузки html с бд.
JDBC я не могу использовать, так как прямого где login и password у меня нет.
Как мне теперь обратиться к этому объекту в параметре метода контролера?
@InitBinder
но я также не увидел, чтоб вы где-то создали объект "Product". Если WebDataBinder считается объектом, то вы его преобразовали в строку String str = binder.getTarget().toString()+
Далее вы создали MutablePropertyValues, что эквивалентно Map <String, String>
или <String, Object>
Короче говоря: вы нигде не создали объект Product чтоб к нему обращаться. Сброс кэша в браузере
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
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...@Configuration
@EnableWebSocketSecurity
public class WebSocketSecurityConfig {
@Bean
AuthorizationManager<Message<?>> messageAuthorizationManager(MessageMatcherDelegatingAuthorizationManager.Builder messages) {
return AuthorityAuthorizationManager.hasRole("USER");
}
}
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
if (Objects.equals(selectedOption, options[0])) {
menu.setVisible(true);
viewer.dispose();
} else {
viewer.setVisible(false);
....
System.exit(0);
Изменение параметров видимости окна "setVisible" и закрытие программы, это не одно и тоже. GraphicsViewer(model)
и позиционируете его при нажатии "Exit" вместо завершения программы.