In this tutorial, we show you Angular 6 Http Client & Spring Boot Server example that uses Spring Data to do CRUD with MongoDb and Angular 6 as a front-end technology to make request and receive response.
Related Posts:
– Spring Boot + Angular 6 example | Spring Data JPA + REST + PostgreSQL CRUD example
– Spring Boot + Angular 6 example | Spring Data JPA + REST + MySQL CRUD example
– Angular 6 HttpClient + Spring Boot + MariaDB example | Spring Data JPA + RestAPIs CRUD example
– Spring Boot + Angular 6 example | Spring Data + REST + Cassandra CRUD example
I. Technologies
– Java 1.8
– Maven 3.3.9
– Spring Tool Suite – Version 3.8.4.RELEASE
– Spring Boot: 2.0.3.RELEASE
– Angular 6
– RxJS 6
II. Overview
Demo
1. Spring Boot Server
2. Angular 6 Client
III. Practice
1. Project Structure
1.1 Spring Boot Server
– Customer class corresponds to entity and table customer.
– CustomerRepository is an interface extends MongoRepository, will be autowired in CustomerController for implementing repository methods and custom finder methods.
– CustomerController is a REST Controller which has request mapping methods for RESTful requests such as: getAllCustomers
, postCustomer
, deleteCustomer
, deleteAllCustomers
, findByAge
, updateCustomer
.
– Configuration for Spring Datasource and Spring Data properties in application.properties
– Dependencies for Spring Boot and MongoDb in pom.xml
1.2 Angular 6 Client
In this example, we focus on:
– 4 components: customers-list, customer-details, create-customer, search-customer.
– 3 modules: FormsModule, HttpClientModule, AppRoutingModule.
– customer.ts: class Customer (id, firstName, lastName)
– customer.service.ts: Service for Http Client methods
2. How to do
2.1 Spring Boot Server
2.1.1 Dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.1.2 Customer – Data Model
model/Customer.java
package com.javasampleapproach.springrest.mongodb.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "customer")
public class Customer {
@Id
private String id;
private String name;
private int age;
private boolean active;
public Customer() {
}
public Customer(String name, int age) {
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
@Override
public String toString() {
return "Customer [id=" + id + ", name=" + name + ", age=" + age + ", active=" + active + "]";
}
}
2.1.3 Repository
repo/CustomerRepository.java
package com.javasampleapproach.springrest.mongodb.repo;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.javasampleapproach.springrest.mongodb.model.Customer;
public interface CustomerRepository extends MongoRepository{
List findByAge(int age);
}
2.1.4 REST Controller
controller/CustomerController.java
package com.javasampleapproach.springrest.mongodb.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.javasampleapproach.springrest.mongodb.model.Customer;
import com.javasampleapproach.springrest.mongodb.repo.CustomerRepository;
@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/api")
public class CustomerController {
@Autowired
CustomerRepository repository;
@GetMapping("/customers")
public List getAllCustomers() {
System.out.println("Get all Customers...");
List customers = new ArrayList<>();
repository.findAll().forEach(customers::add);
return customers;
}
@PostMapping("/customers/create")
public Customer postCustomer(@RequestBody Customer customer) {
Customer _customer = repository.save(new Customer(customer.getName(), customer.getAge()));
return _customer;
}
@DeleteMapping("/customers/{id}")
public ResponseEntity deleteCustomer(@PathVariable("id") String id) {
System.out.println("Delete Customer with ID = " + id + "...");
repository.deleteById(id);
return new ResponseEntity<>("Customer has been deleted!", HttpStatus.OK);
}
@DeleteMapping("/customers/delete")
public ResponseEntity deleteAllCustomers() {
System.out.println("Delete All Customers...");
repository.deleteAll();
return new ResponseEntity<>("All customers have been deleted!", HttpStatus.OK);
}
@GetMapping("customers/age/{age}")
public List findByAge(@PathVariable int age) {
List customers = repository.findByAge(age);
return customers;
}
@PutMapping("/customers/{id}")
public ResponseEntity updateCustomer(@PathVariable("id") String id, @RequestBody Customer customer) {
System.out.println("Update Customer with ID = " + id + "...");
Optional customerData = repository.findById(id);
if (customerData.isPresent()) {
Customer _customer = customerData.get();
_customer.setName(customer.getName());
_customer.setAge(customer.getAge());
_customer.setActive(customer.isActive());
return new ResponseEntity<>(repository.save(_customer), HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
}
2.1.5 Configuration for Spring Datasource & Data MongoDb properties
application.properties
spring.data.mongodb.database=jsa_mongodb
spring.data.mongodb.port=27017
2.2 Angular 6 Client
2.2.0 Create Service & Components
Run commands below:
– ng g s customer
– ng g c create-customer
– ng g c customer-details
– ng g c customers-list
– ng g c search-customers
On each Component selector, delete app-
prefix, then change tslint.json rules
– "component-selector"
to false.
2.2.1 Model
customer.ts
export class Customer {
id: number;
name: string;
age: number;
active: boolean;
}
2.2.2 CustomerService
customer.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class CustomerService {
private baseUrl = 'http://localhost:8080/api/customers';
constructor(private http: HttpClient) { }
getCustomer(id: number): Observable<Object> {
return this.http.get(`${this.baseUrl}/${id}`);
}
createCustomer(customer: Object): Observable<Object> {
return this.http.post(`${this.baseUrl}` + `/create`, customer);
}
updateCustomer(id: number, value: any): Observable<Object> {
return this.http.put(`${this.baseUrl}/${id}`, value);
}
deleteCustomer(id: number): Observable<any> {
return this.http.delete(`${this.baseUrl}/${id}`, { responseType: 'text' });
}
getCustomersList(): Observable<any> {
return this.http.get(`${this.baseUrl}`);
}
getCustomersByAge(age: number): Observable<any> {
return this.http.get(`${this.baseUrl}/age/${age}`);
}
deleteAll(): Observable<any> {
return this.http.delete(`${this.baseUrl}` + `/delete`, { responseType: 'text' });
}
}
2.2.3 Components
– CustomerDetailsComponent:
customer-details/customer-details.component.ts
import { Component, OnInit, Input } from '@angular/core';
import { CustomerService } from '../customer.service';
import { Customer } from '../customer';
import { CustomersListComponent } from '../customers-list/customers-list.component';
@Component({
selector: 'customer-details',
templateUrl: './customer-details.component.html',
styleUrls: ['./customer-details.component.css']
})
export class CustomerDetailsComponent implements OnInit {
@Input() customer: Customer;
constructor(private customerService: CustomerService, private listComponent: CustomersListComponent) { }
ngOnInit() {
}
updateActive(isActive: boolean) {
this.customerService.updateCustomer(this.customer.id,
{ name: this.customer.name, age: this.customer.age, active: isActive })
.subscribe(
data => {
console.log(data);
this.customer = data as Customer;
},
error => console.log(error));
}
deleteCustomer() {
this.customerService.deleteCustomer(this.customer.id)
.subscribe(
data => {
console.log(data);
this.listComponent.reloadData();
},
error => console.log(error));
}
}
customer-details/customer-details.component.html
<div *ngIf="customer">
<div>
<label>Name: </label> {{customer.name}}
</div>
<div>
<label>Age: </label> {{customer.age}}
</div>
<div>
<label>Active: </label> {{customer.active}}
</div>
<span class="button is-small btn-primary" *ngIf='customer.active' (click)='updateActive(false)'>Inactive</span>
<span class="button is-small btn-primary" *ngIf='!customer.active' (click)='updateActive(true)'>Active</span>
<span class="button is-small btn-danger" (click)='deleteCustomer()'>Delete</span>
<hr/>
</div>
– CustomersListComponent:
customers-list/customers-list.component.ts
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { CustomerService } from '../customer.service';
import { Customer } from '../customer';
@Component({
selector: 'customers-list',
templateUrl: './customers-list.component.html',
styleUrls: ['./customers-list.component.css']
})
export class CustomersListComponent implements OnInit {
customers: Observable;
constructor(private customerService: CustomerService) { }
ngOnInit() {
this.reloadData();
}
deleteCustomers() {
this.customerService.deleteAll()
.subscribe(
data => {
console.log(data);
this.reloadData();
},
error => console.log('ERROR: ' + error));
}
reloadData() {
this.customers = this.customerService.getCustomersList();
}
}
customers-list/customers-list.component.html
<h1>Customers</h1>
<div *ngFor="let customer of customers | async" style="width: 300px;">
<customer-details [customer]='customer'></customer-details>
</div>
<div>
<button type="button" class="button btn-danger" (click)='deleteCustomers()'>Delete All</button>
</div>
– CreateCustomerComponent:
create-customer/create-customer.component.ts
import { Component, OnInit } from '@angular/core';
import { Customer } from '../customer';
import { CustomerService } from '../customer.service';
@Component({
selector: 'create-customer',
templateUrl: './create-customer.component.html',
styleUrls: ['./create-customer.component.css']
})
export class CreateCustomerComponent implements OnInit {
customer: Customer = new Customer();
submitted = false;
constructor(private customerService: CustomerService) { }
ngOnInit() {
}
newCustomer(): void {
this.submitted = false;
this.customer = new Customer();
}
save() {
this.customerService.createCustomer(this.customer)
.subscribe(data => console.log(data), error => console.log(error));
this.customer = new Customer();
}
onSubmit() {
this.submitted = true;
this.save();
}
}
create-customer/create-customer.component.html
<h3>Create Customer</h3>
<div [hidden]="submitted" style="width: 300px;">
<form (ngSubmit)="onSubmit()">
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" required [(ngModel)]="customer.name" name="name">
</div>
<div class="form-group">
<label for="age">Age</label>
<input type="text" class="form-control" id="age" required [(ngModel)]="customer.age" name="age">
</div>
<button type="submit" class="btn btn-success">Submit</button>
</form>
</div>
<div [hidden]="!submitted">
<h4>You submitted successfully!</h4>
<button class="btn btn-success" (click)="newCustomer()">Add</button>
</div>
– SearchCustomersComponent:
search-customers/search-customers.component.ts
import { Component, OnInit } from '@angular/core';
import { Customer } from '../customer';
import { CustomerService } from '../customer.service';
@Component({
selector: 'search-customers',
templateUrl: './search-customers.component.html',
styleUrls: ['./search-customers.component.css']
})
export class SearchCustomersComponent implements OnInit {
age: number;
customers: Customer[];
constructor(private dataService: CustomerService) { }
ngOnInit() {
this.age = 0;
}
private searchCustomers() {
this.dataService.getCustomersByAge(this.age)
.subscribe(customers => this.customers = customers);
}
onSubmit() {
this.searchCustomers();
}
}
search-customers/search-customers.component.html
<h3>Find By Age</h3>
<div style="width: 300px;">
<form (ngSubmit)="onSubmit()">
<div class="form-group">
<label for="lastname">Age</label>
<input type="text" class="form-control" id="age" required [(ngModel)]="age" name="age">
</div>
<div class="btn-group">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</form>
</div>
<ul>
<li *ngFor="let customer of customers">
<h4>{{customer.id}} - {{customer.name}} {{customer.age}}</h4>
</li>
</ul>
2.2.4 AppRoutingModule
app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CustomersListComponent } from './customers-list/customers-list.component';
import { CreateCustomerComponent } from './create-customer/create-customer.component';
import { SearchCustomersComponent } from './search-customers/search-customers.component';
const routes: Routes = [
{ path: '', redirectTo: 'customer', pathMatch: 'full' },
{ path: 'customer', component: CustomersListComponent },
{ path: 'add', component: CreateCustomerComponent },
{ path: 'findbyage', component: SearchCustomersComponent },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
And AppComponent HTML for routing:
app.component.html
<div style="padding: 20px;">
<h1 style="color: blue">{{title}}</h1>
<h3>{{description}}</h3>
<nav>
<a routerLink="customer" class="btn btn-primary active" role="button" routerLinkActive="active">Customers</a>
<a routerLink="add" class="btn btn-primary active" role="button" routerLinkActive="active">Add</a>
<a routerLink="findbyage" class="btn btn-primary active" role="button" routerLinkActive="active">Search</a>
</nav>
<router-outlet></router-outlet>
</div>
2.2.5 AppModule
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { CreateCustomerComponent } from './create-customer/create-customer.component';
import { CustomerDetailsComponent } from './customer-details/customer-details.component';
import { CustomersListComponent } from './customers-list/customers-list.component';
import { SearchCustomersComponent } from './search-customers/search-customers.component';
import { AppRoutingModule } from './app-routing.module';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent,
CreateCustomerComponent,
CustomerDetailsComponent,
CustomersListComponent,
SearchCustomersComponent
],
imports: [
BrowserModule,
FormsModule,
AppRoutingModule,
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
3. Run & Check Result
– Build and Run Spring Boot project with commandlines: mvn clean install
and mvn spring-boot:run
.
– Run the Angular App with command: ng serve
.
– Open browser for url http://localhost:4200/
:
Add Customer:
Show Customers:
Click on Active button to update Customer status:
Search Customers by Age:
Delete a Customer:
Delete All Customers:
IV. Source Code
– Angular6SpringBoot-Client
– SpringRestMongoDb-Server
Perfeito tutorial completo !
Thank you for providing a straightforward WORKING example of Angular+Java. There are many other tutorials and examples that describe similar configurations, but they are often missing complete descriptions, cluttered with ancillary technologies, or don’t actually work as described.
Hi Kurt Risser,
Thank you for your praise, it gives us more motivation to work harder and make more tutorials.
Best Regards,
ozenero.
Good Spring boot article! Thanks!
I’m new in angular and angular portion of this project not work for me. Can you provide some detail how i do that. If i want to create by my self not clone your given link? And customer.ts not generated by default any of container generated command. so please provide some guidance.
I beloved up to you will obtain performed right here. The cartoon is attractive, your authored material stylish. however, you command get bought an nervousness over that you want be delivering the following. unwell for sure come further beforehand once more as exactly the similar just about a lot continuously inside of case you defend this hike.
We absolutely love your blog and find the majority of your post’s to be just what I’m looking for. can you offer guest writers to write content for you personally? I wouldn’t mind producing a post or elaborating on a number of the subjects you write about here. Again, awesome weblog!
463468 937562Maintain up the fantastic work , I read couple of weblog posts on this website and I believe that your website is real intriguing and has bands of good information . 583405
322238 988328What a lovely weblog. Ill undoubtedly be back. Please preserve writing! 936646
Hi there mates, fastidious article and good arguments commented here, I am in fact enjoying by these.
hello there and thank you for your information – I’ve certainly picked up anything new from right here.
I did however expertise a few technical points using this website, as I experienced to reload the
web site a lot of times previous to I could get it to load properly.
I had been wondering if your hosting is OK? Not that I’m complaining, but
sluggish loading instances times will sometimes affect your placement in google and could damage your high quality score if ads and marketing with Adwords.
Well I am adding this RSS to my email and can look out for much more of your respective intriguing content.
Ensure that you update this again very soon.
It’s wonderful that you are getting ideas from this paragraph as well as from our discussion made at this place.
Thanks for finally talking about > ozenero | Mobile & Web Programming
Tutorials < Loved it!
Amazing issues here. I am very satisfied to peer your article.
Thanks a lot and I’m having a look ahead to touch you. Will you kindly drop me a e-mail?
You could certainly see your expertise in the article you
write. The sector hopes for even more passionate writers like you who are not
afraid to mention how they believe. Always go after your heart.
Excellent items from you, man. I’ve understand your stuff previous
to and you’re simply extremely fantastic. I actually like what you have acquired right here, certainly like what you’re saying and the best way during which you are saying
it. You are making it enjoyable and you still care for to stay it wise.
I can not wait to read far more from you. This is really a great site.
Hi there to every , as I am really keen of reading this webpage’s post to be updated daily.It contains pleasant information.
I have learn several good stuff here. Certainly worth bookmarking for revisiting.I surprise how a lot effort you place to create such a fantastic informative web site.
Its such as you learn my mind! You appear to know so much approximately this, such asyou wrote the book in it or something. I thinkthat you just can do with a few to power themessage house a bit, however instead of that, thisis wonderful blog. A fantastic read. I’ll certainly beback.
What’s up to every body, it’s my first pay a visitof this website; this website contains awesome and in fact excellent stuff for readers.
I was extremely pleased to discover this site. I need to
to thank you for your time due to this fantastic read!!
I definitely enjoyed every part of it and I have you saved to fav to look
at new information in your website.
Hi! I just would like to offer you a huge thumbs up for your great info you have right here on this post.I am returning to your website for more soon.
I’m gone to inform my little brother, that he should also pay
a visit this blog on regular basis to obtain updated from newest
reports.
Nice post. I used to be checking constantly this blog and I’m
impressed! Extremely helpful info specially the closing section 🙂
I maintain such information a lot. I was looking for this certain info
for a long time. Thanks and good luck.
all the time i used to read smaller content that as well clear their motive,
and that is also happening with this paragraph which I am reading at this time.
Wow, marvelous blog layout! How long have you been blogging for?
you make blogging look easy. The overall look of your website is excellent,
as well as the content!
Thanks for any other fantastic article. The place else could anybody get thattype of info in such an ideal method of writing? I havea presentation subsequent week, and I amat the search for such information.
Amazing things here. I’m very glad to peer your post.
Thank you so much and I’m having a look ahead to touch you.
Will you please drop me a mail?
I enjoy what you guys tend to be up too. Such clever work and coverage!Keep up the amazing works guys I’ve addedyou guys to my blogroll.
This article will assist the internet people for building up new website or even a weblog from start to end.
An impressive share! I have just forwarded this onto a colleague who was conductinga little homework on this. And he actually ordered me lunch becauseI found it for him… lol. So let me reword this….Thank YOU for the meal!! But yeah, thanksfor spending some time to talk about this issue here on your web page.
Very nice article, exactly what I wanted to find.
I have learn several good stuff here. Certainly value bookmarking
for revisiting. I surprise how much attempt you place to make
one of these magnificent informative site.
Quality articles is the main to be a focus for the users to pay a visit the website, that’s what this site is providing.
Hi there, just became aware of your blog through Google, and found that it’s truly informative.I’m gonna watch out for brussels. I’ll appreciateif you continue this in future. A lot of people willbe benefited from your writing. Cheers!
Hi, i think that i saw you visited my blog thus i cameto “return the favor”.I am attempting to find things to improve my web site!I suppose its ok to use a few of your ideas!!
It’s truly very difficult in this active life to listen news on TV, so I simplyuse web for that purpose, and get the hottest news.
Hi there! Do you use Twitter? I’d like to follow you if that would be ok.I’m definitely enjoying your blog and look forward to newupdates.
Oh my goodness! Impressive article dude! Many thanks, However
I am going through difficulties with your RSS. I don’t know
why I cannot subscribe to it. Is there anybody else getting identical RSS
issues? Anyone that knows the solution can you kindly respond?
Thanks!!
Excellent items from you, man. I have keep in mind your stuff previous to and you are just extremely fantastic.
I actually like what you have got right here, certainly
like what you’re stating and the way in which through which you are saying it.
You are making it entertaining and you still care for to
stay it sensible. I can’t wait to learn much more
from you. That is really a terrific site.
I could not refrain from commenting. Very well written!
I think the admin of this web page is genuinely working
hard in favor of his web page, as here every material is quality based data.
Hey would you mind stating which blog platform you’re working with?
I’m looking to start my own blog soon but I’m having a
difficult time choosing between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your design seems
different then most blogs and I’m looking for something
completely unique. P.S My apologies for getting off-topic but I had to ask!
This is really fascinating, You are an overly professional blogger.
I’ve joined your rss feed and stay up for seeking
extra of your great post. Also, I have shared your web site in my social networks
My spouse and I stumbled over here by a different page and
thought I might check things out. I like what I see so i am just
following you. Look forward to looking over your web page for a second time.
Thank you for the good writeup. It in fact was a amusement account it.
Look advanced to more added agreeable from
you! By the way, how could we communicate?
I loved as much as you’ll receive carried out right here.
The sketch is attractive, your authored subject matter stylish.
nonetheless, you command get got an impatience over that you wish be delivering the following.
unwell unquestionably come further formerly again as exactly the same nearly
very often inside case you shield this hike.
What’s up to every one, it’s genuinely a fastidious for
me to pay a quick visit this site, it consists
of priceless Information.
I’ll rigyht away seize your rss as I can not find your email subscription hyperlink or newsletter service.
Do you’ve any? Kindly let me reccognize in order that I could subscribe.
Thanks.
It’s enormous that you are getting thoughts from this paragraph as well as from our argument made here.
Excellent post. I was checking constantly this blog and
I am impressed! Extremely helpful info specifically the last part 🙂 I
care for such info a lot. I was looking for this
particular information for a long time. Thank you and good luck.
Very good information. Lucky me I ran across your site by accident (stumbleupon). I have saved it for later!
I haven’t checked in here for a while because I
thought it waas getting boring, but the las several posts are good quality so I guess I’ll
add yoou back to my everyday bloglist. You deswerve it friend 🙂
Quality content is the secret to interest the visitors to pay a visit the web page, that’s what this web
page is providing.
Wow, marvelous blog layout! How llong have you been blogging for?
you made blogging look easy. The overall look of your web site is excellent, as well as the content!
What’s Happening i’m neww to this, I stumbled upon this I have discfovered It absolutely useful and it has
aided me out loads. I hope to contribute & assist different users
like its aided me. Good job.
Hi, just wanted to mention, I loved this blog post. It was practical.
Keep on posting!
For hottest news you have to pay a quick visit world-wide-web and on internet
I found this website as a best web site for most up-to-date updates.
It is the best time to make some plans for the future and
it is time to be happy. I have read this post and if I could I want to
suggest you few interesting things or tips.
Maybe you can write next articles referring to this article.
I desire to read even more things about it!
Can I simply say what a comfort to find an individual
who really understands what they’re discussing on the net.
You certainly understand how to bring an issue to light and make it important.
More and more people must read this and understand this side of the story.
I was surprised that you’re not more popular since
you surely have the gift.
Have you ever thought about creating an ebook or guest authoring on other blogs?
I have a blog based on the same information you discuss and would love to have you share some stories/information. I know my
readers would appreciate your work. If you are even remotely interested, feel free to send
me an e mail.
Wonderful work! This is the kind of info that are supposed to be shared around the web.
Disgrace on Google for not positioning this submit higher! Come
on over and seek advice from my web site .
Thank you =)
Thank you for every other great post. Where else may just
anyone get that type of info in such a perfect manner of writing?
I have a presentation next week, and I am on the look for such information.
What’s up it’s me, I am also visiting this web page daily, this site is truly fastidious and the viewers are really sharing nice thoughts.
Nice post. I was checking constantly this blog and I’m impressed!
Very helpful information specifically the last part :
) I care for such information a lot. I was looking for this particular info for a
very long time. Thank you and good luck.
I am regular visitor, how are you everybody?
This article posted at this site is in fact good.
Aw, this was a really good post. Taking the time and actual effort to
make a really good article… but what can I say… I hesitate a whole lot and never seem to
get anything done.
Admiring the dedication you put into your blog and detailed information you offer.
It’s awesome to come across a blog every once in a while that isn’t
the same outdated rehashed information. Fantastic read!
I’ve bookmarked your site and I’m including your RSS feeds to my Google account.
Nice answer back in return of this question with solid arguments and
telling all regarding that.
Nice blog here! Also your web site loads up fast!
What web host are you using? Can I get your affiliate link to your host?
I wish my web site loaded up as fast as yours lol
I know this if off topic but I’m looking into starting my own weblog and was curious what all is required to get set up?
I’m assuming having a blog like yours would cost a pretty penny?
I’m not very web savvy so I’m not 100% certain. Any suggestions or advice would be greatly appreciated.
Kudos
I have learn several just right stuff here. Certainly price bookmarking for revisiting.
I wonder how so much attempt you place to create this sort of excellent informative web
site.
I like the valuable information you provide in your articles.
I will bookmark your weblog and check again here regularly.
I am quite sure I will learn many new stuff right here!
Best of luck for the next!
We stumbled over here by a different website
and thought I should check things out. I like what I see so now
i am following you. Look forward to looking into your web page repeatedly.
I would like to thank you for the efforts you’ve put in penning this website.
I’m hoping to view the same high-grade blog posts from you in the future as well.
In fact, your creative writing abilities has motivated me to
get my own, personal website now 😉
This piece of writing will help the internet users for creating new blog or even a
weblog from start to end.
I have to thank you for the efforts you’ve put in penning this blog.
I really hope to check out the same high-grade content from
you in the future as well. In truth, your creative writing abilities has motivated me to
get my own, personal blog now 😉
If you are going for finest contents like me,
only visit this site all the time as it presents feature
contents, thanks
At this time it appears like Expression Engine is the preferred blogging
platform available right now. (from what I’ve read) Is that what you’re using on your blog?
Would absolutely make again.
Thank you for the good writeup. It in fact was a amusement account it.
Look advanced to more added agreeable from you! However,
how could we communicate?
I really like it whenever people get together and share views.
Great site, stick with it!
I read this article completely about the difference of latest and earlier technologies,
it’s remarkable article.
Great article.
Fine way of telling, and nice piece of writing to obtain information concerning my presentation topic,
which i am going to present in institution of higher
education.
Hello just wanted to give you a quick heads up and let you know a
few of the images aren’t loading properly. I’m not sure why but
I think its a linking issue. I’ve tried it in two different internet browsers and both show the same results.
My brother suggested I would possibly like this website.
He was totally right. This post actually made my day.
You can not believe just how so much time I had spent for this info!
Thank you!
Thanks for your personal marvelous posting! I actually enjoyed reading it, you may be a great
author.I will always bookmark your blog and will eventually come back in the future.
I want to encourage yourself to continue your great writing, have a nice
holiday weekend!
Hi there to every body, it’s my first pay a quick
visit of this webpage; this web site contains awesome and truly fine information in support
of readers.
I’m extremely inspired together with your writing
talents and also with the format in your blog. Is that this a paid subject or did you customize it yourself?
Either way stay up the nice high quality writing, it is uncommon to see a great
weblog like this one today..
I am really enjoying the theme/design of your web site.
Do you ever run into any web browser compatibility problems?
A few of my blog readers have complained about my site not working correctly in Explorer but looks great in Opera.
Do you have any suggestions to help fix this
problem?
After looking over a number of the blog posts on your web
page, I honestly like your technique of blogging. I saved as a favorite it to my bookmark webpage list
and will be checking back soon. Take a look at my
website too and let me know how you feel.
Hey! I understand this is kind of off-topic but I had to ask.
Does managing a well-established blog like yours take a massive amount work?
I am brand new to running a blog but I do write in my journal every day.
I’d like to start a blog so I can share my own experience and
feelings online. Please let me know if you have any kind of ideas or tips for new aspiring blog owners.
Appreciate it!
This site was… how do I say it? Relevant!!
Finally I’ve found something that helped me.
Kudos!
Great post! We are linking to this great post on our website.
Keep up the good writing.
Politechnika Częstochowska
ul. J.H. Dąbrowskiego 69
42-201 Częstochowa
NIP: 573-011-14-01
Informacje
bip.svgBiuletyn Informacji Publicznej
Zamówienia Publiczne
Informacje o cookies
Deklaracja dostępności
Inspektor Ochrony Danych
SARS-CoV-2
Wydziały
Wydział Budownictwa
Wydział Elektryczny
Wydział Inżynierii Mechanicznej i Informatyki
Wydział Inżynierii Produkcji i Technologii Materiałów
Wydział Infrastruktury i Środowiska
Wydział Zarządzania
logo ePUAP
Adres skrytki podawczej Politechniki Częstochowskiej w systemie ePUAP: /PolitechnikaCzestochowska/SkrytkaESP
Excellent post. I was checking continuously this weblog and I am impressed!
Extremely helpful info specifically the closing phase 🙂 I handle such information much.
I used to be looking for this particular information for a long time.
Thanks and best of luck.
Since the admin of this site is working, no hesitation very rapidly it will
be renowned, due to its quality contents.
This info is priceless. When can I find out more?
If you are going for best contents like me, simply go to see
this site all the time for the reason that it gives quality contents, thanks
Hi there! I know this is kinda off topic however , I’d figured
I’d ask. Would you be interested in exchanging
links or maybe guest authoring a blog post or vice-versa?
My blog goes over a lot of the same topics as yours and I feel
we could greatly benefit from each other. If you might be interested feel free
to shoot me an e-mail. I look forward to hearing
from you! Terrific blog by the way!
With havin so much content and articles do you
ever run into any issues of plagorism or copyright violation? My
blog has a lot of exclusive content I’ve either written myself or outsourced but
it appears a lot of it is popping it up all over
the internet without my permission. Do you know any
methods to help protect against content from being ripped off?
I’d definitely appreciate it.
Every weekend i used to visit this web page, for the reason that i want enjoyment, since this this site conations really good funny information too.
Hi I am so grateful I found your blog, I really
found you by error, while I was searching on Askjeeve for
something else, Anyhow I am here now and would just like to say thanks a lot for a marvelous post and a all round exciting blog (I also love the
theme/design), I don’t have time to read it all at the minute but I have saved
it and also included your RSS feeds, so when I have time I will be back to read much more, Please do keep up the fantastic work.
Hello, I enjoy reading all of your article.
I like to write a little comment to support you.
Informative article, exactly what I wanted to find.
Your style is so unique in comparison to other people I’ve read stuff from.
I appreciate you for posting when you have the
opportunity, Guess I will just book mark this page.
Yes! Finally someone writes about custom callaway golf balls.
A person essentially assist to make severely posts I might state.
This is the very first time I frequented your web page
and thus far? I surprised with the analysis you made to make this particular
post incredible. Great job!
บอลไหลเข้า gool ยังง่ายกว่า ราคาไหล
ขึ้นลง เว็บเราอัพเดทราคาไหลให้ทุกท่านทุกนาทีบอลกำลังจะยิงหรือว่าบอลโดนยิงเราก็อัพเดทให้คุณได้รับรู้ทันที ฮาๆ อันดับ 1 ของราคาไหลจะไปไหนไกลที่นี้ ball-vip ราคาไหล ราคาบอล ราคาบอลไหล ราคาบอลวันนี.
kızılay escort
My partner and I stumbled over here different website and thought
I should check things out. I like what I see so now i’m following you.
Look forward to finding out about your web page for a second time.
It’s not my first time to visit this web site, i am
browsing this website dailly and take good information from here every day.
Magnificent items from you, man. I have take into account your stuff prior to and you are just extremely
great. I really like what you have received right here, really like what
you’re stating and the way in which by which you assert it.
You’re making it enjoyable and you still take care of to keep it wise.
I can not wait to learn much more from you.
That is actually a terrific web site.
Usually I don’t read post on blogs, but I wish to say
that this write-up very forced me to try and do it! Your writing style has been amazed
me. Thank you, very great post.
Wow, amazing blog layout! How long have you been blogging for?
you make blogging look easy. The overall look of your web site is magnificent, let alone the content!
I always spent my half an hour to read this website’s articles or reviews all the time along with a mug of
coffee.
Hi there to every body, it’s my first go to see of this blog;
this blog carries amazing and truly fine stuff designed for
readers.
I every time emailed this weblog post page to all my friends, for the reason that if like to read it after that my friends will too.
You’re so cool! I do not suppose I have read through something like this before.
So great to discover another person with original thoughts on this issue.
Seriously.. thank you for starting this up. This site is one thing that is needed on the
internet, someone with a little originality!
I’ve been browsing online more than three hours today, yet I never found any interesting article like yours.
It’s pretty worth enough for me. In my view, if all webmasters and bloggers made good content
as you did, the internet will be a lot more useful than ever before.
I need to to thank you for this wonderful read!! I absolutely enjoyed every little bit of it.
I’ve got you bookmarked to check out new things you post…
I used to be able to find good info from your articles.
you’re really a good webmaster. The website loading speed
is incredible. It seems that you are doing any unique trick.
In addition, The contents are masterpiece. you’ve performed a excellent task in this matter!
My brother recommended I might like this web site.
He was totally right. This post truly made my day. You can not imagine simply how much time I had spent for this information! Thanks!
I’m amazed, I must say. Seldom do I come across a blog that’s equally educative and entertaining, and without a doubt, you’ve hit the nail on the head.
The issue is an issue that too few folks are speaking intelligently about.
Now i’m very happy I found this in my search for something relating to this.
I’m extremely impressed with your writing skills and also with the layout on your weblog.
Is this a paid theme or did you customize it yourself?
Anyway keep up the nice quality writing, it is rare to see a nice
blog like this one nowadays.
Hmm it appears like your website ate my first comment (it was super
long) so I guess I’ll just sum it up what I wrote and say, I’m thoroughly enjoying your blog.
I too am an aspiring blog blogger but I’m still new to the whole thing.
Do you have any tips and hints for novice blog writers?
I’d certainly appreciate it.
Hey! I could have sworn I’ve been to this website before but after browsing
through some of the post I realized it’s new to me. Anyhow, I’m definitely
delighted I found it and I’ll be bookmarking and checking
back frequently!
Have you ever considered about adding a little bit more than just your articles?
I mean, what you say is valuable and everything.
Nevertheless just imagine if you added some great photos or video clips to give your
posts more, “pop”! Your content is excellent but with images and video clips,
this website could certainly be one of the very best in its field.
Excellent blog!
Hey very interesting blog!
Céline Gounder, MD, has been appointed toPresident-elect Joe Biden’s COVID-19 task force.
Hey I know this is off topic but I was wondering if you knew of any
widgets I could add to my blog that automatically tweet my newest twitter updates.
I’ve been looking for a plug-in like this for quite
some time and was hoping maybe you would have some experience with something like this.
Please let me know if you run into anything. I truly enjoy reading your blog and I look forward
to your new updates.
Outstanding story there. What occurred after?
Take care!
Thanks for sharing your thoughts. I really appreciate your efforts and I am
waiting for your next write ups thank you once again.
Good day I am so delighted I found your blog, I really found
you by accident, while I was looking on Askjeeve for something else, Anyways I am here
now and would just like to say kudos for a marvelous post and a all round
entertaining blog (I also love the theme/design), I don’t have time to go through it all at the moment but I have
book-marked it and also added in your RSS feeds, so when I have time I will be back to read a lot more,
Please do keep up the awesome work.
Keep on writing, great job!
An intriguing discussion is definitely worth comment.
There’s no doubt that that you should write more
about this subject matter, it might not be a taboo matter but usually people do not speak about these topics.
To the next! All the best!!
Pretty! This has been ann extremely wonderful article.
Many thanks for providing these details.
Wow, this article is pleasant, my sister is analyzing such things, therefore I
am going to tell her.
In fact when someone doesn’t understand after that
its up to other people that they will help, so here it takes place.
Great site you have here.. It’s difficult to find
quality writing like yours nowadays. I honestly appreciate people like
you! Take care!!
Hi, I do believe this is an excellent site. I stumbledupon it 😉 I will return yet again since
i have bookmarked it. Money and freedom is the greatest way to change,
may you be rich and continue to guide other people.
Have you ever thought about adding a little bit more
than just your articles? I mean, what you say is valuable and everything.
However just imagine if you added some great pictures or videos to give your posts more,
“pop”! Your content is excellent but with images and videos, this blog could definitely be one of the very
best in its niche. Amazing blog!
Quality articles is the secret to be a focus for the viewers to visit the
web page, that’s what this site is providing.
With havin so much content and articles do you ever run into any
issues of plagorism or copyright infringement?
My blog has a lot of unique content I’ve either authored myself or outsourced but it appears a lot of it is popping it up all over the web without my authorization. Do you know
any methods to help reduce content from being stolen?
I’d genuinely appreciate it.
I am not sure where you’re getting your information, but good topic.
I needs to spend some time learning much more or understanding more.
Thanks for wonderful information I was looking
for this info for my mission.
Your style is really unique in comparison to other people I have read stuff from.
Thank you for posting when you have the opportunity,
Guess I’ll just book mark this web site.
At this moment I am ready to do my breakfast, once having my breakfast coming yet again to read additional news.
It’s going to be ending of mine day, except before ending I am reading this enormous article to improve
my knowledge.
My coder is trying to persuade me to move to .net from PHP.
I have always disliked the idea because of the costs. But he’s tryiong none the less.
I’ve been using WordPress on various websites for about a year
and am concerned about switching to another platform. I have heard fantastic things about blogengine.net.
Is there a way I can import all my wordpress posts into it?
Any help would be greatly appreciated!
It’s impressive that you are getting ideas from this article as
well as from our argument made at this time.
I’ve been exploring for a little bit for any high-quality articles or
weblog posts on this kind of space . Exploring in Yahoo I ultimately stumbled upon this
site. Reading this info So i’m happy to express that I’ve an incredibly
excellent uncanny feeling I discovered just what I needed.
I so much surely will make sure to don?t forget this website and
give it a glance regularly.
Excellent way of telling, and good post to get data about my presentation focus, which i am going to deliver in university.
I am curious to find out what blog platform you are working
with? I’m experiencing some small security issues with my latest blog and I would like to find something more safe.
Do you have any recommendations?
Thanks a lot for sharing this with all people you actually
recognize what you are talking approximately! Bookmarked.
Kindly also talk over with my website =). We can have a hyperlink alternate arrangement between us
I am curious to find out what blog system you are working with?
I’m having some minor security issues with my latest website and I would like to find
something more safeguarded. Do you have any recommendations?
Do you mind if I quote a couple of your articles as
long as I provide credit and sources back to your website?
My blog site is in the very same area of interest as yours and my
visitors would truly benefit from some of the information you provide
here. Please let me know if this ok with you. Thank you!
After looking into a handful of the blog posts on your blog, I truly appreciate your way of writing a blog.
I saved as a favorite it to my bookmark site list and will be
checking back soon. Please visit my web site as well and
tell me what you think.
My partner and I stumbled over here from a different website and thought I may
as well check things out. I like what I see so now i am following you.
Look forward to looking at your web page repeatedly.
Hey just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading properly.
I’m not sure why but I think its a linking issue. I’ve tried it in two different browsers and both show the same results.
Good day! Would you mind if I share your blog with my myspace group?
There’s a lot of people that I think would really enjoy your content.
Please let me know. Thank you
Hi, I do believe this is a great web site. I stumbledupon it 😉 I
will revisit yet again since i have bookmarked
it. Money and freedom is the best way to change, may you
be rich and continue to guide others.
Hi, all is going perfectly here and ofcourse every
one is sharing facts, that’s really excellent,
keep up writing.
What’s up colleagues, how is everything, and what you would like to say about this paragraph, in my view its actually remarkable in support of me.
Hi there I am so glad I found your webpage, I really found you by mistake,
while I was looking on Bing for something else, Anyhow I am here now and would just like
to say thanks for a fantastic post and a all round interesting
blog (I also love the theme/design), I don’t have time to
go through it all at the minute but I have book-marked it and also included your
RSS feeds, so when I have time I will be back to read a lot
more, Please do keep up the fantastic work.
Great blog you have got here.. It’s hard to find excellent writing like yours nowadays.
I honestly appreciate people like you! Take care!!
Everything is very open with a really clear
explanation of the issues. It was truly informative.
Your website is useful. Many thanks for sharing!
I was very happy to discover this great site. I need
to to thank you for your time due to this wonderful read!!
I definitely loved every part of it and i
also have you saved to fav to check out new information on your
website.
Spot on with this write-up, I seriously feel this site needs
far more attention. I’ll probably be back again to read through more, thanks
for the info!
Hi there i am kavin, its my first time to commenting anyplace, when i read this article
i thought i could also make comment due to this
sensible piece of writing.
Hey! I just wanted to ask if you ever have any issues with hackers?
My last blog (wordpress) was hacked and I ended up losing months
of hard work due to no data backup. Do you have any methods to stop hackers?
This article offers clear idea for the new visitors of blogging,
that genuinely how to do running a blog.
Hello, I read your new stuff like every week. Your humoristic
style is awesome, keep it up!
I am really impressed with your writing skills as
well as with the layout on your weblog. Is this
a paid theme or did you customize it yourself?
Anyway keep up the excellent quality writing, it is rare to see a great blog like this one these days.
230119 662311Extremely informative and wonderful complex body part of articles , now thats user pleasant (:. 622770
I know this site presents quality depending articles and
other information, is there any other web page which gives these kinds of things in quality?
hello!,I really like your writing so so much! share we keep
up a correspondence extra about your post on AOL? I need an expert
in this house to resolve my problem. May be that’s you!
Looking forward to see you.
That is very attention-grabbing, You’re an excessively skilled blogger.
I have joined your rss feed and look ahead to in search of more of your fantastic post.
Also, I’ve shared your web site in my social networks
Everything wrote made a lot of sense. But, what about this?
suppose you typed a catchier title? I mean, I don’t want to tell you how to
run your website, however what if you added something
that grabbed a person’s attention? I mean ozenero | Mobile & Web Programming Tutorials is a little boring.
You could peek at Yahoo’s front page and note how they create article titles to grab viewers to
open the links. You might add a related video or a picture or two to get readers interested about what you’ve got to say.
In my opinion, it might make your posts a little
livelier.
Thanks! I memorialize how you also enriched my encounter at LCS, both in bloodline and a notable reveal on to Gettysburg. Congratulations on your late-model publications, and wishing you attainment on Crossroads.
I’ll immediately seize your rss as I can not in finding your e-mail subscription link or e-newsletter
service. Do you have any? Please let me know in order that I may subscribe.
Thanks.
Do you have a spam problem on this website; I also am
a blogger, and I was wondering your situation;
many of us have created some nice methods and we are looking to
exchange methods with others, why not shoot me an e-mail if interested.
I do accept as true with all of the ideas you have offered in your post.
They are very convincing and can certainly work. Still,
the posts are very brief for beginners. May you please lengthen them a bit from subsequent time?
Thanks for the post.
It’s very trouble-free to find out any matter on web as compared
to textbooks, as I found this piece of writing at this web site.
Hi, just wanted to mention, I enjoyed this blog post.
It was funny. Keep on posting!
If you would like to improve your know-how simply keep
visiting this web page and be updated with the hottest news update posted here.
Good article. I absolutely appreciate this site. Continue the good work!
I got this website from my friend who shared with me concerning
this website and now this time I am browsing this site and reading very
informative articles or reviews at this place.
Hello, after reading this awesome article i am too glad to share my knowledge
here with friends.
Amazing! Its in fact amazing post, I have got much clear idea regarding from
this article.
Unquestionably believe that which you stated. Your favorite reason appeared to
be on the net the easiest thing to be aware of. I say to you, I definitely get annoyed while people think about worries that they plainly don’t know about.
You managed to hit the nail upon the top and also defined out the whole thing without having side effect
, people could take a signal. Will probably be back to get more.
Thanks
My brother recommended I might like this website. He was entirely right.
This post actually made my day. You can not imagine just how much time I had spent for this info!
Thanks!
After I initially left a comment I seem to have clicked on the
-Notify me when new comments are added- checkbox and now
every time a comment is added I receive four emails with the
exact same comment. Perhaps there is a means you are able to remove me from that service?
Thanks a lot!
I visited multiple sites however the audio quality for audio songs present at this website
is truly wonderful.
excellent issues altogether, you simply received a brand
new reader. What might you recommend about your post that you made some days ago?
Any certain?
I’m extremely impressed together with your writing abilities as neatly as with the format on your weblog.
Is this a paid subject matter or did you customize it yourself?
Anyway keep up the nice quality writing, it’s rare to peer a
great blog like this one these days..
Hi, I check your blog like every week. Your story-telling style
is witty, keep doing what you’re doing!
I’m gone to inform my little brother, that he should also go to see this blog on regular basis to obtain updated from most up-to-date gossip.
Good day! I know this is kind of off topic but I was wondering if you
knew where I could locate a captcha plugin for my comment form?
I’m using the same blog platform as yours and I’m having trouble finding one?
Thanks a lot!
Hi there, I discovered your website by means of Google even as searching for a similar topic, your web site got here up, it seems
great. I’ve bookmarked it in my google bookmarks.
Hi there, simply became aware of your weblog thru Google, and located that it is truly informative.
I’m gonna be careful for brussels. I will appreciate should you proceed this in future.
Numerous folks will probably be benefited from your writing.
Cheers!
Simply desire to say your article is as astounding.
The clearness in your post is just spectacular and i could assume you’re an expert on this subject.
Fine with your permission allow me to grab your feed to keep
updated with forthcoming post. Thanks a million and please carry
on the gratifying work.
Thanks for sharing your thoughts about java tutorials.
Regards
First of all I want to say terrific blog! I had
a quick question that I’d like to ask if you
don’t mind. I was interested to find out how you
center yourself and clear your head prior to writing. I’ve had a tough time clearing my mind
in getting my ideas out there. I truly do enjoy writing but it just
seems like the first 10 to 15 minutes are wasted simply just trying to figure out how to begin. Any ideas or tips?
Appreciate it!
Wow, this article is fastidious, my younger sister is analyzing such things, so
I am going to inform her.
Fine way of telling, and pleasant post to take facts about my presentation focus, which i am going to convey in university.
Hello! I’ve been following your site for a while now and finally got the bravery to go ahead
and give you a shout out from Porter Tx! Just wanted
to say keep up the fantastic work!
This web site definitely has all the info I wanted about this subject and didn’t know who to ask.
I am not sure where you are getting your information, but good topic.
I needs to spend some time learning much more or understanding
more. Thanks for magnificent info I was looking for this info for my mission.