-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
14ee1d1
commit 291e1c9
Showing
22 changed files
with
1,158 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<groupId>ru.alishev.springcourse</groupId> | ||
<artifactId>spring-jdbc-template</artifactId> | ||
<version>1.0-SNAPSHOT</version> | ||
<packaging>war</packaging> | ||
|
||
<name>spring-mvc-app1 Maven Webapp</name> | ||
<!-- FIXME change it to the project's website --> | ||
<url>http://www.example.com</url> | ||
|
||
<properties> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<maven.compiler.source>1.7</maven.compiler.source> | ||
<maven.compiler.target>1.7</maven.compiler.target> | ||
|
||
<spring.version>5.2.1.RELEASE</spring.version> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>junit</groupId> | ||
<artifactId>junit</artifactId> | ||
<version>4.11</version> | ||
<scope>test</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-core</artifactId> | ||
<version>${spring.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-context</artifactId> | ||
<version>${spring.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-web</artifactId> | ||
<version>${spring.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-webmvc</artifactId> | ||
<version>${spring.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-jdbc</artifactId> | ||
<version>${spring.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.thymeleaf</groupId> | ||
<artifactId>thymeleaf-spring5</artifactId> | ||
<version>3.0.11.RELEASE</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>javax.servlet</groupId> | ||
<artifactId>javax.servlet-api</artifactId> | ||
<version>4.0.1</version> | ||
<scope>provided</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.hibernate.validator</groupId> | ||
<artifactId>hibernate-validator</artifactId> | ||
<version>6.1.6.Final</version> | ||
</dependency> | ||
|
||
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> | ||
<dependency> | ||
<groupId>org.postgresql</groupId> | ||
<artifactId>postgresql</artifactId> | ||
<version>42.2.18</version> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<finalName>spring-mvc-app1</finalName> | ||
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> | ||
<plugins> | ||
<plugin> | ||
<artifactId>maven-clean-plugin</artifactId> | ||
<version>3.1.0</version> | ||
</plugin> | ||
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> | ||
<plugin> | ||
<artifactId>maven-resources-plugin</artifactId> | ||
<version>3.0.2</version> | ||
</plugin> | ||
<plugin> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>3.8.0</version> | ||
</plugin> | ||
<plugin> | ||
<artifactId>maven-surefire-plugin</artifactId> | ||
<version>2.22.1</version> | ||
</plugin> | ||
<plugin> | ||
<artifactId>maven-war-plugin</artifactId> | ||
<version>3.2.2</version> | ||
</plugin> | ||
<plugin> | ||
<artifactId>maven-install-plugin</artifactId> | ||
<version>2.5.2</version> | ||
</plugin> | ||
<plugin> | ||
<artifactId>maven-deploy-plugin</artifactId> | ||
<version>2.8.2</version> | ||
</plugin> | ||
</plugins> | ||
</pluginManagement> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<configuration> | ||
<source>8</source> | ||
<target>8</target> | ||
</configuration> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
</project> |
38 changes: 38 additions & 0 deletions
38
...rc/main/java/ru/alishev/springcourse/config/MySpringMvcDispatcherSerlvetIntitializer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package ru.alishev.springcourse.config; | ||
|
||
import org.springframework.web.filter.HiddenHttpMethodFilter; | ||
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; | ||
|
||
import javax.servlet.ServletContext; | ||
import javax.servlet.ServletException; | ||
|
||
/** | ||
* @author Neil Alishev | ||
*/ | ||
public class MySpringMvcDispatcherSerlvetIntitializer extends AbstractAnnotationConfigDispatcherServletInitializer { | ||
@Override | ||
protected Class<?>[] getRootConfigClasses() { | ||
return null; | ||
} | ||
|
||
@Override | ||
protected Class<?>[] getServletConfigClasses() { | ||
return new Class[]{SpringConfig.class}; | ||
} | ||
|
||
@Override | ||
protected String[] getServletMappings() { | ||
return new String[]{"/"}; | ||
} | ||
|
||
@Override | ||
public void onStartup(ServletContext aServletContext) throws ServletException { | ||
super.onStartup(aServletContext); | ||
registerHiddenFieldFilter(aServletContext); | ||
} | ||
|
||
private void registerHiddenFieldFilter(ServletContext aContext) { | ||
aContext.addFilter("hiddenHttpMethodFilter", | ||
new HiddenHttpMethodFilter()).addMappingForUrlPatterns(null ,true, "/*"); | ||
} | ||
} |
74 changes: 74 additions & 0 deletions
74
...29.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package ru.alishev.springcourse.config; | ||
|
||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.context.ApplicationContext; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.ComponentScan; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.jdbc.core.JdbcTemplate; | ||
import org.springframework.jdbc.datasource.DriverManagerDataSource; | ||
import org.springframework.web.servlet.config.annotation.EnableWebMvc; | ||
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; | ||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | ||
import org.thymeleaf.spring5.SpringTemplateEngine; | ||
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; | ||
import org.thymeleaf.spring5.view.ThymeleafViewResolver; | ||
|
||
import javax.sql.DataSource; | ||
|
||
/** | ||
* @author Neil Alishev | ||
*/ | ||
@Configuration | ||
@ComponentScan("ru.alishev.springcourse") | ||
@EnableWebMvc | ||
public class SpringConfig implements WebMvcConfigurer { | ||
|
||
private final ApplicationContext applicationContext; | ||
|
||
@Autowired | ||
public SpringConfig(ApplicationContext applicationContext) { | ||
this.applicationContext = applicationContext; | ||
} | ||
|
||
@Bean | ||
public SpringResourceTemplateResolver templateResolver() { | ||
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); | ||
templateResolver.setApplicationContext(applicationContext); | ||
templateResolver.setPrefix("/WEB-INF/views/"); | ||
templateResolver.setSuffix(".html"); | ||
return templateResolver; | ||
} | ||
|
||
@Bean | ||
public SpringTemplateEngine templateEngine() { | ||
SpringTemplateEngine templateEngine = new SpringTemplateEngine(); | ||
templateEngine.setTemplateResolver(templateResolver()); | ||
templateEngine.setEnableSpringELCompiler(true); | ||
return templateEngine; | ||
} | ||
|
||
@Override | ||
public void configureViewResolvers(ViewResolverRegistry registry) { | ||
ThymeleafViewResolver resolver = new ThymeleafViewResolver(); | ||
resolver.setTemplateEngine(templateEngine()); | ||
registry.viewResolver(resolver); | ||
} | ||
|
||
@Bean | ||
public DataSource dataSource() { | ||
DriverManagerDataSource dataSource = new DriverManagerDataSource(); | ||
|
||
dataSource.setDriverClassName("org.postgresql.Driver"); | ||
dataSource.setUrl("jdbc:postgresql://localhost:5432/first_db"); | ||
dataSource.setUsername("postgres"); | ||
dataSource.setPassword("postgres"); | ||
|
||
return dataSource; | ||
} | ||
|
||
@Bean | ||
public JdbcTemplate jdbcTemplate() { | ||
return new JdbcTemplate(dataSource()); | ||
} | ||
} |
38 changes: 38 additions & 0 deletions
38
...emplateBatchUpdate/src/main/java/ru/alishev/springcourse/controllers/BatchController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package ru.alishev.springcourse.controllers; | ||
|
||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.stereotype.Controller; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import ru.alishev.springcourse.dao.PersonDAO; | ||
|
||
/** | ||
* @author Neil Alishev | ||
*/ | ||
@Controller | ||
@RequestMapping("/test-batch-update") | ||
public class BatchController { | ||
private final PersonDAO personDAO; | ||
|
||
@Autowired | ||
public BatchController(PersonDAO personDAO) { | ||
this.personDAO = personDAO; | ||
} | ||
|
||
@GetMapping() | ||
public String index() { | ||
return "batch/index"; | ||
} | ||
|
||
@GetMapping("/without") | ||
public String withoutBatch() { | ||
personDAO.testMultipleUpdate(); | ||
return "redirect:/people"; | ||
} | ||
|
||
@GetMapping("/with") | ||
public String withBatch() { | ||
personDAO.testBatchUpdate(); | ||
return "redirect:/people"; | ||
} | ||
} |
75 changes: 75 additions & 0 deletions
75
...mplateBatchUpdate/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package ru.alishev.springcourse.controllers; | ||
|
||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.stereotype.Controller; | ||
import org.springframework.ui.Model; | ||
import org.springframework.validation.BindingResult; | ||
import org.springframework.web.bind.annotation.*; | ||
import ru.alishev.springcourse.dao.PersonDAO; | ||
import ru.alishev.springcourse.models.Person; | ||
|
||
import javax.validation.Valid; | ||
|
||
/** | ||
* @author Neil Alishev | ||
*/ | ||
@Controller | ||
@RequestMapping("/people") | ||
public class PeopleController { | ||
|
||
private final PersonDAO personDAO; | ||
|
||
@Autowired | ||
public PeopleController(PersonDAO personDAO) { | ||
this.personDAO = personDAO; | ||
} | ||
|
||
@GetMapping() | ||
public String index(Model model) { | ||
model.addAttribute("people", personDAO.index()); | ||
return "people/index"; | ||
} | ||
|
||
@GetMapping("/{id}") | ||
public String show(@PathVariable("id") int id, Model model) { | ||
model.addAttribute("person", personDAO.show(id)); | ||
return "people/show"; | ||
} | ||
|
||
@GetMapping("/new") | ||
public String newPerson(@ModelAttribute("person") Person person) { | ||
return "people/new"; | ||
} | ||
|
||
@PostMapping() | ||
public String create(@ModelAttribute("person") @Valid Person person, | ||
BindingResult bindingResult) { | ||
if (bindingResult.hasErrors()) | ||
return "people/new"; | ||
|
||
personDAO.save(person); | ||
return "redirect:/people"; | ||
} | ||
|
||
@GetMapping("/{id}/edit") | ||
public String edit(Model model, @PathVariable("id") int id) { | ||
model.addAttribute("person", personDAO.show(id)); | ||
return "people/edit"; | ||
} | ||
|
||
@PatchMapping("/{id}") | ||
public String update(@ModelAttribute("person") @Valid Person person, BindingResult bindingResult, | ||
@PathVariable("id") int id) { | ||
if (bindingResult.hasErrors()) | ||
return "people/edit"; | ||
|
||
personDAO.update(id, person); | ||
return "redirect:/people"; | ||
} | ||
|
||
@DeleteMapping("/{id}") | ||
public String delete(@PathVariable("id") int id) { | ||
personDAO.delete(id); | ||
return "redirect:/people"; | ||
} | ||
} |
Oops, something went wrong.