Servlet | JSP | JDBC | Maven Example

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome back aliens my name is Devon Verde and in this video we'll see an example covering servlet JSP mavin and JDBC in one video we are carrying covering all these things so this video will be helpful for those people who want to revise all these topics so maybe you have learned this topics from somewhere and now you want to make a quick recap so this video will be helpful for you because we will be covering most of them I mean the internet topic of that as well and then if you want to just see how sublet JSP Maronite it even looks like you know you you see you talked a lot lots of people and they say ok you sure you should launch a servlet and JSP but you're not sure what exactly we see in that you know some people not know Co Java and they just want to see how the JSP looks like so this video will be helpful in that way now again this video is not for those people who want to learn serve it and JSP indeed because will not be covering all those things in detail here but then if you just want to get a gist and then if you want to if you just want to do a quick recap this video it will be helpful for you so let's get started now first of all to make it work we require two software the first one is eclipse again you can go with any IDE bit here which you like maybe you can go for NetBeans or eclipse or IntelliJ which you like in fact in my machine I already have a clip so I will continue with that and then the second software I need is at our DBMS so in this example I'm using MySQL or you can opt for Oracle pause quiz whichever you like so I'm in this in this video I will be using Eclipse and masculine yeah so so in my Eclipse you have to open eclipse you have to select a workspace and then let's create a project so I will say new and now you have two choice you can go for a dynamic web project or you can go for mavin project now what's the advantage of going for mavin so in dynamic what you do is you create a project and then you assign a tomcat server I get to do that you have to assign a tomcat server and then what you do is you when you when you want to use some external job for example for MySQL for JDBC we need a jar file right and you have to go to Google I'm near to what internet you have to download the Java file and you add in your project now when you work with lots of dependencies it creates some issues example if you work with advanced framework like spraying hi bud net or maybe starts framework there's so many dependencies you have to work with so you're downloading all those dependency by yourself I'm talking about Java files okay what you can do is you can you know you can ask Mammon or the build tool to give it to you so mavin will say okay programmer you want you want Mahaska character I will give it to you if you want Spring Framework dependencies I will give it to you so your Marron will give you all those dependencies again you have to quantitate somewhere you have to infirm haven't hey what what are what are things I need so I will give it you give you those things but what its debit maven and like it if you have all the Java files available available with maven ok so here are we starting a madman project and how to do that just pick one of those and you will simply say ok sting sometime I would say mavin so search for my main project and you can see we caught mavin here click on next and we'll say next here will mention the project type so I'm going for a web app project again you can select quick start if you want to go for a standalone software here we are building a web application so I select web app click on next and here we'll enter bloop ID so Cooper is basically your company IDs so let's say if you have thousand projects on on some web services or some Play Store you have to make sure that every app is different and you can differentiate between those with the help of group IDs and the package name so our group IDs come to the disco that's how I represent my bro party I can satified edit the project name I will say servlet JSP demo again this is servlet JSP JDBC and I mean demo but like this name it I serve it JSP demo and with click on finish so we got about mavin project now this budget is coming from the internet you can see just taking some time to configure now I will if I go back to my project or not this one this is the spring project so this is the project which we have created now which is servlet JSP demo again is taking some time to make the to build your project and you can see we got our project here we got resource folder we got JRE because now in dependencies with memory dependencies so this is the or with that very moment dependencies so if I if I open Java resources you can see in this we have my own dependencies and we only have one dependency what I want is I want a ask your dependency as well because if you want to work with MySQL again in this application we'll be working with a database right so we require a mask you'll connect to connect with this database in fact I also have a database ready with ready with us so I have installed a MySQL rehand so you can install MySQL or post with your choice so I have mask you with Maskull workbench so it's saying is some time to open so by the time it opens what I will do is I will download the dependency now question is how will you get the mask or dependency it's very simple you just need to inform mavin hey you want mask well dependency and how do we interact with mavin you do that with the help of P or M file so in this p om which is project object model you have to inform what type of what type of dependency you want so we just need to add a dependency which mask the dependency here so we already have J unit now we don't have to type by yourself okay if you're thinking you need to by heart all the dependencies not needed you can simply go to a website and so the website is ambient repository okay so here with search for Emily and repository and you can take you to a venom posit 3 where you just need to search for which dependency you need so here we need a mask you'll connectors so if you can search for my so connector it will give you a connector here so if I click on search and it will give you a connector and which one is select you can select any version I will select six point zero point six to stop it this and go back to your mask you'll but you go back to your Eclipse and paste it here the moment you paste it you can see it will download the math so go enter for you I know our job is done so using math and you can download any dependency if you want if you want mask you'll you get it there if you want a spring free Spring Framework dependencies or Java I'm talking about you can get that using maven so maven has lots of advantage like it's a build tool you can build the application it will package the thing for you but I mean we only need a jar file yeah so we got a jar file there now the next thing is the next thing is I want to get a page right so using which I can't send data so if I go back to my master workbench you can see I will just connect with my with my workbench and the password is star star star star which is root in this case for Mama she's at least and okay so I don't have a database called as maybe if I explore now when you can see we have a database my mean in which I'm a table has alien so I already have all this data ready with us so that you know when you work on a project it will not make it will not waste much of time so I have a master database which is Naveen and the data the table name is aliens we just need to fetch data from this example if I user says hey I want data about user IDs nine so it will print nine media and hardware if someone says hey I want user ID - so it will print to Archana big data if I want five up lanai and up to now and Oracle so this is what I want to do so for this we need a page right so that I use I can enter the value so if you can see we already have a index dot JSP page now why do we need JSP one of this GML because when you say you want to make a web page you always go for HTML right but in this case when you say you want to create a page and that should be a dynamic page because see what happens with HTML is you can make only static content with HTML Oh again if you have if you are using javascript and that if you are sending a sink request if you can achieve dynamic content there but imagine if you want to make a dynamic page without using javascript all the stuff if you want to write java code inside insert HTML is it possible can you run java code inside HTML what exactly right so that's why we require JSP so whenever you want to create a dynamic content you have to choice you can go for a servlet or JSP now when you want to process something server is better and if you want to get a view JSP is better so sublet are used to process the request so whatever our clients have a request so it will handle that again you might be thinking why servlet then we can use to our normal Java right servlets is Java okay servlet our servlet is a Java file the only thing is in sublet it has a special feature where you can accept a user request from from the internet right it's normal Java cool if you render if I if I make the code it will it will make sense but then we have servlet which like sent a request and we will process some information and then we will show the data on JSP now again we have one more thing which which is called as MVC which stands for model-view-controller now and this c is used let's say if I use a sent request request will go to controller now controller will generate data again if you want to know about it if you're new to NBC please watch the ABC video first I do have a spring I mean I do have a video on MBC do watched first and then so if you know about just to make a revised vision we have a controller which will accept a request we have a model where you will hold the data and we have a view where you will show the data yeah so we can implement controller with the help of servlets we can implement model with the help of a normal Java class and we can implement view with your pop GSD so this is our JSP here and it you can see if you are getting some error here the other is because we don't have Tomcat linked here so we have to make sure that I do have Tomcat and fortunately I do have a tomcat here against that the news 25 which is working so if I say Tomcat start so target is there and it is in running state I guess yes it is in running state you just need to connect your project with Tomcat because your project is not going to be Tomcat yet so I will right click here and I will say properties and this option of target one time you simply have to check this thing which will make sure that your Tomcat is linked and click on OK now this will link your Tomcat and we got a tomcat there so you can see no there's no problem with JSP file now in this file I look at a form tag and I will say form action equal to and I'll mention I want to fetch the user data so I want to specifically I want to fetch the alien data because the table name is alien right so I would say get alien so that's my user request so actually is get alien and here I will specify what I want to fetch so I want to fetch the data based on the a ID so if I mention a ID I want the complete data of the user ok and then I also need to make sure that I have I have a button here to click it so I will say input type equal to submit yes I will say submit here ok now when I click on the submit it should call it should fetch the data right now push arise when you click on this submit they need to be a controller will accept a request right and that's well we have solved it so let's get a simple servlet here and there's one more issue I don't have a Java folder you can see that in SRC we need we need Java folder as well so we have to make sure that you have Java here okay not here let's let's go to main and say I want to get a new folder I will say a new folder and that folder name is Java folder which should be the inside main okay now in this jar folder I want to create some resources so I will right click on a project I will say what's that and I want to solve that right so I would simply say I want a class how maybe I'll simply see it clear sublet so right click I will say new servlet and this subject will have a name also a package name first I will say contact I disco and the comdata disco the odd web and this class name here will be alien but I will say get alien controller here so I'm specifying a controller name as get alien controller I will click on next now the you are mapping so for which request I want to call this controller so the request type is get alien so whenever I use a request for get alien I want to call this controller so this is the linking this is how you're lying so you have a controller which is a servlet and you have a request so the questions get alien right and the controller is the name of the controller is get alien controller you can see the spelling difference there right so anyway our user request for gate alien you can see the HTML we are specifying gate Adrian you have to request gate alien controller click on OK and click on finish this will create a socket for you and miss the mapping you will be saying the mapping will be done inside web I adapt so where I live we have web a dot XML file this is where you have done the mapping so the mapping is done with the help of solid tag and solid mapping tag so the southern mapping is specified for which request you want to call which controller game so that the controller name is here the class name Kandra that is called our web app get alien controller simple right so that's how it works that's how the just the mapping now if I go back to controller here we have a plus we don't need all this extra thing we just need a do get method so basically when you have whenever you have a get request so basically we have two type of request we have five but then in Soviet we used to we have get requests and we have post requests now get is something very so if you want to press data from server you use get request if you want to submit it on the server you use post request so get to fetch and post to submit data here we have to face data right and that's why we using get request okay now once you specify get request what to do so based on the Eid first of all are you sending a ID right so if you can see in the index page I use I sending a ID how can you fetch the a ID in this servlet thanksfully we have a request object so using request object you can surely press data so I would say request dot getparameter so the quiz is an object of httpservletrequest so we just need a method one has get parameter in which you specify hey I want a table it is coming from a ID so request dot getparameter a ID it will give you the data but then we have to store it somewhere right so okay we'll just do it some extra rows here I would say I want to store that in a a ID variable so I would say int a ID equal to request dot getparameter now unfortunately get parameter will give you integer also it will give your string I want integer so I will simply say integer dot parseint and here I will just try to remove this yeah so you can see I have I have I have passed it right so you have kept on waiting your request data into an integer format now once you've got your integer I want the object of alien right again you can fetch one one data you can fetch a ID you can fetch name and you can fetch tech so you can see the column names we have a ID name and tech so these are the three columns in your database now you can fetch these three values but we are walking with Java right and Java is purely object oriented that means even if you want to face this data this should be passed in the object format how do we get the object so to create the object first you need a plus so in this I will create a class and this class name will be called as alien and this Aryan is a model so whenever you have a class which which whose object will ever send some data that's a model object yeah so I would say I have a lien here and this alien will have three things it will have private and a ID it will have private trying a name and it will have private string text so we have these three things and for these three variables I want getters and setters so I will simply right-click here I would say soz generate Gaeta setters and I will select all the variables here and I will click on OK now once I got this guess let also use to signal so that if you want to print this object it should bring some data right so I would say souls to string because what will happen is if you try to print a reference reference a couple of a class it will print the hash school I don't want that I want the data so over like two strings so whenever possible in fact I would suggest for every class override to string that's how we do it okay so now once we got to string here let's go back to controller and now we can create object of a ID so I would say alien so first object of alien so I will say alien a1 equal to new alien let's get the object of alien no we should not make any quantity of alien right because you want to face this data from database okay that's that's a thing right how do you face together together for database now remember this whenever you want to walk with database you need to write data with steps DB steps right now JDBC has seven steps in it now if you think about those seven steps the first step is you have to import the package you have to then second step is you have to load it driver you have to create a connection object you have to create a strip in the object you have to process results and then you have to close the connection there's all these steps right now where to write all these steps should you write all these steps in our insert controller which is servlet that's not a good idea in sublet it should also subject should only fetch the request or it will accept a request it should do some first thing but not JDBC processing and then it should return the data to the view so who will do the DBC processing but who will have the all the content all the all the code and that's where we have a special layer we just called as Dowell's again it's not compensate to go for down layer but that's a good practice right if you want to be a good developer if you want to create a software which will be less bugs go follow some standards and that's where you have a towel layer so let's get a class and I would call this class as alien Dao which belongs to a package come toward the disco dot web dot Dao so we are putting that in a dau class or dau package alien Dao so example if you have five tables so you'll be having five classes which representatives table and you'll be having five down now classes right so that's not so empty class will have its own every table will have its own Dao class and in each now class we'll be having those four operations for operations here create a Priya data or create alien read alien update area and delete alien right so put options normally normally that's what we do so in this and this alien tau I will be having a method which will it'll be the alien object and I will say this is get alien so this gate alien will accept a a ID and it will give me the alien object that's simple so let me just pee ride an object I will say alien alien and then I would say this alien or we have to input the package for this because it belongs different package than that and it will say a dot set a ID so time is I always specify static IDs okay static values so that let's see if it is working or not I would say name is Naveen then a dot sect tag as my favor technologist Java all this travel and then I will return the alien object of course this data should be coming from database but then let's go step by step now once record this class let's go back to controller now the alien data will be coming from the DAO layered right and that's how that's where you require the object so we'll say alien Dao and I will say Dao object equal to nu equal to new alien Dao yeah and let's import the package for that so you can import the package in Eclipse by saying ctrl shift o so ctrl shift o is used to you know to import the package for required packages and using this down now you can specify hey Dow get me the alien if I pass the value which is a ID so if a user say is a ID one it will pass one but that is matter because even if you have even if yours passing one you are passing static values yeah so we are doing some I know some thing here severe stuff anyway so once we got this alien object I want to display but where to display that and to display this data way to create a JSP because JSP is a place where you can actually show the data right again you can print it up from here as well but creating a HTML page in servlet is a bad thing okay it's not a bad thing but then it will be damn difficult to design a page think about it let's say if you want to make a awesome website when you have lots of graphics so each so even if you create a small page with lots of graphics it needs around 70 80 lines of HTML tags what do you think will you write all the HTML tags in this in this servlet by saying out dot print that's not a good idea so that's why we quite a separate page which many will have design and then you can put data so let's do that so in this in this web for in this project or in this project I will say write like I want to get a JC page which will show my aliens I will say hey jasp show the alien so I would say show alien dot JSP I will click on finish so because a JC page here which will have some layout example I will change the color I will say BG you can design your stuff I'm very bad with HTML so you can say I'm simply saying busy color equal to C and that's it that's what I know about HTML and here I will print the data about alien now how do you print it or first of all how do we call a JSP from a solid that's the first question right so I will go back to servlet now how do you call a JSP there are two ways of calling it one is dispatcher which is Vickers dispatcher the second way is using send redirect which one to use here now we can use anything but then it is always recommended that if you if you want your client to know that you are getting redirected didn't go for it right otherwise if you're using dispatcher client it will not even know what is happening behind the scenes and that's what we want right we don't want to confuse our clients by changing the page URL every time so because the client is sending requests to get alien not sure alien right because if I use with I write the URL will be shown here okay so what we do here is I would say I will usually dispatcher so I said it by dispatcher and I would say Rd equal to the quit dispatcher is in the face and the way you can get the object of it by saying request dot get requestdispatcher and in this you have to specify so in this bracket you have to specify the name of your JSP so they want the JSP is show alien door JSP yeah and you simply have to forward the request you will say our DDOT forward and he will pass you forward these two objects which is the question response because you want to send so when I use a sender request right user send a request to the index page right from index page use any request to the controller that's one request the same request object will go to JSP so user should not know that we are sending to request right so that your question will go to Jay spend that's why we have to forward otherwise if you don't want to forward it to your choice you can go for another way as well okay which is dispatch which is really lightweight time and let's go for dispatcher and now it will forward the request to JSP it works okay well let's verify in JSP I will print in show agent just to see if the flow is working yeah so we are we will be running index dot JSP index dot JSP we'll call a controller which is your servlet and so it will call JSP let's verify right click run as run on sawa it will I guess it will run on my Firefox maybe let me just remove this MVC from here because trust not required click on finish browsers are walking slow today yeah so we can see to asking for the a ID I would say once in a one hour click on submit and you can see it is printing a JC page remember the page color which is C on color and then see the request request is still get alien even if you are calling up page which is get which is show alien the user you are that is getting it because we're using dispatcher so a client don't even know which page is getting called that's the beauty yeah but if you're using rewrite then you have it will bind it will show the page name okay so I will stick with dispatcher Savage but how do we pass this object with a lien here so I want to pass this alien a one object to JSP and the way you can do that is by using the request object because in forward you are sending request object right so what if you can simply add your data in the request object it's something like you know let's say if from us if your friend is coming to your place let's say so if I'm staying in India now so let's say one of my friend is coming from u.s. to India and if I want to order something from us he can carry it right so he's not coming to India just to give me the just to give that thing to me but he's coming to India for his own work but then I'm asking him to take that thing for me that's the same thing we can do here the forward is sending the request object right so we can put that data in to request object and send it so I would say request dot set attribute and I will have a name so I would say I'm sending the aid in data I'm sending alien and the object is a one so R equals dot standard view we are sending alien which is a a one here and in JSP you just need to fetch it now you can write Java code here right so to write Java code inside JSP we simply use this this angular beckoned percentage this is called as replayed yeah so in JSP we have this we have declaration tag we have scripted tag we have different tags available but if you want a java put inside this we can simply use cryptic tag and I would say I'm fetching the object of alien which is a 1 here but how do you fetch it so you simply say request dot get attribute and you specify hey I want to fetch area now if you remember in servlet in subject we have set we have set the attribute in JSP we are getting the attribute with the name alien same thing right and here we'll print the a1 object oh not this way we'll say out dot println I will say a1 okay I guess we have to import the package now this alien pack it is a class which belongs to package model so you simply say control space and that's the package you can see import package comes something like this this is how you import packages in JSP not like normal normal Java code right import space and package name you have to say input equal to because page is an tag for you now and this becomes a attribute okay we are getting some error here because we have to type trusted because again attribute will give you object of object I want object of alien so we just have type class indeed it should work now right it should it should print a data at least some data right so let's restart the server and let me just go back to my page here refresh and I will enter the ETA which is 1 0 1 I will say submit can see that we've got our data we call it alien AI D is equal to 1 0 1 name naveen and take java but hold on this is that this is study data i just not having read from database so how do we connect with database here so if you want to write we database you just need to use Dowlais alright because this is where you are faking your faking this data you just you don't need to create a dummy data you want to fetch it from database so let's remove this or maybe you can just have it there that's fine what I want is I want to a database code here now to work with database we need to follow certain steps right the first time you have to input the package so I will go here I will say import Java dot SQL dot star that's how we import the package and then the next step is you have to get the connection object now I would say I would simply create a connection object outside the methyl or let's let's do that inside just just for time being I would say try catch because it might generate error so I will say try catch and then here we'll write although statement so we'll say first the first step is we have to say class dot for name and here we have to mention comm dot mask yacht JDBC driver yeah so this is how you load your driver so for mascot we have this string for what I can't we have a different string from post-mission different string so we have to just go to google and search for the driver name for different different drivers different different tip DBMS that's the first step we have we caught your closet for name next is you have to get a connection object so I will say connection go on equal to now cache is the interface and the way you can get object of it will by saying driver manager dot get connection and here we have to pass three parameters so in this case I might pass three parameters the first one is the URL the second one is the username and that is password so password is root and the username is also dude from SQL for my machine and the URL is JDBC colon mask ul colon double slash localhost colon 3 3 0 6 / database name is Naveen I know it's a big string right but then this is called as URL which is which is used to connect to data database so JDBC colon masculine double slash localhost colon 3 3 0 6 class Naveen now once we have done with the connection object we need to create statement object because let's say if you want to call someone you you create the condition first you dial the number you connect and then you think what to say and then you say right so that thinking is statement right so this kind of statement object I will say statement s T equal to corn dot 3h statement now you are saying you are you are you will be saying something and how to say so you will say st dot execute query and you will fire the query here then what's the quality for us it is select star from alien that's the query here but then this query is not complete because we have to specify the ID as well right because I don't want all data I want only one so it's say where a ID is equal to plus I'll mention a ID symbol and then this execute query will return you the object of a or not this will not return object of alien right it will return the object of result set because statement object returns the object of result set so I would say result set RS equal to so isn't such an interface so the moment you fire a query it will not give you normal data right it will give you a table structure and that will be stored inside result set and now flow is all set you can say so we so we have to traverse between different rows right so if you get five rows how do you specify which row to pick up and that's how you that's why we use artist dot next so allah's' dot next is basically to shift your pointer between different rules and we are not even sure if you have next drawer and that's why we'll say if so that we can avoid the exceptions if you have an extra because next will also give you a written it will return boolean value if you have a rule if you have a row then what we'll do is we'll fetch one with value and how do you fetch so we have so we will fetch any we will assign to the alien object well say a dot set a ID now this data is coming from this website so we say others thought get int the first problem is a ID so we have to which the column name so when I say get int you have to mention the column name let's say a dot set a name I will say are they start get string because it in a string format I would say this is a name you can also use Paulo numbers if you want one two three or you can use column names so together safe side always use column name it is safe right you know what columns you are fetching you don't have to remember these sequence of columns and once we got it that's it we don't even need to specify the static value look at it I will be coming to database now these are the steps or one more important step you have to close it but that's fine you can do it in your code and after doing all this thing like this twenty five it is working I will right click here I will say one I also go back and refresh and this will say in the nine I will say submit you can see we got nine media and hardware if I say five submit you can see we got five Renee and what I call if I say one you can say we got Naveen Java so it's working right so we have done with maven JDBC servlet and JSP in one code so this is how it works awesome right again this video is not to not fall bigness this was for people who have already done JSP servlet and just they want to revise it or if you just want to see this stuff you know some people have the curiosity war of how I mean what exactly it is you know so let's say you are running code job when someone says hey you need to learn savage a speed future and they're not sure what they are what they are going to learn so this video will be helpful for that so as I mentioned in the as I mentioned out here so it's that awesome now one stick once we once you come once you watch the video just write the description well you have a we have a well you have a link so I have uploaded this project on github so you will find the naked script in the description area and you can add your own code now so assignment for you after this after this after wall after doing this port on your machine is let's say I also want to create a new alien because I'm just fetching an alien right what if I want to create a new alien so in this I have one to the one common Java right let's say if I want to have one but once your to let's say Radhika and some technology maybe let's say Python again so in that case you need to create a alien and when you specify the data so you have to kill a page where you will it will ask you for three values when you click on submit it will go to a controller and controller will use a dowel layer to save the alien right get a new method called a civilian here and write the same steps and save it in the the thing in fact the moment I will when I get some time I will I will upload that as well so you can check the description and you will check the link it may be or may not be available when you when you check this video when you check the link okay so that's it I hope you enjoyed the entire session to let me just go for a quick recap what we have done till now so first you have a next page where you are asking for the a ID when you click on submit request goes to the servlet and this is a way to solve it you create a class and exchange with session you solve it you have a do get method here yeah and then in Duquette you are fetching the a ID which is coming from client you are using add a layer to fetch data and from tau you are saying get alien by passing that a ID and the same data you are assigning to a one oh this is one more thing we can do here now if you if you don't want use equities patcher you can also use redirect so the way you do that is by saying response dots and redirect and you can specify the name which is show alien dot JSP so we can specify this as well but the thing is if you if you're using this one what will happen is you cannot reuse the quest object because a client will send a new request when I say client I'm talking about browser here so in total you're sending to request one to controller and second to the JSP as well so in we taiked Europe response goes to the client again and from client it goes to the shoulder and show a lien so it is a new request object so this will not work so this request will not work in that case you have to use HTTP session so you have to work with session management so we have cookies we have web URL rewriting or you can also use a HTTP session such a is the best thing I feel sorry say session a session equal to and the way you can get the hold of session is by saying request dot get session and now you have to set the attribute in session not in request object so I will say session dot set attribute the same thing alien and a1 you are passing a1 so nothing changed the only thing is instead of using request object using session object now because it doesn't matter how many requests you sent to the server now this session will be maintained and in show alien instead of fetching from request object you have to use such an object cool let's run this port let's verify it is working I would say don't ask or not let's do the server that will be enough let's go back to the page and refresh let's enter 1 again I will say submit now look at the look at the URL you can see now your colleagues show is show area not a JSP in the earlier case it was get alien because since we are using Twitter act but it is changing the URL as well so as a client now I know that I am I got we like to do a different URL that's the beauty about sense we direct yeah so that's how you use session object so that's it this is what we have done in this session so we will find the link it is description area where you will find the code on github and if you like this video click on like button and do subscribe for further videos and to share this video with your friends thanks for watching
Info
Channel: Telusko
Views: 138,540
Rating: undefined out of 5
Keywords: telusko, navin, reddy, tutorial, java
Id: WXmTxgDg52o
Channel Id: undefined
Length: 37min 30sec (2250 seconds)
Published: Mon Dec 04 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.