/web-server-programming-java-2021

My solutions to the exercises of the online course on Web server programming in Java (2021) organized by the University of Helsinki. The course teaches the principles of web applications and basic skills in developing web applications in Java.

Primary LanguageJava

This project includes all the solutions to the programming challenges included in the 2021 edition of the online course on Web Server Programming in Java maintained and hosted by the University of Helsinki at https://web-palvelinohjelmointi-21.mooc.fi/.

Albeit the course is originally in Finnish, Google Translate helped me a lot with the English translation of the content. The course teaches the principles of web applications and basic skills in developing web applications in Java and is divided in seven parts:

1 - Introduction to web applications and the basics of the Internet: How the Internet works. The meaning and definition of URI, DNS, HTTP and HTML. The concepts of path and request parameter. HTTP protocol: the GET and POST request methods and the major response messages. The client-server model and how to implement a simple server and a client. Creating a web application that can respond to HTTP requests with the help of the Spring Boot API.

2 - Views, databases, and database abstractions: Creating web pages with the help of the Thymeleaf template engine that can act as views of server responses that are returned to the user. How to send information to the server and process the information sent back to the server. The POST / Redirect / GET design pattern. What does ORM mean. How to use the database abstraction provided by Java and Spring Boot to process information. How to process applications with a single database table. Path variables and how to use them in web applications.

3 - Databases and database abstractions. References between database tables, delimitation and organization of results: How to handle applications containing several database tables and how to make references from one table to another. How to process transactions in web applications. What is the N + 1 query problem and what methods are available to avoid it. How to organize and limit the information that can be retrieved from a database.

4 - Media types and file storage. The Software development process, layered architecture and automated application testing. Sending an application to the Web: What is a Media Type and how to handle files in a database. What are the main stages of the software development process. The most popular Web development design patterns. What is the meaning of a multi-tier software architecture. How to divide parts of an application into different web services. How to write automated tests. How to deploy an application.

5 - HTTP protocol and cookies. Authentication and authorization: Why can we say that HTTP is a stateless protocol. What are cookies and what are they used for. The differences between authentication and authorization. How to create an application that asks the user to sign in. How to define paths and methods that require the user of a web app to log in and hide parts of the view from different user groups.

6 - Repetitive code structures and fragments. Using CSS style sheets. Input validation. REST interfaces. What methods are available for defining and reusing repetitive code structures. What Twitter Bootstrap is and how to use it to define styles in a web application. What methods are available for validating form data. What is an interface. What are REST interfaces. How to implement a service that provides data over a RESTful interface.

7 - Browser software and server software. Web application security. Scalability of applications. Reactive programming. How to make a JavaScript request from the browser to the server. How to update the view displayed in the browser based on the response to the Javascript request. What are the most common vulnerabilities in web applications and the factors that affect them (OWASP). What methods can be used for scaling applications to large sets of users. What are the basics of reactive programming. How to develop a simple server software with a reactive programming paradigm.