├── .gitignore
├── 01. BootstrapPage
└── index.html
├── 02. NodeJsExample
├── app
│ └── routes
│ │ ├── index.js
│ │ └── users_routes.js
├── data.txt
├── public
│ └── html
│ │ └── index.html
└── server.js
├── 03. FormExample
└── index.html
├── 04. PizzaService
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ └── pizza
│ │ ├── app
│ │ ├── Application.java
│ │ ├── BuilderDemo.java
│ │ ├── OrderRepositoryDemo.java
│ │ ├── UsersRepositoryDemo.java
│ │ ├── UsersRepositoryFindDemo.java
│ │ └── UsersRepositorySaveDemo.java
│ │ ├── context
│ │ ├── LocaleListener.java
│ │ └── UsersServiceListener.java
│ │ ├── filters
│ │ └── LocalizationFilter.java
│ │ ├── forms
│ │ ├── LoginForm.java
│ │ └── UserForm.java
│ │ ├── localization
│ │ └── Localizations.java
│ │ ├── mappers
│ │ └── RowMapper.java
│ │ ├── models
│ │ ├── Order.java
│ │ ├── Pizza.java
│ │ └── User.java
│ │ ├── repositories
│ │ ├── CrudRepository.java
│ │ ├── OrderRepository.java
│ │ ├── OrderRepositoryConnectionImpl.java
│ │ ├── UsersRepository.java
│ │ └── UsersRepositoryConnectionImpl.java
│ │ ├── services
│ │ ├── UsersService.java
│ │ └── UsersServiceImpl.java
│ │ └── servlets
│ │ ├── SignInServlet.java
│ │ └── SignUpServlet.java
│ ├── resources
│ ├── messages
│ │ ├── messages_en.properties
│ │ ├── messages_po.properties
│ │ └── messages_ru.properties
│ ├── queries.sql
│ └── schema.sql
│ └── webapp
│ ├── WEB-INF
│ └── web.xml
│ ├── css
│ └── styles.css
│ └── jsp
│ ├── signIn.jsp
│ └── signUp.jsp
├── 05. SimpleWebProject
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ └── pizza
│ │ └── servlets
│ │ └── HelloPageServlet.java
│ └── webapp
│ └── WEB-INF
│ └── web.xml
├── 06. SpringJdbcAndDiExample
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── ru
│ │ └── itis
│ │ └── pizza
│ │ ├── models
│ │ └── User.java
│ │ └── repositories
│ │ ├── CrudRepository.java
│ │ ├── UsersRepository.java
│ │ ├── UsersRepositoryJdbcTemplateImpl.java
│ │ └── old
│ │ ├── RowMapper.java
│ │ └── UsersRepositoryConnectionImpl.java
│ └── test
│ └── java
│ └── ru
│ └── itis
│ └── pizza
│ └── repositories
│ ├── UsersRepositoryJdbcTemplateImplTest.java
│ └── old
│ └── UsersRepositoryConnectionImplTest.java
├── 07. Basket Example
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ ├── app
│ │ └── Main.java
│ │ ├── context
│ │ ├── ApplicationContext.java
│ │ ├── ApplicationContextPrimitiveImpl.java
│ │ └── Contexts.java
│ │ ├── dto
│ │ └── UserDto.java
│ │ ├── filter
│ │ └── AuthFilter.java
│ │ ├── forms
│ │ ├── SignInForm.java
│ │ └── SignUpForm.java
│ │ ├── listeners
│ │ └── ComponentsListener.java
│ │ ├── models
│ │ ├── Auth.java
│ │ ├── Basket.java
│ │ ├── Product.java
│ │ └── User.java
│ │ ├── repositories
│ │ ├── AuthRepository.java
│ │ ├── AuthRepositoryJdbcTemplateImpl.java
│ │ ├── CrudRepository.java
│ │ ├── UsersRepository.java
│ │ └── UsersRepositoryJdbcTemplateImpl.java
│ │ ├── services
│ │ ├── ProductsService.java
│ │ ├── UsersService.java
│ │ └── UsersServiceImpl.java
│ │ └── servlets
│ │ ├── MyFreemarkerServlet.java
│ │ ├── ProductsServlet.java
│ │ ├── ShopServlet.java
│ │ ├── SignInServlet.java
│ │ └── SignUpServlet.java
│ ├── resources
│ ├── ru.itis
│ │ └── context.xml
│ └── schema.sql
│ └── webapp
│ ├── WEB-INF
│ └── web.xml
│ ├── ftl
│ └── index.ftl
│ └── jsp
│ ├── shop.jsp
│ ├── signIn.jsp
│ └── signUp.jsp
├── 08. DiExample
├── resources
│ └── application.properties
└── src
│ └── ru
│ └── itis
│ ├── ApplicationContext.java
│ ├── BadTerminalImpl.java
│ ├── Main.java
│ ├── PlainTerminal.java
│ ├── Printer.java
│ ├── PrinterRedImpl.java
│ ├── PrinterStandardImpl.java
│ ├── Terminal.java
│ └── TerminalWithCashBack.java
├── 09. SpringDemo
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ └── spring
│ │ ├── components
│ │ ├── BadTerminalImpl.java
│ │ ├── PlainTerminal.java
│ │ ├── Printer.java
│ │ ├── PrinterRedImpl.java
│ │ ├── PrinterStandardImpl.java
│ │ ├── Terminal.java
│ │ └── TerminalWithCashBack.java
│ │ ├── java
│ │ ├── JavaConfig.java
│ │ └── Main.java
│ │ └── xml
│ │ ├── demo
│ │ └── Main.java
│ │ ├── dependencies
│ │ └── Main.java
│ │ └── scopes
│ │ └── Main.java
│ └── resources
│ ├── application.properties
│ └── context.xml
├── 10. SpringMvcExample
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ ├── app
│ │ └── WebInitializer.java
│ │ ├── config
│ │ └── AppConfig.java
│ │ ├── controllers
│ │ ├── UsersController.java
│ │ └── deprecateds
│ │ │ └── UsersControllerDeprecated.java
│ │ ├── filters
│ │ └── LogFilter.java
│ │ ├── models
│ │ └── User.java
│ │ ├── repository
│ │ ├── CrudRepository.java
│ │ ├── UsersRepository.java
│ │ └── UsersRepositoryJdbcTemplateImpl.java
│ │ └── services
│ │ ├── UsersService.java
│ │ └── UsersServiceImpl.java
│ ├── resources
│ └── ru.itis
│ │ └── application.properties
│ └── webapp
│ └── WEB-INF
│ └── views
│ ├── ftl
│ └── users_page.ftl
│ └── jsp
│ └── users_page.jsp
├── 11. SpringConfigs
├── pom.xml
└── src
│ └── main
│ └── java
│ └── ru
│ └── itis
│ ├── Main.java
│ ├── StringsRepository.java
│ ├── StringsRepositoryEnglishFakeImpl.java
│ ├── StringsRepositoryRussianFakeImpl.java
│ ├── StringsService.java
│ ├── StringsServiceImpl.java
│ └── config
│ └── AppAnnotationConfig.java
├── 12. Hibernate Demo
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ ├── app
│ │ └── Main.java
│ │ └── models
│ │ ├── Course.java
│ │ ├── Lesson.java
│ │ └── User.java
│ └── resources
│ ├── Course.hbm.xml
│ ├── Lesson.hbm.xml
│ ├── User.hbm.xml
│ └── hibernate.cfg.xml
├── 13. SpringBootDemo
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── springbootdemo
│ │ │ ├── SpringBootDemoApplication.java
│ │ │ ├── controllers
│ │ │ ├── RootController.java
│ │ │ └── SimpleRestController.java
│ │ │ ├── models
│ │ │ └── User.java
│ │ │ └── repositories
│ │ │ ├── UsersRepository.java
│ │ │ └── UsersRepositoryJdbcTemplateImpl.java
│ └── resources
│ │ ├── application.properties
│ │ ├── banner.txt
│ │ └── templates
│ │ └── index.ftl
│ └── test
│ └── java
│ └── ru
│ └── itis
│ └── springbootdemo
│ └── SpringBootDemoApplicationTests.java
├── 14. SpringBootSecurity
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ └── maven-wrapper.properties
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── springbootapp
│ │ │ ├── SpringBootAppApplication.java
│ │ │ ├── controllers
│ │ │ ├── HelloController.java
│ │ │ ├── SignInController.java
│ │ │ ├── SignUpController.java
│ │ │ └── UsersController.java
│ │ │ ├── forms
│ │ │ ├── SignUpForm.java
│ │ │ └── UserForm.java
│ │ │ ├── models
│ │ │ └── User.java
│ │ │ ├── repositories
│ │ │ └── UsersRepository.java
│ │ │ ├── security
│ │ │ ├── SecurityConfig.java
│ │ │ ├── UserDetailsImpl.java
│ │ │ └── UserDetailsServiceImpl.java
│ │ │ └── services
│ │ │ ├── SignUpService.java
│ │ │ └── SignUpServiceImpl.java
│ └── resources
│ │ ├── application.properties
│ │ ├── static
│ │ └── css
│ │ │ └── style.css
│ │ └── templates
│ │ ├── sign_in.ftl
│ │ ├── sign_up.ftl
│ │ └── users.ftl
│ └── test
│ └── java
│ └── ru
│ └── itis
│ └── springbootapp
│ └── SpringBootAppApplicationTests.java
├── 15. Rest API Demo
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── ru
│ │ │ └── itpark
│ │ │ └── app
│ │ │ ├── SpringBootDemoApplication.java
│ │ │ ├── controllers
│ │ │ ├── LoginController.java
│ │ │ └── ProductsController.java
│ │ │ ├── dto
│ │ │ ├── LoginDto.java
│ │ │ ├── ProductDto.java
│ │ │ └── TokenDto.java
│ │ │ ├── models
│ │ │ ├── Product.java
│ │ │ ├── Role.java
│ │ │ ├── Token.java
│ │ │ └── User.java
│ │ │ ├── repositories
│ │ │ ├── ProductsRepository.java
│ │ │ ├── TokensRepository.java
│ │ │ └── UsersRepository.java
│ │ │ ├── schedulers
│ │ │ └── ExpiredTokensScheduler.java
│ │ │ ├── security
│ │ │ ├── authentication
│ │ │ │ └── TokenAuthentication.java
│ │ │ ├── config
│ │ │ │ └── SecurityConfiguration.java
│ │ │ ├── details
│ │ │ │ ├── UserDetailsImpl.java
│ │ │ │ └── UserDetailsServiceImpl.java
│ │ │ ├── filters
│ │ │ │ └── TokenAuthenticationFilter.java
│ │ │ └── providers
│ │ │ │ └── TokenAuthenticationProvider.java
│ │ │ └── services
│ │ │ ├── LoginService.java
│ │ │ ├── LoginServiceImpl.java
│ │ │ ├── ProductsService.java
│ │ │ ├── ProductsServiceImpl.java
│ │ │ ├── UsersService.java
│ │ │ └── UsersServiceImpl.java
│ └── resources
│ │ ├── application.properties
│ │ └── requests.http
│ └── test
│ └── java
│ └── ru
│ └── itpark
│ └── app
│ └── SpringBootDemoApplicationTests.java
├── 16. Long Polling
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── chat
│ │ │ ├── LongPollingDemoApplication.java
│ │ │ ├── controllers
│ │ │ ├── ChatController.java
│ │ │ └── MessagesController.java
│ │ │ └── dto
│ │ │ └── MessageDto.java
│ └── resources
│ │ ├── application.properties
│ │ ├── static
│ │ └── js
│ │ │ └── chat.js
│ │ └── templates
│ │ └── chat.ftl
│ └── test
│ └── java
│ └── ru
│ └── itis
│ └── chat
│ └── LongPollingDemoApplicationTests.java
├── 17. WebSockets
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── chats
│ │ │ ├── ChatsApplication.java
│ │ │ ├── configs
│ │ │ └── WebSocketConfiguration.java
│ │ │ ├── controllers
│ │ │ └── IndexController.java
│ │ │ ├── forms
│ │ │ └── MessageDto.java
│ │ │ └── handlers
│ │ │ ├── AuthHandshakeHandler.java
│ │ │ └── MessagesWebSocketHandler.java
│ └── resources
│ │ ├── application.properties
│ │ ├── static
│ │ └── js
│ │ │ └── chat_web_sockets.js
│ │ └── templates
│ │ └── index_web_sockets.ftl
│ └── test
│ └── java
│ └── ru
│ └── itis
│ └── chats
│ └── ChatsApplicationTests.java
├── 18. SpringCloud
├── CatsService
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── services
│ │ │ └── cats
│ │ │ ├── app
│ │ │ └── CatsServiceApplication.java
│ │ │ ├── controllers
│ │ │ └── CatsUsersController.java
│ │ │ ├── dto
│ │ │ └── CatDto.java
│ │ │ └── service
│ │ │ ├── CatsService.java
│ │ │ └── CatsServiceImpl.java
│ │ └── resources
│ │ └── application.properties
├── CountriesService
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── services
│ │ │ └── countries
│ │ │ ├── app
│ │ │ └── CountriesServiceApplication.java
│ │ │ ├── controllers
│ │ │ └── CountriesController.java
│ │ │ ├── dto
│ │ │ └── FlagDto.java
│ │ │ └── service
│ │ │ ├── CountriesService.java
│ │ │ └── CountriesServiceImpl.java
│ │ └── resources
│ │ └── application.properties
├── ServiceRegistry
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── services
│ │ │ └── ServiceRegistryApplication.java
│ │ └── resources
│ │ └── application.properties
├── UsersInfoService
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── services
│ │ │ └── info
│ │ │ ├── app
│ │ │ └── UserInfoServiceApplication.java
│ │ │ └── dto
│ │ │ ├── CatDto.java
│ │ │ ├── FlagDto.java
│ │ │ └── InfoUserDto.java
│ │ └── resources
│ │ └── application.properties
└── ZuulService
│ ├── pom.xml
│ └── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ └── gateway
│ │ └── app
│ │ ├── DocumentationController.java
│ │ └── ZuulApplication.java
│ └── resources
│ ├── application.properties
│ └── application.yml
├── 19. Websockets-stomp
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── ru
│ │ └── itis
│ │ └── websockets
│ │ ├── app
│ │ └── Application.java
│ │ ├── config
│ │ └── StompWebSocketConfig.java
│ │ ├── controllers
│ │ └── MessageController.java
│ │ └── interceptors
│ │ └── CustomInterceptor.java
│ └── resources
│ └── static
│ ├── index.html
│ └── js
│ └── app.js
├── 20. Prepared Statements
├── README.md
├── images
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ ├── 7.png
│ └── 8.png
├── pom.xml
├── sql
│ └── queries.sql
└── src
│ └── main
│ └── java
│ └── MainForPreparedStatements.java
├── 21. Hateoas Rest
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── asciidoc
│ │ └── apidoc.adoc
│ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── hateoasrest
│ │ │ ├── HateoasRestApplication.java
│ │ │ ├── config
│ │ │ └── CoursesRepresentationProcessor.java
│ │ │ ├── controllers
│ │ │ └── CoursesController.java
│ │ │ ├── models
│ │ │ ├── Course.java
│ │ │ ├── Lesson.java
│ │ │ └── Student.java
│ │ │ ├── repositories
│ │ │ ├── CoursesRepository.java
│ │ │ ├── LessonsRepository.java
│ │ │ └── StudentsRepository.java
│ │ │ └── services
│ │ │ ├── CoursesService.java
│ │ │ └── CoursesServiceImpl.java
│ └── resources
│ │ └── application.properties
│ └── test
│ └── java
│ └── ru
│ └── itis
│ └── hateoasrest
│ ├── CoursesTest.java
│ └── HateoasRestApplicationTests.java
├── 22. Covid Service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── ru
│ │ │ └── itis
│ │ │ └── covid
│ │ │ ├── CovidServiceApplication.java
│ │ │ ├── clients
│ │ │ ├── Covid19ApiClientWebClientImpl.java
│ │ │ ├── CovidClient.java
│ │ │ ├── TheVirusTrackerClientWebClientImpl.java
│ │ │ └── rest
│ │ │ │ ├── Covid19ApiClientRestTemplateImpl.java
│ │ │ │ └── TheVirusTrackerClientRestTemplateImpl.java
│ │ │ ├── controllers
│ │ │ └── CovidController.java
│ │ │ ├── entries
│ │ │ ├── Covid19ApiRecord.java
│ │ │ ├── CovidStatistic.java
│ │ │ ├── TheVirusTrackerRecord.java
│ │ │ └── TheVirusTrackerResponse.java
│ │ │ └── service
│ │ │ ├── CovidService.java
│ │ │ └── CovidServiceImpl.java
│ └── resources
│ │ └── application.properties
│ └── test
│ └── java
│ └── ru
│ └── itis
│ └── covid
│ └── CovidServiceApplicationTests.java
├── 23. Rabbit MQ Producers
├── downloaded
│ ├── 346d13e7-0e3f-4b07-a313-8c75ef972dcc.jpeg
│ ├── dea4123b-b443-49d1-a358-8322e5eb00c8.pdf
│ └── f579bd13-05e0-49e5-95cc-4a9ffcc043ef.pdf
├── files.txt
├── images.txt
├── pom.xml
└── src
│ └── main
│ └── java
│ └── ru
│ └── itis
│ ├── example1
│ ├── Consumer.java
│ └── Producer.java
│ ├── example2
│ ├── ImagesDownloader.java
│ └── ImagesProducer.java
│ ├── example3
│ ├── ImagesDownloader.java
│ └── ImagesProducer.java
│ ├── example4
│ ├── ImagesJpegDownloader.java
│ ├── ImagesPngDownloader.java
│ └── ImagesProducer.java
│ ├── example5
│ ├── DocumentsDownloader.java
│ ├── FilesAnalytics.java
│ ├── FilesProducer.java
│ ├── ImagesJpegDownloader.java
│ └── ImagesPngDownloader.java
│ └── example6
│ ├── Client.java
│ ├── MainClient.java
│ ├── MainServer.java
│ └── Server.java
├── Rest.md
└── Spring Security.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 |
3 | # Mobile Tools for Java (J2ME)
4 | .mtj.tmp/
5 |
6 | # Package Files #
7 | *.jar
8 | *.war
9 | *.ear
10 |
11 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
12 | hs_err_pid*
13 | .settings/
14 | .project
15 | .classpath
16 | .springBeans
17 | **/target/
18 | /commit.txt
19 | /*/logs/
20 | /*/wrk/
21 | effective-pom.xml
22 | effective-settings.xml
23 | /*/.gwt/
24 | .cache
25 | .idea/
26 | *.iml
27 | *.log
28 | *.lck
29 | *.jar
30 | */dependency-reduced-pom.xml
31 | node_modules
32 |
--------------------------------------------------------------------------------
/02. NodeJsExample/app/routes/index.js:
--------------------------------------------------------------------------------
1 | // подключаем модуль users_routes
2 | const usersRoutes = require('./users_routes');
3 | // создаем функцию для export-а, именно ее вызываем в server.js
4 | module.exports = function(app, fs) {
5 | // вызываем функцию из users_routes для обработки запросов
6 | usersRoutes(app, fs);
7 | };
--------------------------------------------------------------------------------
/02. NodeJsExample/app/routes/users_routes.js:
--------------------------------------------------------------------------------
1 | bodyParser = require('body-parser').json();
2 |
3 | // описываем фунцию для обработки post-запроса на url /users
4 | module.exports = function (app, fs) {
5 | app.post('/users', bodyParser, function (request, response) {
6 | // вытаскиваю тело в формате JSON
7 | var body = request.body;
8 | console.log(body);
9 | // записываю его в файл
10 | fs.appendFile('data.txt', body.name + ' ' + body.surname + '\n',
11 | function (err) {
12 | if (err) throw err;
13 | console.log('Saved!');
14 | response.redirect("/html/index.html");
15 | });
16 | });
17 | app.get('/users', function (request, response) {
18 | fs.readFile('data.txt', 'utf-8', function(err, data) {
19 | var lines = data.split('\n');
20 |
21 | var result = [];
22 | for (var i = 0; i < lines.length; i++) {
23 | result.push({'name' : lines[i].split(' ')[0],
24 | 'surname': lines[i].split(' ')[1]});
25 | }
26 | response.setHeader('Content-Type', 'application/json');
27 | response.send(JSON.stringify(result));
28 | });
29 | });
30 | };
--------------------------------------------------------------------------------
/02. NodeJsExample/data.txt:
--------------------------------------------------------------------------------
1 | Марсель Сидиков
2 | Дария Шагиева
3 | Максим Поздеев
4 | Эмиль Пашаев
5 | Ильнур Сагитов
6 | Марат Исангулов
7 | Даша Выпендрежница
8 |
--------------------------------------------------------------------------------
/02. NodeJsExample/server.js:
--------------------------------------------------------------------------------
1 | // Объявляем четыре константы, каждая из констант
2 | // содержит модуль из определенной библиотеки
3 |
4 | // для отдачи статики
5 | const express = require('express');
6 | // создаем экземпляр объекта
7 | const app = express();
8 | // для работы с файловым хранилищем
9 | const fs = require('fs');
10 | // для обработки тела post-запросов
11 | const bodyParser = require('body-parser');
12 | // подключаем его к модулю express
13 | app.use(bodyParser.urlencoded({ extended: true }));
14 | // вызываем функцию для обработки маршутов из папки
15 | // routes (конкретно файл index.js, в эту функцию
16 | // передаем объект express и объект файлового хранилища
17 | require('./app/routes')(app, fs);
18 | // говорим, что раздаем папку public
19 | app.use(express.static('public'));
20 | app.listen(80);
21 | console.log("Server started at 80");
--------------------------------------------------------------------------------
/03. FormExample/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Google IT
5 |
6 |
7 | Google IT
8 |
13 |
14 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/app/Application.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.app;
2 |
3 | import java.sql.*;
4 |
5 | /**
6 | * 03.09.2018
7 | * Application
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | public class Application {
13 | // данные для подключения
14 | private static final String USERNAME = "postgres";
15 | private static final String PASSWORD = "qwerty007";
16 | private static final String URL = "jdbc:postgresql://localhost:5432/pizza_db";
17 |
18 | public static void main(String[] args) {
19 | try {
20 | // подключились к базе данных
21 | Connection connection =
22 | DriverManager.getConnection(URL, USERNAME, PASSWORD);
23 |
24 | // создали "Выражение"
25 | Statement statement = connection.createStatement();
26 | // выполнили запрос к базе данных
27 | // и передали указатель на первую строку результата
28 | // в java-код, а точнее - в объект класса
29 | // resultSet
30 | ResultSet resultSet =
31 | statement.executeQuery("SELECT id, first_name from pizza_user");
32 | // функция next() переводит указатель дальше,
33 | // и одновременно возвращает true или false,
34 | // в зависимости от того, есть дальше еще строки или нет
35 | while (resultSet.next()) {
36 | // вывели на экран строку "строкового" типа с названием
37 | // first_name
38 | System.out.println(resultSet.getLong("id") + " " + resultSet.getString("first_name"));
39 | }
40 |
41 | } catch (SQLException e) {
42 | throw new IllegalStateException(e);
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/app/BuilderDemo.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.app;
2 |
3 | import ru.itis.pizza.models.User;
4 |
5 | /**
6 | * 03.09.2018
7 | * BuilderDemo
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | public class BuilderDemo {
13 | public static void main(String[] args) {
14 | User user = User.builder()
15 | .email("sidikov.marsel@gmail.com")
16 | .firstName("Marsel")
17 | .lastName("Sidikov")
18 | .build();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/app/OrderRepositoryDemo.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.app;
2 |
3 | import lombok.SneakyThrows;
4 | import ru.itis.pizza.models.Order;
5 | import ru.itis.pizza.models.User;
6 | import ru.itis.pizza.repositories.OrderRepository;
7 | import ru.itis.pizza.repositories.OrderRepositoryConnectionImpl;
8 | import ru.itis.pizza.repositories.UsersRepository;
9 | import ru.itis.pizza.repositories.UsersRepositoryConnectionImpl;
10 |
11 | import java.sql.Connection;
12 | import java.sql.DriverManager;
13 | import java.util.Optional;
14 |
15 | /**
16 | * 10.09.2018
17 | * OrderRepositoryDemo
18 | *
19 | * @author Sidikov Marsel (First Software Engineering Platform)
20 | * @version v1.0
21 | */
22 | public class OrderRepositoryDemo {
23 | private static final String USERNAME = "postgres";
24 | private static final String PASSWORD = "qwerty007";
25 | private static final String URL = "jdbc:postgresql://localhost:5432/pizza_db";
26 |
27 | @SneakyThrows
28 | public static void main(String[] args) {
29 | Connection connection =
30 | DriverManager.getConnection(URL, USERNAME, PASSWORD);
31 | OrderRepository orderRepository = new OrderRepositoryConnectionImpl(connection);
32 | orderRepository.findOne(5L).ifPresent(System.out::println);
33 | // Optional orderOptional = orderRepository.findOne(5L);
34 | // if (orderOptional.isPresent()) {
35 | // System.out.println(orderOptional.get());
36 | // }
37 |
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/app/UsersRepositoryDemo.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.app;
2 |
3 | import lombok.SneakyThrows;
4 | import ru.itis.pizza.models.User;
5 | import ru.itis.pizza.repositories.UsersRepository;
6 | import ru.itis.pizza.repositories.UsersRepositoryConnectionImpl;
7 |
8 | import java.sql.Connection;
9 | import java.sql.DriverManager;
10 | import java.util.List;
11 |
12 | /**
13 | * 03.09.2018
14 | * UsersRepositoryDemo
15 | *
16 | * @author Sidikov Marsel (First Software Engineering Platform)
17 | * @version v1.0
18 | */
19 | public class UsersRepositoryDemo {
20 |
21 | // данные для подключения
22 | private static final String USERNAME = "postgres";
23 | private static final String PASSWORD = "qwerty007";
24 | private static final String URL = "jdbc:postgresql://localhost:5432/pizza_db";
25 |
26 | @SneakyThrows
27 | public static void main(String[] args) {
28 | Connection connection =
29 | DriverManager.getConnection(URL, USERNAME, PASSWORD);
30 | UsersRepository usersRepository = new UsersRepositoryConnectionImpl(connection);
31 | usersRepository.findOne(2L).ifPresent(System.out::println);
32 | List users = usersRepository.findAll();
33 | int i = 0;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/app/UsersRepositoryFindDemo.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.app;
2 |
3 | import lombok.SneakyThrows;
4 | import ru.itis.pizza.models.User;
5 | import ru.itis.pizza.repositories.UsersRepository;
6 | import ru.itis.pizza.repositories.UsersRepositoryConnectionImpl;
7 |
8 | import java.sql.Connection;
9 | import java.sql.DriverManager;
10 | import java.util.Optional;
11 |
12 | /**
13 | * 01.10.2018
14 | * UsersRepositoryFindDemo
15 | *
16 | * @author Sidikov Marsel (First Software Engineering Platform)
17 | * @version v1.0
18 | */
19 | public class UsersRepositoryFindDemo {
20 | private static final String USERNAME = "postgres";
21 | private static final String PASSWORD = "qwerty007";
22 | private static final String URL = "jdbc:postgresql://localhost:5432/pizza_db";
23 |
24 | @SneakyThrows
25 | public static void main(String[] args) {
26 | Connection connection =
27 | DriverManager.getConnection(URL, USERNAME, PASSWORD);
28 | UsersRepository usersRepository = new UsersRepositoryConnectionImpl(connection);
29 | Optional optionalUser = usersRepository.findOne(10L);
30 | System.out.println(optionalUser.get());
31 |
32 | System.out.println(usersRepository.findAll());
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/app/UsersRepositorySaveDemo.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.app;
2 |
3 | import lombok.SneakyThrows;
4 | import ru.itis.pizza.models.User;
5 | import ru.itis.pizza.repositories.UsersRepository;
6 | import ru.itis.pizza.repositories.UsersRepositoryConnectionImpl;
7 |
8 | import java.sql.Connection;
9 | import java.sql.DriverManager;
10 |
11 | /**
12 | * 10.09.2018
13 | * UsersRepositorySaveDemo
14 | *
15 | * @author Sidikov Marsel (First Software Engineering Platform)
16 | * @version v1.0
17 | */
18 | public class UsersRepositorySaveDemo {
19 | private static final String USERNAME = "postgres";
20 | private static final String PASSWORD = "qwerty007";
21 | private static final String URL = "jdbc:postgresql://localhost:5432/pizza_db";
22 |
23 | @SneakyThrows
24 | public static void main(String[] args) {
25 | Connection connection =
26 | DriverManager.getConnection(URL, USERNAME, PASSWORD);
27 | UsersRepository usersRepository = new UsersRepositoryConnectionImpl(connection);
28 | User maxim = User.builder()
29 | .firstName("Максим")
30 | .lastName("Поздеев")
31 | .email("maximka@mail.ru")
32 | .hashPassword("');DROP TABLE pizza; INSERT INTO pizza_user(first_name) values('temp")
33 | .build();
34 | usersRepository.save(maxim);
35 |
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/context/LocaleListener.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.context;
2 |
3 | import ru.itis.pizza.localization.Localizations;
4 |
5 | import javax.servlet.ServletContext;
6 | import javax.servlet.ServletContextEvent;
7 | import javax.servlet.ServletContextListener;
8 | import java.util.Map;
9 |
10 | /**
11 | * 15.10.2018
12 | * LocaleListener
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | public class LocaleListener implements ServletContextListener {
18 | @Override
19 | public void contextInitialized(ServletContextEvent sce) {
20 | ServletContext context = sce.getServletContext();
21 | Map localeEn = Localizations.loadLocalization("en");
22 | Map localeRu = Localizations.loadLocalization("ru");
23 | Map localePo = Localizations.loadLocalization("po");
24 | context.setAttribute("localeEn", localeEn);
25 | context.setAttribute("localeRu", localeRu);
26 | context.setAttribute("localePo", localePo);
27 | }
28 |
29 | @Override
30 | public void contextDestroyed(ServletContextEvent sce) {
31 |
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/context/UsersServiceListener.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.context;
2 |
3 | import lombok.SneakyThrows;
4 | import ru.itis.pizza.repositories.UsersRepository;
5 | import ru.itis.pizza.repositories.UsersRepositoryConnectionImpl;
6 | import ru.itis.pizza.services.UsersService;
7 | import ru.itis.pizza.services.UsersServiceImpl;
8 |
9 | import javax.servlet.ServletContext;
10 | import javax.servlet.ServletContextEvent;
11 | import javax.servlet.ServletContextListener;
12 | import java.sql.Connection;
13 | import java.sql.DriverManager;
14 |
15 | /**
16 | * 15.10.2018
17 | * UsersServiceListener
18 | *
19 | * @author Sidikov Marsel (First Software Engineering Platform)
20 | * @version v1.0
21 | */
22 | public class UsersServiceListener implements ServletContextListener {
23 |
24 | private static final String USERNAME = "postgres";
25 | private static final String PASSWORD = "qwerty007";
26 | private static final String URL = "jdbc:postgresql://localhost:5432/pizza_db";
27 |
28 | @Override
29 | @SneakyThrows
30 | public void contextInitialized(ServletContextEvent sce) {
31 | Class.forName("org.postgresql.Driver");
32 | Connection connection =
33 | DriverManager.getConnection(URL, USERNAME, PASSWORD);
34 | UsersRepository usersRepository = new UsersRepositoryConnectionImpl(connection);
35 | UsersService usersService = new UsersServiceImpl(usersRepository);
36 | ServletContext context = sce.getServletContext();
37 | context.setAttribute("usersService", usersService);
38 | }
39 |
40 | @Override
41 | public void contextDestroyed(ServletContextEvent sce) {
42 |
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/forms/LoginForm.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.forms;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 01.10.2018
10 | * LoginForm
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class LoginForm {
20 | private String email;
21 | private String password;
22 | }
23 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/forms/UserForm.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.forms;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 01.10.2018
10 | * UserForm
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class UserForm {
20 | private String email;
21 | private String password;
22 | private String firstName;
23 | private String lastName;
24 | }
25 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/localization/Localizations.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.localization;
2 |
3 | import lombok.SneakyThrows;
4 |
5 | import java.io.File;
6 | import java.util.HashMap;
7 | import java.util.Map;
8 | import java.util.Scanner;
9 |
10 | /**
11 | * 15.10.2018
12 | * Localizations
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | public class Localizations {
18 | @SneakyThrows
19 | public static Map loadLocalization(String locale) {
20 | Scanner scanner = new Scanner(new File("C:\\Users\\admin.WIN-IPM3OA3VQNQ\\Desktop\\Java\\JAVA_ENTERPRISE_2\\04. PizzaService\\src\\main\\resources\\messages\\messages_" + locale + ".properties"));
21 |
22 | Map localeMap = new HashMap<>();
23 |
24 | while (scanner.hasNext()) {
25 | String currentValue = scanner.nextLine();
26 | String localeValue[] = currentValue.split("=");
27 | localeMap.put(localeValue[0], localeValue[1]);
28 | }
29 |
30 | return localeMap;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/mappers/RowMapper.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.mappers;
2 |
3 | import java.sql.ResultSet;
4 |
5 | /**
6 | * 03.09.2018
7 | * RowMapper
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | public interface RowMapper {
13 | T rowMap(ResultSet resultSet);
14 | }
15 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/models/Order.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.models;
2 |
3 | import lombok.*;
4 |
5 | import java.time.LocalDateTime;
6 | import java.util.List;
7 |
8 | /**
9 | * 03.09.2018
10 | * Order
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Getter
16 | @Setter
17 | @ToString(exclude = "client")
18 | @EqualsAndHashCode
19 | @Builder
20 | public class Order {
21 | private Long id;
22 | private User client;
23 | private List pizzas;
24 | private String address;
25 | private LocalDateTime dateTime;
26 | }
27 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/models/Pizza.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.models;
2 |
3 | import lombok.*;
4 |
5 | /**
6 | * 03.09.2018
7 | * Pizza
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | @Getter
13 | @Setter
14 | @ToString
15 | @EqualsAndHashCode
16 | @Builder
17 | public class Pizza {
18 | private Long id;
19 | private String name;
20 | private Double price;
21 | }
22 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/repositories/CrudRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.repositories;
2 |
3 | import ru.itis.pizza.models.User;
4 |
5 | import java.util.List;
6 | import java.util.Optional;
7 |
8 | /**
9 | * 03.09.2018
10 | * CrudRepository
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | public interface CrudRepository {
16 | Optional findOne(Long id);
17 | void save(T model);
18 | void delete(Long id);
19 |
20 | List findAll();
21 | }
22 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/repositories/OrderRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.repositories;
2 |
3 | import ru.itis.pizza.models.Order;
4 |
5 | /**
6 | * 10.09.2018
7 | * OrderRepository
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | public interface OrderRepository extends CrudRepository {
13 | }
14 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/repositories/UsersRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.repositories;
2 |
3 | import ru.itis.pizza.models.User;
4 |
5 | import java.util.List;
6 | import java.util.Optional;
7 |
8 | /**
9 | * 03.09.2018
10 | * UsersRepository
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | public interface UsersRepository extends CrudRepository {
16 | List findAllByFirstName(String firstName);
17 |
18 | Optional findOneByEmail(String email);
19 | }
20 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/java/ru/itis/pizza/services/UsersService.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.services;
2 |
3 | import ru.itis.pizza.forms.LoginForm;
4 | import ru.itis.pizza.forms.UserForm;
5 |
6 | /**
7 | * 01.10.2018
8 | * UsersService
9 | *
10 | * @author Sidikov Marsel (First Software Engineering Platform)
11 | * @version v1.0
12 | */
13 | public interface UsersService {
14 | void signUp(UserForm userForm);
15 |
16 | void signIn(LoginForm loginForm);
17 | }
18 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/resources/messages/messages_en.properties:
--------------------------------------------------------------------------------
1 | signup.contact.us=Contact us
2 | signup.email=Email
3 | signup.password=Password
4 | signup.firstname=First Name
5 | signup.lastname=Last Name
6 | signup.signup=Sign Up
7 | signin.login.message=Login!!!!
8 | signin.email=Email
9 | signin.password=Password
10 | signin.signin=Login
11 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/resources/messages/messages_po.properties:
--------------------------------------------------------------------------------
1 | signup.contact.us=Poland
2 | signup.email=Poland
3 | signup.password=Poland
4 | signup.firstname=Poland
5 | signup.lastname=Poland
6 | signup.signup=Poland
7 | signin.login.message=Poland
8 | signin.email=Poland
9 | signin.password=Poland
10 | signin.signin=Poland
11 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/resources/messages/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarselSidikov/JAVA_ENTERPRISE_2/0a499cbe9edd566ece80e1efedbfafef374abf80/04. PizzaService/src/main/resources/messages/messages_ru.properties
--------------------------------------------------------------------------------
/04. PizzaService/src/main/resources/queries.sql:
--------------------------------------------------------------------------------
1 | select name, order_user.user_name
2 | from pizza
3 | join order_pizza o on pizza.id = o.pizza_id
4 | join (select first_name as user_name, o.id as order_id
5 | from pizza_user
6 | join order_table o on pizza_user.id = o.client_id
7 | ORDER BY user_name) as order_user on order_user.order_id = o.order_id;
8 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | ru.itis.pizza.context.LocaleListener
9 |
10 |
11 |
12 | ru.itis.pizza.context.UsersServiceListener
13 |
14 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/webapp/jsp/signIn.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 |
3 |
4 | Title
5 |
6 |
7 |
8 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/04. PizzaService/src/main/webapp/jsp/signUp.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 |
3 |
4 | Title
5 |
6 |
7 |
8 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/05. SimpleWebProject/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | ru.itis
8 | simple-web-project
9 | 0.1
10 | war
11 |
12 |
13 |
14 |
15 |
16 | javax.servlet
17 | javax.servlet-api
18 | 3.0.1
19 | provided
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/05. SimpleWebProject/src/main/java/ru/itis/pizza/servlets/HelloPageServlet.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.servlets;
2 |
3 | import javax.servlet.ServletException;
4 | import javax.servlet.http.HttpServlet;
5 | import javax.servlet.http.HttpServletRequest;
6 | import javax.servlet.http.HttpServletResponse;
7 | import java.io.IOException;
8 | import java.io.PrintWriter;
9 |
10 | /**
11 | * 17.09.2018
12 | * HelloPageServlet
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | public class HelloPageServlet extends HttpServlet {
18 | @Override
19 | protected void doGet(HttpServletRequest request,
20 | HttpServletResponse response) throws ServletException, IOException {
21 | String name = request.getParameter("name");
22 | PrintWriter writer = response.getWriter();
23 |
24 | writer.write(" Welcome, Welcome
");
25 | writer.write("Hello, " + name + "
");
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/05. SimpleWebProject/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 | helloServlet
10 | ru.itis.pizza.servlets.HelloPageServlet
11 |
12 |
13 |
14 |
15 | helloServlet
16 | /hello
17 |
18 |
--------------------------------------------------------------------------------
/06. SpringJdbcAndDiExample/src/main/java/ru/itis/pizza/models/User.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.models;
2 |
3 | import lombok.*;
4 |
5 | /**
6 | * 22.10.2018
7 | * User
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | @Data
13 | @AllArgsConstructor
14 | @NoArgsConstructor
15 | @Builder
16 | @EqualsAndHashCode(exclude = "hashPassword")
17 | public class User {
18 | private Long id;
19 | private String firstName;
20 | private String lastName;
21 | private String email;
22 | private String hashPassword;
23 | }
24 |
--------------------------------------------------------------------------------
/06. SpringJdbcAndDiExample/src/main/java/ru/itis/pizza/repositories/CrudRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.repositories;
2 |
3 | import java.util.List;
4 | import java.util.Optional;
5 |
6 | /**
7 | * 03.09.2018
8 | * CrudRepository
9 | *
10 | * @author Sidikov Marsel (First Software Engineering Platform)
11 | * @version v1.0
12 | */
13 | public interface CrudRepository {
14 | Optional findOne(Long id);
15 | void save(T model);
16 | void delete(Long id);
17 |
18 | List findAll();
19 | }
20 |
--------------------------------------------------------------------------------
/06. SpringJdbcAndDiExample/src/main/java/ru/itis/pizza/repositories/UsersRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.repositories;
2 |
3 | import ru.itis.pizza.models.User;
4 |
5 | import java.util.List;
6 | import java.util.Optional;
7 |
8 | /**
9 | * 03.09.2018
10 | * UsersRepository
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | public interface UsersRepository extends CrudRepository {
16 | }
17 |
--------------------------------------------------------------------------------
/06. SpringJdbcAndDiExample/src/main/java/ru/itis/pizza/repositories/old/RowMapper.java:
--------------------------------------------------------------------------------
1 | package ru.itis.pizza.repositories.old;
2 |
3 | import java.sql.ResultSet;
4 |
5 | /**
6 | * 03.09.2018
7 | * RowMapper
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | public interface RowMapper {
13 | T rowMap(ResultSet resultSet);
14 | }
15 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/app/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis.app;
2 |
3 | import ru.itis.context.ApplicationContext;
4 | import ru.itis.context.ApplicationContextPrimitiveImpl;
5 | import ru.itis.context.Contexts;
6 | import ru.itis.repositories.UsersRepository;
7 |
8 | /**
9 | * 19.11.2018
10 | * Main
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | public class Main {
16 | public static void main(String[] args) {
17 | ApplicationContext context = Contexts.primitive();
18 | UsersRepository usersRepository = context.getComponent(UsersRepository.class);
19 |
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/context/ApplicationContext.java:
--------------------------------------------------------------------------------
1 | package ru.itis.context;
2 |
3 | /**
4 | * 19.11.2018
5 | * ApplicationContext
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public interface ApplicationContext {
11 | T getComponent(Class componentClass);
12 | }
13 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/context/ApplicationContextPrimitiveImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis.context;
2 |
3 | import org.springframework.jdbc.datasource.DriverManagerDataSource;
4 | import ru.itis.repositories.UsersRepositoryJdbcTemplateImpl;
5 |
6 | import javax.sql.DataSource;
7 | import java.util.HashMap;
8 | import java.util.Map;
9 |
10 | /**
11 | * 19.11.2018
12 | * ApplicationContextPrimitiveImpl
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | public class ApplicationContextPrimitiveImpl implements ApplicationContext {
18 | private static ApplicationContextPrimitiveImpl context;
19 |
20 | static {
21 | context = new ApplicationContextPrimitiveImpl();
22 | }
23 |
24 | private Map components;
25 |
26 | private ApplicationContextPrimitiveImpl() {
27 | components = new HashMap<>();
28 | components.put("dataSource", new DriverManagerDataSource());
29 | components.put("usersRepository", new UsersRepositoryJdbcTemplateImpl((DataSource) components.get("dataSource")));
30 | }
31 |
32 | public static ApplicationContextPrimitiveImpl getContext() {
33 | return context;
34 | }
35 |
36 | public T getComponent(Class componentClass) {
37 | for (Object component : components.values()) {
38 | if (componentClass.isAssignableFrom(component.getClass())) {
39 | return (T)component;
40 | }
41 | }
42 | return null;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/context/Contexts.java:
--------------------------------------------------------------------------------
1 | package ru.itis.context;
2 |
3 | /**
4 | * 19.11.2018
5 | * Contexts
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class Contexts {
11 | public static ApplicationContextPrimitiveImpl primitive() {
12 | return ApplicationContextPrimitiveImpl.getContext();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/dto/UserDto.java:
--------------------------------------------------------------------------------
1 | package ru.itis.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 | import ru.itis.models.User;
8 |
9 | import java.util.List;
10 | import java.util.stream.Collectors;
11 |
12 | /**
13 | * 26.11.2018
14 | * UserDto
15 | *
16 | * @author Sidikov Marsel (First Software Engineering Platform)
17 | * @version v1.0
18 | */
19 | @Data
20 | @AllArgsConstructor
21 | @NoArgsConstructor
22 | @Builder
23 | public class UserDto {
24 | private String name;
25 | private Integer age;
26 |
27 | public static UserDto from(User user) {
28 | return UserDto.builder()
29 | .age(user.getAge())
30 | .name(user.getName())
31 | .build();
32 | }
33 |
34 | public static List from(List users) {
35 | return users.stream().map(UserDto::from).collect(Collectors.toList());
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/forms/SignInForm.java:
--------------------------------------------------------------------------------
1 | package ru.itis.forms;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 25.10.2018
10 | * SignInForm
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @NoArgsConstructor
17 | @AllArgsConstructor
18 | @Builder
19 | public class SignInForm {
20 | private String name;
21 | private String password;
22 | }
23 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/forms/SignUpForm.java:
--------------------------------------------------------------------------------
1 | package ru.itis.forms;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 25.10.2018
10 | * SignUpForm
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class SignUpForm {
20 | private String name;
21 | private String password;
22 | private Integer age;
23 | }
24 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/listeners/ComponentsListener.java:
--------------------------------------------------------------------------------
1 | package ru.itis.listeners;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 | import ru.itis.services.UsersService;
6 |
7 | import javax.servlet.ServletContextEvent;
8 | import javax.servlet.ServletContextListener;
9 |
10 | /**
11 | * 29.10.2018
12 | * ComponentsListener
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | public class ComponentsListener implements ServletContextListener {
18 | @Override
19 | public void contextInitialized(ServletContextEvent sce) {
20 | ApplicationContext context =
21 | new ClassPathXmlApplicationContext("ru.itis/context.xml");
22 | UsersService usersService = context.getBean(UsersService.class);
23 |
24 | sce.getServletContext().setAttribute("usersService", usersService);
25 | }
26 |
27 | @Override
28 | public void contextDestroyed(ServletContextEvent sce) {
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/models/Auth.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 25.10.2018
10 | * Auth
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class Auth {
20 |
21 | private Long id;
22 | private String cookieValue;
23 | private User user;
24 | }
25 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/models/Basket.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * 22.10.2018
11 | * Basket
12 | *
13 | * @author Sidikov Marsel (First Software Engineering Platform)
14 | * @version v1.0
15 | */
16 | @Data
17 | @AllArgsConstructor
18 | @NoArgsConstructor
19 | public class Basket {
20 | private Long id;
21 | private User user;
22 | private List products;
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/models/Product.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 22.10.2018
10 | * Product
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class Product {
20 | private Long id;
21 | private String title;
22 | }
23 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/models/User.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 22.10.2018
10 | * User
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class User {
20 | private Long id;
21 | private String name;
22 | private String passwordHash;
23 | private Integer age;
24 | }
25 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/repositories/AuthRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.repositories;
2 |
3 | import ru.itis.models.Auth;
4 |
5 | import java.util.Optional;
6 |
7 | /**
8 | * 25.10.2018
9 | * AuthRepository
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public interface AuthRepository extends CrudRepository {
15 | Optional findByCookieValue(String cookieValue);
16 | }
17 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/repositories/CrudRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.repositories;
2 |
3 | import java.util.List;
4 | import java.util.Optional;
5 |
6 | /**
7 | * 22.10.2018
8 | * CrudRepository
9 | *
10 | * @author Sidikov Marsel (First Software Engineering Platform)
11 | * @version v1.0
12 | */
13 | public interface CrudRepository {
14 | List findAll();
15 | Optional find(Long id);
16 | void save(T model);
17 | void delete(Long id);
18 | void update(T model);
19 | }
20 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/repositories/UsersRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.repositories;
2 |
3 | import ru.itis.models.User;
4 |
5 | import java.util.Optional;
6 |
7 | /**
8 | * 22.10.2018
9 | * UsersRepository
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public interface UsersRepository extends CrudRepository {
15 | Optional findByName(String name);
16 | }
17 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/services/ProductsService.java:
--------------------------------------------------------------------------------
1 | package ru.itis.services;
2 |
3 | import ru.itis.models.Product;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 29.10.2018
9 | * ProductsService
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public interface ProductsService {
15 | List addProductToUserBasket(String cookieValue, Long productId);
16 | }
17 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/services/UsersService.java:
--------------------------------------------------------------------------------
1 | package ru.itis.services;
2 |
3 | import org.springframework.security.core.userdetails.User;
4 | import ru.itis.dto.UserDto;
5 | import ru.itis.forms.SignInForm;
6 | import ru.itis.forms.SignUpForm;
7 |
8 | import javax.swing.text.html.Option;
9 | import java.util.List;
10 | import java.util.Optional;
11 |
12 | /**
13 | * 25.10.2018
14 | * UsersService
15 | *
16 | * @author Sidikov Marsel (First Software Engineering Platform)
17 | * @version v1.0
18 | */
19 | public interface UsersService {
20 | void signUp(SignUpForm form);
21 |
22 | List findAll();
23 |
24 | Optional signIn(SignInForm form);
25 |
26 | boolean isExistByCookie(String cookieValue);
27 | }
28 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/servlets/MyFreemarkerServlet.java:
--------------------------------------------------------------------------------
1 | package ru.itis.servlets;
2 |
3 | import ru.itis.dto.UserDto;
4 | import ru.itis.services.UsersService;
5 |
6 | import javax.servlet.ServletConfig;
7 | import javax.servlet.ServletException;
8 | import javax.servlet.annotation.WebServlet;
9 | import javax.servlet.http.HttpServlet;
10 | import javax.servlet.http.HttpServletRequest;
11 | import javax.servlet.http.HttpServletResponse;
12 | import java.io.IOException;
13 | import java.util.List;
14 |
15 | /**
16 | * 26.11.2018
17 | * MyFreemarkerServlet
18 | *
19 | * @author Sidikov Marsel (First Software Engineering Platform)
20 | * @version v1.0
21 | */
22 | @WebServlet(name = "MyFreemarkerServlet", value = "/index")
23 | public class MyFreemarkerServlet extends HttpServlet {
24 |
25 | private UsersService service;
26 |
27 | @Override
28 | public void init(ServletConfig config) throws ServletException {
29 | service = (UsersService) config.getServletContext().getAttribute("usersService");
30 | }
31 |
32 | @Override
33 | protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
34 | List users = service.findAll();
35 | req.setAttribute("users", users);
36 | req.getRequestDispatcher("/ftl/index.ftl").forward(req, resp);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/servlets/ProductsServlet.java:
--------------------------------------------------------------------------------
1 | package ru.itis.servlets;
2 |
3 | import com.fasterxml.jackson.databind.ObjectMapper;
4 |
5 | import javax.servlet.ServletException;
6 | import javax.servlet.annotation.WebServlet;
7 | import javax.servlet.http.HttpServlet;
8 | import javax.servlet.http.HttpServletRequest;
9 | import javax.servlet.http.HttpServletResponse;
10 | import java.io.IOException;
11 | import java.util.ArrayList;
12 | import java.util.List;
13 |
14 | /**
15 | * 29.10.2018
16 | * ProductsServlet
17 | *
18 | * @author Sidikov Marsel (First Software Engineering Platform)
19 | * @version v1.0
20 | */
21 | @WebServlet("/products")
22 | public class ProductsServlet extends HttpServlet {
23 |
24 | private List ids = new ArrayList<>();
25 |
26 | private ObjectMapper objectMapper = new ObjectMapper();
27 |
28 | @Override
29 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
30 | ids.add(Integer.parseInt(request.getParameter("productId")));
31 | String json = objectMapper.writeValueAsString(ids);
32 | response.setContentType("application/json");
33 | response.getWriter().write(json);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/java/ru/itis/servlets/ShopServlet.java:
--------------------------------------------------------------------------------
1 | package ru.itis.servlets;
2 |
3 | import javax.servlet.ServletException;
4 | import javax.servlet.annotation.WebServlet;
5 | import javax.servlet.http.HttpServlet;
6 | import javax.servlet.http.HttpServletRequest;
7 | import javax.servlet.http.HttpServletResponse;
8 | import java.io.IOException;
9 |
10 | /**
11 | * 25.10.2018
12 | * ShopServlet
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | @WebServlet("/shop")
18 | public class ShopServlet extends HttpServlet {
19 | @Override
20 | protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
21 | req.getRequestDispatcher("jsp/shop.jsp").forward(req, resp);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/resources/ru.itis/context.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/resources/schema.sql:
--------------------------------------------------------------------------------
1 | create table shop_user (
2 | id bigserial primary key,
3 | name varchar(30)
4 | );
5 |
6 | create table product (
7 | id bigserial primary key,
8 | title varchar(30)
9 | );
10 |
11 | create table basket (
12 | id bigserial primary key,
13 | user_id bigint,
14 | foreign key (user_id) references shop_user(id)
15 | );
16 |
17 | create table basket_product (
18 | basket_id bigint,
19 | product_id bigint,
20 | foreign key (basket_id) references basket(id),
21 | foreign key (product_id) references product(id)
22 | );
--------------------------------------------------------------------------------
/07. Basket Example/src/main/webapp/ftl/index.ftl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | FreeMarker test
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Name |
13 | Price |
14 |
15 | <#list users as user>
16 |
17 | ${user.name} |
18 | ${user.age} |
19 |
20 | #list>
21 |
22 |
23 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/webapp/jsp/shop.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 |
3 |
4 |
8 | Shop
9 |
10 |
36 |
37 | SHOP
38 |
39 |
Мыло
40 |
41 |
Веревка
42 |
43 |
Стул
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/webapp/jsp/signIn.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 |
3 |
4 | Login
5 |
6 |
7 |
8 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/07. Basket Example/src/main/webapp/jsp/signUp.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 |
3 |
4 | Title
5 |
6 |
7 | Registration
8 |
9 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/08. DiExample/resources/application.properties:
--------------------------------------------------------------------------------
1 | printer.class=ru.itis.PrinterRedImpl
2 | terminal.class=ru.itis.BadTerminalImpl
3 | terminal.amount=100
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/BadTerminalImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 29.10.2018
5 | * BadTerminalImpl
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class BadTerminalImpl implements Terminal {
11 |
12 | public BadTerminalImpl(Double amount, Printer printer) {
13 |
14 | }
15 | @Override
16 | public double giveMoney(double sum) {
17 | System.out.println("НЕТ ДЕНЕГ, НО ВЫ ДЕРЖИТЕСЬ ТАМ");
18 | return 0;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | public class Main {
4 |
5 | public static void main(String[] args) {
6 | Terminal terminal = ApplicationContext
7 | .getContext().getComponent(Terminal.class, "terminal");
8 | terminal.giveMoney(10);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/PlainTerminal.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 29.10.2018
5 | * PlainTerminal
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class PlainTerminal implements Terminal {
11 | private double amount;
12 |
13 | private Printer printer;
14 |
15 | public PlainTerminal(Double amount, Printer printer) {
16 | this.amount = amount;
17 | this.printer = printer;
18 | }
19 |
20 | public double giveMoney(double sum) {
21 | if (sum > amount) {
22 | throw new IllegalArgumentException("No money no honey");
23 | } else {
24 | amount = amount - sum;
25 | printer.print(sum, amount);
26 | return sum;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/Printer.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 29.10.2018
5 | * Printer
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public interface Printer {
11 | void print(double sum, double amount);
12 | }
13 |
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/PrinterRedImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 29.10.2018
5 | * PrinterRedImpl
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class PrinterRedImpl implements Printer {
11 | @Override
12 | public void print(double sum, double amount) {
13 | System.err.println("ЗАПРОШЕНО: " + sum);
14 | System.err.println("СКАЗАЛИ ЖЕ ЧТО ОСТАЛОСЬ " + amount + " рублей, нищеброд!");
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/PrinterStandardImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 29.10.2018
5 | * PrinterStandardImpl
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class PrinterStandardImpl implements Printer {
11 |
12 | @Override
13 | public void print(double sum, double amount) {
14 | System.out.println("Запрошено: " + sum);
15 | System.out.println("Осталось: " + amount);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/Terminal.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 29.10.2018
5 | * Terminal
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public interface Terminal {
11 | public double giveMoney(double sum);
12 | }
13 |
--------------------------------------------------------------------------------
/08. DiExample/src/ru/itis/TerminalWithCashBack.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 29.10.2018
5 | * TerminalWithCashBack
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class TerminalWithCashBack implements Terminal {
11 | private final int CASH_BACK_PERCENT = 5;
12 |
13 | private double amount;
14 |
15 | private Printer printer;
16 |
17 | public TerminalWithCashBack(Double amount, Printer printer) {
18 | this.amount = amount;
19 | this.printer = printer;
20 | }
21 |
22 | public double giveMoney(double sum) {
23 | double newSum = sum + sum * 0.01 * CASH_BACK_PERCENT;
24 | if (newSum > amount) {
25 | throw new IllegalArgumentException("No money no honey");
26 | } else {
27 | amount = amount - newSum;
28 | printer.print(newSum, amount);
29 | return newSum;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/09. SpringDemo/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | ru.itis
8 | spring-demo
9 | 0.1
10 |
11 |
12 |
13 |
14 | org.springframework
15 | spring-context
16 | 5.1.3.RELEASE
17 |
18 |
19 |
20 |
21 |
22 |
23 | org.apache.maven.plugins
24 | maven-compiler-plugin
25 |
26 | 8
27 | 8
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/components/BadTerminalImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.components;
2 |
3 | /**
4 | * 29.10.2018
5 | * ru.itis.spring.components.BadTerminalImpl
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class BadTerminalImpl implements Terminal {
11 |
12 | public BadTerminalImpl(Double amount, Printer printer) {
13 |
14 | }
15 |
16 | @Override
17 | public double giveMoney(double sum) {
18 | System.out.println("НЕТ ДЕНЕГ, НО ВЫ ДЕРЖИТЕСЬ ТАМ");
19 | return 0;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/components/PlainTerminal.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.components;
2 |
3 | /**
4 | * 29.10.2018
5 | * ru.itis.spring.components.PlainTerminal
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class PlainTerminal implements Terminal {
11 | private double amount;
12 |
13 | private Printer printer;
14 |
15 | public PlainTerminal(Double amount, Printer printer) {
16 | this.amount = amount;
17 | this.printer = printer;
18 | }
19 |
20 | public double giveMoney(double sum) {
21 | if (sum > amount) {
22 | throw new IllegalArgumentException("No money no honey");
23 | } else {
24 | amount = amount - sum;
25 | printer.print(sum, amount);
26 | return sum;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/components/Printer.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.components;
2 |
3 | /**
4 | * 29.10.2018
5 | * ru.itis.spring.components.Printer
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public interface Printer {
11 | void print(double sum, double amount);
12 | }
13 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/components/PrinterRedImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.components;
2 |
3 | /**
4 | * 29.10.2018
5 | * ru.itis.spring.components.PrinterRedImpl
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class PrinterRedImpl implements Printer {
11 |
12 | private String prefix;
13 | private String name;
14 |
15 | public PrinterRedImpl(String name) {
16 | this.name = name;
17 | }
18 |
19 | public String getPrefix() {
20 | return prefix;
21 | }
22 |
23 | public void setPrefix(String prefix) {
24 | this.prefix = prefix;
25 | }
26 |
27 | @Override
28 | public void print(double sum, double amount) {
29 | System.out.println(name);
30 | System.out.println(prefix);
31 | System.err.println("ЗАПРОШЕНО: " + sum);
32 | System.err.println("СКАЗАЛИ ЖЕ ЧТО ОСТАЛОСЬ " + amount + " рублей, нищеброд!");
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/components/PrinterStandardImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.components;
2 |
3 | /**
4 | * 29.10.2018
5 | * ru.itis.spring.components.PrinterStandardImpl
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class PrinterStandardImpl implements Printer {
11 |
12 | @Override
13 | public void print(double sum, double amount) {
14 | System.out.println("Запрошено: " + sum);
15 | System.out.println("Осталось: " + amount);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/components/Terminal.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.components;
2 |
3 | /**
4 | * 29.10.2018
5 | * ru.itis.spring.components.Terminal
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public interface Terminal {
11 | public double giveMoney(double sum);
12 | }
13 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/components/TerminalWithCashBack.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.components;
2 |
3 | /**
4 | * 29.10.2018
5 | * ru.itis.spring.components.TerminalWithCashBack
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public class TerminalWithCashBack implements Terminal {
11 | private final int CASH_BACK_PERCENT = 5;
12 |
13 | private double amount;
14 |
15 | private Printer printer;
16 |
17 | public TerminalWithCashBack(Double amount, Printer printer) {
18 | this.amount = amount;
19 | this.printer = printer;
20 | }
21 |
22 | public double giveMoney(double sum) {
23 | double newSum = sum + sum * 0.01 * CASH_BACK_PERCENT;
24 | if (newSum > amount) {
25 | throw new IllegalArgumentException("No money no honey");
26 | } else {
27 | amount = amount - newSum;
28 | printer.print(newSum, amount);
29 | return newSum;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/java/JavaConfig.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.java;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.context.annotation.PropertySource;
7 | import ru.itis.spring.components.*;
8 |
9 | /**
10 | * 10.12.2018
11 | * JavaConfig
12 | *
13 | * @author Sidikov Marsel (First Software Engineering Platform)
14 | * @version v1.0
15 | */
16 | @Configuration
17 | @PropertySource("classpath:application.properties")
18 | public class JavaConfig {
19 |
20 | @Value("${printer.name}")
21 | private String printerName;
22 |
23 | @Value("${printer.prefix}")
24 | private String printerPrefix;
25 |
26 | @Value("${terminal.amount}")
27 | private Double terminalAmount;
28 |
29 | @Bean
30 | public Terminal terminal() {
31 | return new BadTerminalImpl(terminalAmount, printer());
32 | }
33 |
34 | @Bean
35 | public Terminal plainTerminal() {
36 | return new PlainTerminal(terminalAmount, printer());
37 | }
38 |
39 | @Bean
40 | public Printer printer() {
41 | PrinterRedImpl printerRed = new PrinterRedImpl(printerName);
42 | printerRed.setPrefix(printerPrefix);
43 | return printerRed;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/java/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.java;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext;
5 | import ru.itis.spring.components.Printer;
6 | import ru.itis.spring.components.Terminal;
7 |
8 | /**
9 | * 10.12.2018
10 | * Main
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | public class Main {
16 | public static void main(String[] args) {
17 | ApplicationContext context = new
18 | AnnotationConfigApplicationContext(JavaConfig.class);
19 |
20 | Terminal terminal = context.getBean("plainTerminal", Terminal.class);
21 | terminal.giveMoney(50);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/xml/demo/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.xml.demo;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 | import ru.itis.spring.components.Printer;
6 |
7 | /**
8 | * 03.12.2018
9 | * Main
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public class Main {
15 | public static void main(String[] args) {
16 | ApplicationContext context =
17 | new ClassPathXmlApplicationContext("context.xml");
18 |
19 | Printer printer = (Printer)context.getBean("printer");
20 | printer.print(100, 50);
21 |
22 |
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/xml/dependencies/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.xml.dependencies;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 | import ru.itis.spring.components.Terminal;
6 |
7 | /**
8 | * 03.12.2018
9 | * Main
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public class Main {
15 | public static void main(String[] args) {
16 | ApplicationContext context =
17 | new ClassPathXmlApplicationContext("context.xml");
18 |
19 | Terminal terminal = context.getBean(Terminal.class);
20 |
21 | terminal.giveMoney(200);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/java/ru/itis/spring/xml/scopes/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis.spring.xml.scopes;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 | import ru.itis.spring.components.PrinterRedImpl;
6 |
7 | /**
8 | * 03.12.2018
9 | * Main
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public class Main {
15 | public static void main(String[] args) {
16 | ApplicationContext context =
17 | new ClassPathXmlApplicationContext("context.xml");
18 |
19 | PrinterRedImpl printerRed = (PrinterRedImpl)context.getBean("printer");
20 | printerRed.print(100, 50);
21 |
22 | printerRed.setPrefix("НОВЫЙ ПРЕФИКС");
23 | printerRed.print(100, 50);
24 |
25 | PrinterRedImpl otherBean = (PrinterRedImpl)context.getBean("printer");
26 | otherBean.print(100, 60);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | printer.name=MainRedPrinter
2 | printer.prefix=Prefix
3 | terminal.amount=100
--------------------------------------------------------------------------------
/09. SpringDemo/src/main/resources/context.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/app/WebInitializer.java:
--------------------------------------------------------------------------------
1 | package ru.itis.app;
2 |
3 | import org.springframework.web.WebApplicationInitializer;
4 | import org.springframework.web.context.ContextLoaderListener;
5 | import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
6 | import org.springframework.web.servlet.DispatcherServlet;
7 | import ru.itis.config.AppConfig;
8 | import ru.itis.filters.LogFilter;
9 |
10 | import javax.servlet.ServletContext;
11 | import javax.servlet.ServletException;
12 | import javax.servlet.ServletRegistration;
13 |
14 | public class WebInitializer implements WebApplicationInitializer {
15 | @Override
16 | public void onStartup(ServletContext container) throws ServletException {
17 | AnnotationConfigWebApplicationContext context
18 | = new AnnotationConfigWebApplicationContext();
19 | context.register(AppConfig.class);
20 |
21 | context.setServletContext(container);
22 | DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
23 | ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", dispatcherServlet);
24 | servlet.setLoadOnStartup(1);
25 | servlet.addMapping("/");
26 | container.addFilter("logFilter", LogFilter.class).addMappingForUrlPatterns(null, false, "/*");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/controllers/deprecateds/UsersControllerDeprecated.java:
--------------------------------------------------------------------------------
1 | package ru.itis.controllers.deprecateds;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.servlet.ModelAndView;
5 | import org.springframework.web.servlet.mvc.Controller;
6 | import ru.itis.models.User;
7 | import ru.itis.services.UsersService;
8 |
9 | import javax.servlet.http.HttpServletRequest;
10 | import javax.servlet.http.HttpServletResponse;
11 | import java.util.List;
12 |
13 | /**
14 | * 09.10.2017
15 | * UsersControllerDeprecated
16 | *
17 | * @author Sidikov Marsel (First Software Engineering Platform)
18 | * @version v1.0
19 | */
20 | public class UsersControllerDeprecated implements Controller {
21 |
22 | @Autowired
23 | private UsersService usersService;
24 |
25 | @Override
26 | public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
27 | if (httpServletRequest.getMethod().equals("GET")) {
28 | List users = usersService.getAllUsers();
29 | ModelAndView modelAndView = new ModelAndView();
30 |
31 | modelAndView.addObject("users", users);
32 | modelAndView.setViewName("users_page");
33 | return modelAndView;
34 | }
35 | return null;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/filters/LogFilter.java:
--------------------------------------------------------------------------------
1 | package ru.itis.filters;
2 |
3 | import javax.servlet.*;
4 | import java.io.IOException;
5 |
6 | public class LogFilter implements Filter {
7 |
8 | @Override
9 | public void init(FilterConfig filterConfig) throws ServletException {
10 |
11 | }
12 |
13 | @Override
14 | public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
15 | System.out.println(servletRequest.getRemoteAddr());
16 | filterChain.doFilter(servletRequest, servletResponse);
17 | }
18 |
19 | @Override
20 | public void destroy() {
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/models/User.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * 22.10.2018
10 | * User
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class User {
20 | private Long id;
21 | private String name;
22 | private String passwordHash;
23 | private Integer age;
24 | }
25 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/repository/CrudRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.repository;
2 |
3 | import java.util.List;
4 | import java.util.Optional;
5 |
6 | /**
7 | * 22.10.2018
8 | * CrudRepository
9 | *
10 | * @author Sidikov Marsel (First Software Engineering Platform)
11 | * @version v1.0
12 | */
13 | public interface CrudRepository {
14 | List findAll();
15 | Optional find(Long id);
16 | void save(T model);
17 | void delete(Long id);
18 | void update(T model);
19 | }
20 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/repository/UsersRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.repository;
2 |
3 | import ru.itis.models.User;
4 |
5 | import java.util.Optional;
6 |
7 | /**
8 | * 22.10.2018
9 | * UsersRepository
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public interface UsersRepository extends CrudRepository {
15 | Optional findByName(String name);
16 | }
17 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/services/UsersService.java:
--------------------------------------------------------------------------------
1 | package ru.itis.services;
2 |
3 | import ru.itis.models.User;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 09.10.2017
9 | * UsersService
10 | *
11 | * @author Sidikov Marsel (First Software Engineering Platform)
12 | * @version v1.0
13 | */
14 | public interface UsersService {
15 | List getAllUsers();
16 |
17 | void addUser(User user);
18 | }
19 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/java/ru/itis/services/UsersServiceImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis.services;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Component;
5 | import ru.itis.repository.UsersRepository;
6 | import ru.itis.models.User;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * 09.10.2017
12 | * UsersServiceImpl
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | @Component
18 | public class UsersServiceImpl implements UsersService {
19 |
20 | @Autowired
21 | private UsersRepository usersRepository;
22 |
23 | @Override
24 | public List getAllUsers() {
25 | return usersRepository.findAll();
26 | }
27 |
28 | @Override
29 | public void addUser(User user) {
30 | usersRepository.save(user);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/resources/ru.itis/application.properties:
--------------------------------------------------------------------------------
1 | db.username=postgres
2 | db.password=qwerty007
3 | db.url=jdbc:postgresql://localhost:5432/shop
4 | db.driverClassName=org.postgresql.Driver
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/webapp/WEB-INF/views/ftl/users_page.ftl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | ID |
9 | Name |
10 |
11 | <#list users as user>
12 |
13 | ${user.id} |
14 | ${user.name} |
15 |
16 | #list>
17 |
18 |
23 |
24 |
--------------------------------------------------------------------------------
/10. SpringMvcExample/src/main/webapp/WEB-INF/views/jsp/users_page.jsp:
--------------------------------------------------------------------------------
1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2 | <%@page contentType="text/html" pageEncoding="UTF-8"%>
3 |
4 |
5 | Владельцы машин
6 |
7 |
8 |
9 |
10 | ID |
11 | Name |
12 |
13 |
14 |
15 | ${user.id} |
16 | ${user.name} |
17 |
18 |
19 |
20 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/11. SpringConfigs/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | ru.itis
8 | spring-configs
9 | 0.1
10 |
11 |
12 |
13 |
14 | org.springframework
15 | spring-context
16 | 5.1.3.RELEASE
17 |
18 |
19 |
20 | com.google.guava
21 | guava
22 | 27.0.1-jre
23 |
24 |
25 |
26 |
27 |
28 |
29 | org.apache.maven.plugins
30 | maven-compiler-plugin
31 |
32 | 8
33 | 8
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/11. SpringConfigs/src/main/java/ru/itis/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext;
5 | import org.springframework.context.support.ClassPathXmlApplicationContext;
6 | import ru.itis.config.AppAnnotationConfig;
7 |
8 | /**
9 | * 04.03.2019
10 | * ru.itis.Main
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | public class Main {
16 | public static void main(String[] args) {
17 | ApplicationContext context = new AnnotationConfigApplicationContext(AppAnnotationConfig.class);
18 | StringsService service = context.getBean(StringsService.class);
19 |
20 | System.out.println(service.getRandomString());
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/11. SpringConfigs/src/main/java/ru/itis/StringsRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * 04.03.2019
7 | * ru.itis.StringsRepository
8 | *
9 | * @author Sidikov Marsel (First Software Engineering Platform)
10 | * @version v1.0
11 | */
12 | public interface StringsRepository {
13 | List findAll();
14 | }
15 |
--------------------------------------------------------------------------------
/11. SpringConfigs/src/main/java/ru/itis/StringsRepositoryEnglishFakeImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | import com.google.common.collect.Lists;
4 | import org.springframework.stereotype.Component;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 04.03.2019
10 | * ru.itis.StringsRepositoryEnglishFakeImpl
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Component("stringsRepositoryEnglish")
16 | public class StringsRepositoryEnglishFakeImpl implements StringsRepository {
17 |
18 | @Override
19 | public List findAll() {
20 | return Lists.newArrayList("Hello", "Bye", "Marsel");
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/11. SpringConfigs/src/main/java/ru/itis/StringsRepositoryRussianFakeImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | import com.google.common.collect.Lists;
4 | import org.springframework.stereotype.Component;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 04.03.2019
10 | * ru.itis.StringsRepositoryRussianFakeImpl
11 | *
12 | * @author Sidikov Marsel (First Software Engineering Platform)
13 | * @version v1.0
14 | */
15 | @Component("stringsRepositoryRussian")
16 | public class StringsRepositoryRussianFakeImpl implements StringsRepository {
17 | @Override
18 | public List findAll() {
19 | return Lists.newArrayList("Привет", "Пока", "Марсель");
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/11. SpringConfigs/src/main/java/ru/itis/StringsService.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | /**
4 | * 04.03.2019
5 | * ru.itis.StringsService
6 | *
7 | * @author Sidikov Marsel (First Software Engineering Platform)
8 | * @version v1.0
9 | */
10 | public interface StringsService {
11 | String getRandomString();
12 | }
13 |
--------------------------------------------------------------------------------
/11. SpringConfigs/src/main/java/ru/itis/StringsServiceImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.beans.factory.annotation.Qualifier;
5 | import org.springframework.stereotype.Component;
6 |
7 | import java.util.List;
8 | import java.util.Random;
9 |
10 | /**
11 | * 04.03.2019
12 | * ru.itis.StringsServiceImpl
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | @Component
18 | public class StringsServiceImpl implements StringsService {
19 |
20 | @Autowired
21 | @Qualifier("stringsRepositoryEnglish")
22 | private StringsRepository stringsRepository;
23 |
24 | private Random random;
25 |
26 | public StringsServiceImpl() {
27 | this.random = new Random();
28 | }
29 |
30 | @Override
31 | public String getRandomString() {
32 | List allStrings = stringsRepository.findAll();
33 | return allStrings.get(random.nextInt(allStrings.size()));
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/11. SpringConfigs/src/main/java/ru/itis/config/AppAnnotationConfig.java:
--------------------------------------------------------------------------------
1 | package ru.itis.config;
2 |
3 | import org.springframework.context.annotation.Bean;
4 | import org.springframework.context.annotation.ComponentScan;
5 | import org.springframework.context.annotation.Configuration;
6 | import ru.itis.StringsRepository;
7 | import ru.itis.StringsRepositoryEnglishFakeImpl;
8 | import ru.itis.StringsRepositoryRussianFakeImpl;
9 |
10 | /**
11 | * 04.03.2019
12 | * AnnotationConfig
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | @Configuration
18 | @ComponentScan("ru.itis")
19 | public class AppAnnotationConfig {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | ru.itis
8 | hibernate-demo
9 | 0.1
10 |
11 |
12 |
13 | org.apache.maven.plugins
14 | maven-compiler-plugin
15 |
16 | 8
17 | 8
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | org.hibernate
26 | hibernate-core
27 | 5.4.2.Final
28 |
29 |
30 |
31 | org.postgresql
32 | postgresql
33 | 42.2.5
34 |
35 |
36 | org.projectlombok
37 | lombok
38 | 1.16.18
39 | provided
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/java/ru/itis/app/Main.java:
--------------------------------------------------------------------------------
1 | package ru.itis.app;
2 |
3 | import org.hibernate.Session;
4 | import org.hibernate.SessionFactory;
5 | import org.hibernate.Transaction;
6 | import org.hibernate.cfg.Configuration;
7 | import ru.itis.models.Course;
8 | import ru.itis.models.User;
9 |
10 | import java.util.ArrayList;
11 | import java.util.HashSet;
12 | import java.util.List;
13 | import java.util.Set;
14 |
15 | public class Main {
16 | public static void main(String[] args) {
17 | // TODO: можно и java-классом
18 | Configuration configuration = new Configuration().configure();
19 | SessionFactory sessionFactory = configuration.buildSessionFactory();
20 | Session session = sessionFactory.openSession();
21 | Transaction transaction = session.beginTransaction();
22 | User user = User.builder()
23 | .firstName("Марсель")
24 | .lastName("Сидиков")
25 | .build();
26 |
27 | Course java = Course.builder()
28 | .title("Разработка корпоративных приложений")
29 | .description("Работаем")
30 | .build();
31 |
32 | Course js = Course.builder()
33 | .title("Разработка на JS")
34 | .description("Чуть меньше работаем.")
35 | .build();
36 |
37 | Set courses = new HashSet<>();
38 | courses.add(js);
39 | courses.add(java);
40 | user.setCourses(courses);
41 |
42 | session.save(user);
43 |
44 | user.setFirstName("Максим");
45 | session.save(user);
46 | transaction.commit();
47 | session.close();
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/java/ru/itis/models/Course.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.*;
4 |
5 | import java.util.List;
6 | import java.util.Set;
7 |
8 | @Data
9 | @AllArgsConstructor
10 | @NoArgsConstructor
11 | @Builder
12 | @EqualsAndHashCode(exclude = {"students", "lessons"})
13 | public class Course {
14 | private Long id;
15 | private String title;
16 | private String description;
17 |
18 | private Set students;
19 | private List lessons;
20 | }
21 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/java/ru/itis/models/Lesson.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.time.LocalDateTime;
9 | import java.time.LocalTime;
10 |
11 | @Data
12 | @AllArgsConstructor
13 | @NoArgsConstructor
14 | @Builder
15 | public class Lesson {
16 | private Long id;
17 |
18 | private LocalTime beginTime;
19 | private LocalTime endTime;
20 |
21 | private Course course;
22 | }
23 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/java/ru/itis/models/User.java:
--------------------------------------------------------------------------------
1 | package ru.itis.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.util.List;
9 | import java.util.Set;
10 |
11 | @Data
12 | @NoArgsConstructor
13 | @AllArgsConstructor
14 | @Builder
15 | public class User {
16 | private Long id;
17 | private String firstName;
18 | private String lastName;
19 |
20 | private Set courses;
21 | }
22 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/resources/Course.hbm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/resources/Lesson.hbm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/resources/User.hbm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/12. Hibernate Demo/src/main/resources/hibernate.cfg.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 | org.postgresql.Driver
8 | jdbc:postgresql://localhost:5432/hibernate_demo
9 | postgres
10 | qwerty007
11 | org.hibernate.dialect.PostgreSQL95Dialect
12 | true
13 | update
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | /target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 |
5 | ### STS ###
6 | .apt_generated
7 | .classpath
8 | .factorypath
9 | .project
10 | .settings
11 | .springBeans
12 | .sts4-cache
13 |
14 | ### IntelliJ IDEA ###
15 | .idea
16 | *.iws
17 | *.iml
18 | *.ipr
19 |
20 | ### NetBeans ###
21 | /nbproject/private/
22 | /nbbuild/
23 | /dist/
24 | /nbdist/
25 | /.nb-gradle/
26 | /build/
27 |
28 | ### VS Code ###
29 | .vscode/
30 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarselSidikov/JAVA_ENTERPRISE_2/0a499cbe9edd566ece80e1efedbfafef374abf80/13. SpringBootDemo/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/13. SpringBootDemo/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
2 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/java/ru/itis/springbootdemo/SpringBootDemoApplication.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootdemo;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class SpringBootDemoApplication {
8 |
9 | public static void main(String[] args) {
10 | SpringApplication.run(SpringBootDemoApplication.class, args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/java/ru/itis/springbootdemo/controllers/RootController.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootdemo.controllers;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Controller;
5 | import org.springframework.ui.ModelMap;
6 | import org.springframework.web.bind.annotation.GetMapping;
7 | import ru.itis.springbootdemo.models.User;
8 | import ru.itis.springbootdemo.repositories.UsersRepository;
9 |
10 | import java.util.List;
11 |
12 | @Controller
13 | public class RootController {
14 |
15 | @Autowired
16 | private UsersRepository usersRepository;
17 |
18 | @GetMapping("/")
19 | public String getRootPage(ModelMap model) {
20 | List users = usersRepository.findAll();
21 | model.addAttribute("user", users.get(0));
22 | return "index";
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/java/ru/itis/springbootdemo/controllers/SimpleRestController.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootdemo.controllers;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.http.ResponseEntity;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 | import ru.itis.springbootdemo.models.User;
8 | import ru.itis.springbootdemo.repositories.UsersRepository;
9 |
10 | import java.util.List;
11 |
12 | @RestController
13 | public class SimpleRestController {
14 |
15 | @Autowired
16 | private UsersRepository usersRepository;
17 |
18 | @GetMapping("/users")
19 | public ResponseEntity> getUsers() {
20 | return ResponseEntity.ok(usersRepository.findAll()) ;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/java/ru/itis/springbootdemo/models/User.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootdemo.models;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import javax.persistence.*;
9 |
10 | /**
11 | * 22.10.2018
12 | * User
13 | *
14 | * @author Sidikov Marsel (First Software Engineering Platform)
15 | * @version v1.0
16 | */
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @Entity
22 | @Table(name = "shop_user")
23 | public class User {
24 |
25 | @Id
26 | @GeneratedValue(strategy = GenerationType.IDENTITY)
27 | private Long id;
28 |
29 | private String firstName;
30 | private String lastName;
31 | private String passwordHash;
32 | }
33 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/java/ru/itis/springbootdemo/repositories/UsersRepository.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootdemo.repositories;
2 |
3 | import org.springframework.data.jpa.repository.JpaRepository;
4 | import org.springframework.data.jpa.repository.Query;
5 | import ru.itis.springbootdemo.models.User;
6 |
7 | import java.util.Optional;
8 |
9 | public interface UsersRepository extends JpaRepository {
10 | Optional findOneByFirstName(String firstName);
11 | }
12 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/java/ru/itis/springbootdemo/repositories/UsersRepositoryJdbcTemplateImpl.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootdemo.repositories;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.jdbc.core.JdbcTemplate;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public class UsersRepositoryJdbcTemplateImpl {
9 |
10 | @Autowired
11 | private JdbcTemplate jdbcTemplate;
12 | }
13 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.datasource.password=qwerty007
2 | spring.datasource.username=postgres
3 | spring.datasource.url=jdbc:postgresql://localhost:5432/shop
4 | spring.datasource.driver-class-name=org.postgresql.Driver
5 | server.port=80
6 | spring.jpa.hibernate.ddl-auto=update
7 | spring.jpa.show-sql=true
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/main/resources/templates/index.ftl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 | Document
9 |
10 |
11 |
12 |
${user.firstName}
13 |
14 |
15 |
--------------------------------------------------------------------------------
/13. SpringBootDemo/src/test/java/ru/itis/springbootdemo/SpringBootDemoApplicationTests.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootdemo;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.junit4.SpringRunner;
7 |
8 | @RunWith(SpringRunner.class)
9 | @SpringBootTest
10 | public class SpringBootDemoApplicationTests {
11 |
12 | @Test
13 | public void contextLoads() {
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/14. SpringBootSecurity/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
2 |
--------------------------------------------------------------------------------
/14. SpringBootSecurity/HELP.md:
--------------------------------------------------------------------------------
1 | # Getting Started
2 |
3 | ### Guides
4 | The following guides illustrate how to use some features concretely:
5 |
6 | * [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)
7 | * [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)
8 | * [Building REST services with Spring](https://spring.io/guides/tutorials/bookmarks/)
9 | * [Accessing Data with JPA](https://spring.io/guides/gs/accessing-data-jpa/)
10 | * [Accessing Relational Data using JDBC with Spring](https://spring.io/guides/gs/relational-data-access/)
11 | * [Managing Transactions](https://spring.io/guides/gs/managing-transactions/)
12 |
13 |
--------------------------------------------------------------------------------
/14. SpringBootSecurity/src/main/java/ru/itis/springbootapp/SpringBootAppApplication.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootapp;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.context.annotation.Bean;
6 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
7 | import org.springframework.security.crypto.password.PasswordEncoder;
8 |
9 | @SpringBootApplication
10 | public class SpringBootAppApplication {
11 |
12 | public static void main(String[] args) {
13 | SpringApplication.run(SpringBootAppApplication.class, args);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/14. SpringBootSecurity/src/main/java/ru/itis/springbootapp/controllers/HelloController.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootapp.controllers;
2 |
3 | import org.springframework.security.core.Authentication;
4 | import org.springframework.stereotype.Controller;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.ResponseBody;
7 | import ru.itis.springbootapp.models.User;
8 | import ru.itis.springbootapp.security.UserDetailsImpl;
9 |
10 | @Controller
11 | public class HelloController {
12 |
13 | @GetMapping("/hello")
14 | @ResponseBody
15 | public String getHello(Authentication authentication) {
16 | UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal();
17 | User user = userDetails.getUser();
18 | System.out.println(user);
19 | return "Hello";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/14. SpringBootSecurity/src/main/java/ru/itis/springbootapp/controllers/SignInController.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootapp.controllers;
2 |
3 | import org.springframework.stereotype.Controller;
4 | import org.springframework.ui.ModelMap;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 |
7 | import javax.servlet.http.HttpServletRequest;
8 | import java.util.ArrayList;
9 | import java.util.List;
10 |
11 | @Controller
12 | public class SignInController {
13 |
14 | @GetMapping("/signIn")
15 | public String getSignInPage(HttpServletRequest request, ModelMap model) {
16 | if (request.getParameterMap().containsKey("error")) {
17 | model.addAttribute("error", "error");
18 | }
19 | return "sign_in";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/14. SpringBootSecurity/src/main/java/ru/itis/springbootapp/controllers/SignUpController.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootapp.controllers;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Controller;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.PostMapping;
7 | import ru.itis.springbootapp.forms.SignUpForm;
8 | import ru.itis.springbootapp.services.SignUpService;
9 |
10 | @Controller
11 | public class SignUpController {
12 |
13 | @Autowired
14 | private SignUpService signUpService;
15 |
16 | @GetMapping("/signUp")
17 | public String getSignUpPage() {
18 | return "sign_up";
19 | }
20 |
21 | @PostMapping("/signUp")
22 | public String signUpUser(SignUpForm signUpForm) {
23 | signUpService.signUp(signUpForm);
24 | return "redirect:/signIn";
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/14. SpringBootSecurity/src/main/java/ru/itis/springbootapp/controllers/UsersController.java:
--------------------------------------------------------------------------------
1 | package ru.itis.springbootapp.controllers;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.http.ResponseEntity;
5 | import org.springframework.stereotype.Controller;
6 | import org.springframework.web.bind.annotation.GetMapping;
7 | import org.springframework.web.bind.annotation.PathVariable;
8 | import org.springframework.web.bind.annotation.PostMapping;
9 | import org.springframework.web.bind.annotation.ResponseBody;
10 | import ru.itis.springbootapp.forms.UserForm;
11 | import ru.itis.springbootapp.models.User;
12 | import ru.itis.springbootapp.repositories.UsersRepository;
13 |
14 | import java.util.Optional;
15 |
16 | @Controller
17 | public class UsersController {
18 |
19 | @Autowired
20 | private UsersRepository usersRepository;
21 |
22 | @GetMapping("/users")
23 | public String getUsersPage() {
24 | return "users";
25 | }
26 |
27 | @PostMapping("/users/{user-id}")
28 | @ResponseBody
29 | public ResponseEntity