Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
569201d
initial commit
zgulde Dec 2, 2016
eff71ff
add hello world message
zgulde Dec 2, 2016
7a638aa
add counter servlet for /count
zgulde Dec 2, 2016
ff382d9
increase and display count when /count is visited
zgulde Dec 2, 2016
d3fff7c
add jstl dependency and example jsp page
zgulde Dec 2, 2016
bc7e559
add and include html template partials
zgulde Dec 2, 2016
2dc9ea2
add login and profile jsps
zgulde Dec 5, 2016
34bd264
check credentials when form is submitted
zgulde Dec 5, 2016
3604f19
add Ads interface and DAO implementation
zgulde Dec 2, 2016
f911119
show profile page from servlet
zgulde Dec 6, 2016
b034c36
move credential validation to servlet
zgulde Dec 6, 2016
1d22d9c
show all ads on ads index page
zgulde Dec 2, 2016
abc5b15
track login status
zgulde Dec 6, 2016
7b547d5
remove jsps from direct public access
zgulde Dec 7, 2016
a3fef90
insert ads in list dao
zgulde Dec 8, 2016
7293272
ad creation functionality
zgulde Dec 8, 2016
a20fe81
add mysql driver dependency
zgulde Dec 8, 2016
a7c1361
add migration script
zgulde Dec 6, 2016
70f7bd8
implement mysql ads dao
zgulde Dec 8, 2016
8e52d36
split project into packages
zgulde Dec 9, 2016
b4e9485
move configuration to external class
zgulde Dec 8, 2016
ed7b626
add users interface and model
zgulde Dec 9, 2016
fa01b25
plan out backend logic for user creation + login
zgulde Dec 9, 2016
0d6dd5f
working solution for user-input exercise
afonse03 Nov 19, 2021
5c6fb09
working solution for user-input exercise
afonse03 Nov 19, 2021
88bb040
working solution for user input
afonse03 Nov 20, 2021
27a1e16
working solution for user input exercise
afonse03 Nov 20, 2021
9ad7cc3
working solution
afonse03 Nov 22, 2021
b83a53d
working solution
afonse03 Nov 22, 2021
39b0dea
Merge branch 'gocodeup:instructions' into user-input
afonse03 Nov 22, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.iml
target/
.idea/
Config.java
22 changes: 22 additions & 0 deletions migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
USE adlister_db;

DROP TABLE IF EXISTS ads;
DROP TABLE IF EXISTS users;

CREATE TABLE users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(240) NOT NULL,
email VARCHAR(240) NOT NULL,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE ads (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
title VARCHAR(240) NOT NULL,
description TEXT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
);
44 changes: 44 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.codeup.adlister</groupId>
<artifactId>adlister</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.5</version>
</dependency>
</dependencies>

</project>
18 changes: 18 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.AdsIndexServlet", urlPatterns = "/ads")
public class AdsIndexServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("ads", DaoFactory.getAdsDao().all());
request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response);
}
}
17 changes: 17 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/CounterServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.codeup.adlister.controllers;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.CounterServlet", urlPatterns = "/count")
public class CounterServlet extends HttpServlet {
private int counter = 0;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
counter += 1;
response.getWriter().println("<h1>The count is " + counter + ".</h1>");
}
}
29 changes: 29 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.Ad;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.CreateAdServlet", urlPatterns = "/ads/create")
public class CreateAdServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/ads/create.jsp")
.forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
Ad ad = new Ad(
1, // for now we'll hardcode the user id
request.getParameter("title"),
request.getParameter("description")
);
DaoFactory.getAdsDao().insert(ad);
response.sendRedirect("/ads");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.codeup.adlister.controllers;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.HelloWorldServlet", urlPatterns = "/")
public class HelloWorldServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.getWriter().println("<h1>Hello, World!</h1>");
}
}
37 changes: 37 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/LoginServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.codeup.adlister.controllers;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.LoginServlet", urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getSession().getAttribute("user") != null) {
response.sendRedirect("/profile");
return;
}
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");

// TODO: find a record in your database that matches the submitted password
// TODO: make sure we find a user with that username
// TODO: check the submitted password against what you have in your database
boolean validAttempt = false;

if (validAttempt) {
// TODO: store the logged in user object in the session, instead of just the username
request.getSession().setAttribute("user", username);
response.sendRedirect("/profile");
} else {
response.sendRedirect("/login");
}
}
}
16 changes: 16 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/LogoutServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.codeup.adlister.controllers;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.LogoutServlet", urlPatterns = "/logout")
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.getSession().removeAttribute("user");
request.getSession().invalidate();
response.sendRedirect("/login");
}
}
20 changes: 20 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/RegisterServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.codeup.adlister.controllers;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "controllers.RegisterServlet", urlPatterns = "/register")
public class RegisterServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// TODO: show the registration form
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
// TODO: ensure the submitted information is valid
// TODO: create a new user based off of the submitted information
// TODO: if a user was successfully created, send them to their profile
}
}
//
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.codeup.adlister.controllers;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.ViewProfileServlet", urlPatterns = "/profile")
public class ViewProfileServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getSession().getAttribute("user") == null) {
response.sendRedirect("/login");
return;
}
request.getRequestDispatcher("/WEB-INF/profile.jsp").forward(request, response);
}
}
12 changes: 12 additions & 0 deletions src/main/java/com/codeup/adlister/dao/Ads.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.codeup.adlister.dao;

import com.codeup.adlister.models.Ad;

import java.util.List;

public interface Ads {
// get a list of all the ads
List<Ad> all();
// insert a new ad and return the new ad's id
Long insert(Ad ad);
}
13 changes: 13 additions & 0 deletions src/main/java/com/codeup/adlister/dao/DaoFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.codeup.adlister.dao;

public class DaoFactory {
private static Ads adsDao;
private static Config config = new Config();

public static Ads getAdsDao() {
if (adsDao == null) {
adsDao = new MySQLAdsDao(config);
}
return adsDao;
}
}
58 changes: 58 additions & 0 deletions src/main/java/com/codeup/adlister/dao/ListAdsDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.codeup.adlister.dao;

import com.codeup.adlister.models.Ad;

import java.util.ArrayList;
import java.util.List;

public class ListAdsDao implements Ads {
private List<Ad> ads;

public List<Ad> all() {
if (ads == null) {
ads = generateAds();
}
return ads;
}

public Long insert(Ad ad) {
// make sure we have ads
if (ads == null) {
ads = generateAds();
}
// we'll assign an "id" here based on the size of the ads list
// really the dao would handle this
ad.setId((long) ads.size());
ads.add(ad);
return ad.getId();
}

private List<Ad> generateAds() {
List<Ad> ads = new ArrayList<>();
ads.add(new Ad(
1,
1,
"playstation for sale",
"This is a slightly used playstation"
));
ads.add(new Ad(
2,
1,
"Super Nintendo",
"Get your game on with this old-school classic!"
));
ads.add(new Ad(
3,
2,
"Junior Java Developer Position",
"Minimum 7 years of experience required. You will be working in the scripting language for Java, JavaScript"
));
ads.add(new Ad(
4,
2,
"JavaScript Developer needed",
"Must have strong Java skills"
));
return ads;
}
}
Loading