Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
d30bf82
실습 시작을 위한 소스
javajigi Dec 8, 2015
b41eb45
filter url 경로 추가함.
javajigi Dec 8, 2015
746305d
freemarker로 회원가입 기능 구현 완료함.
javajigi Dec 15, 2015
f258e68
회원가입 단계까지 구현 완료함.
javajigi Jan 12, 2016
7a09cde
회원가입, 개인정보 수정까지 구현 완료함.
javajigi Jan 12, 2016
23ae3ae
기본적인 사용자 관리와 관련한 모든 기능 구현 완료함.
javajigi Jan 12, 2016
0cbd8b4
DB를 기반으로하는 사용자 관리 기능 구현 완료함.
javajigi Jan 12, 2016
aa7a826
ajax 실습을 위한 기반 작업 완료함.
javajigi Jan 12, 2016
bda3271
jsp 파일을 user/qna 디렉토리로 구분함.
javajigi Jan 13, 2016
bb8b787
javascript 처리를 위해 footer를 추가함.
javajigi Jan 13, 2016
6e2c866
jquery를 활용해 답변 추가 기능 구현 완료함.
javajigi Jan 13, 2016
35f41fc
답변 부분의 html 수정함.
javajigi Jan 13, 2016
654b0fb
ajax로 답변 추가, 삭제 기능 구현 완료함.
javajigi Jan 13, 2016
8b9b662
필요없는 코드 제거함.
javajigi Jan 28, 2016
accbf88
source code 다운로드 설정 추가함.
javajigi Jan 28, 2016
299852f
Merge branch 'step3-qna-getting-started' into step4-qna-answer-with-ajax
javajigi Jan 28, 2016
ce1313f
web.xml이 존재하지 않아도 package 가능하도록 수정함.
javajigi Jan 28, 2016
9088e69
Merge branch 'step3-qna-getting-started' into step4-qna-answer-with-ajax
javajigi Jan 28, 2016
1678e44
변수명이 data로 되어 있는 부분을 json으로 변경함.
javajigi Jan 29, 2016
bb29d8a
새로운 html 적용함
javajigi Feb 4, 2016
6355572
ajax로 댓글 추가가 가능하도록 구현함.
javajigi Feb 4, 2016
df105e3
ajax로 답변을 추가하는 기능 완료
javajigi Feb 4, 2016
b001661
ajax로 답변 추가, 삭제 기능 구현 완료함.
javajigi Feb 4, 2016
e857163
보안 추가된 새로운 Controller 적용함.
javajigi Feb 27, 2016
b132e31
JdbcTemplate 적용함.
javajigi Feb 29, 2016
27b21be
generatedKeys() 메소드를 통해 auto increment id 조회하도록 수정함.
javajigi Feb 29, 2016
58591ac
MVC 프레임워크 기반으로 다시 구현함.
javajigi Mar 4, 2016
63a7a9a
dbcp 버전 업그레이드 및 라이브러리 추가
javajigi Mar 24, 2016
f5b1d76
cherry pick을 진행하는 파일 추가함.
javajigi Mar 24, 2016
9bf13d5
src/main/java에 있던 WebServerLauncher를 src/test/java로 이동함.
javajigi Jul 12, 2016
0e21c6b
url-patterns에 /만 사용하도록 수정하고, index.jsp => home.jsp로 변경함.
javajigi Jul 15, 2016
369bf1a
모든 소스 코드가 tab을 사용하지 않고 space를 사용하도록 수정함.
javajigi Jul 18, 2016
abb28c1
데이터베이스를 활용한 웹페이지 구축.
Dec 7, 2018
383cc72
업데이트
Dec 18, 2018
decf7e7
효제
Dec 18, 2018
b8a1774
민영 - 삭제 완료
Dec 19, 2018
d354ee6
Final_Project 1451004 김민
Dec 21, 2018
3f91092
Final_Project 1451004 김민영!
Dec 21, 2018
e0732bd
Final_project
Dec 21, 2018
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
/target/
/.classpath
/.project
/jwp-basic.iml
/.idea/
/tomcat.8080/
2 changes: 0 additions & 2 deletions README.md

This file was deleted.

64 changes: 32 additions & 32 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<org.springframework.version>3.2.9.RELEASE</org.springframework.version>
<org.springframework.version>4.2.5.RELEASE</org.springframework.version>
<tomcat.version>8.0.15</tomcat.version>
</properties>

Expand All @@ -24,12 +24,24 @@
</dependency>

<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
Expand All @@ -41,9 +53,9 @@
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
Expand All @@ -56,24 +68,26 @@
<version>${org.springframework.version}</version>
</dependency>

<!-- logger -->
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>

<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.4</version>
</dependency>


<!-- tomcat -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
Expand All @@ -92,24 +106,6 @@
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
Expand All @@ -131,11 +127,15 @@
<version>2.4</version>
<configuration>
<warSourceDirectory>webapp</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<downloadSources>true</downloadSources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
28 changes: 28 additions & 0 deletions src/main/java/core/db/DataBase.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package core.db;

import java.util.Collection;
import java.util.Map;

import com.google.common.collect.Maps;

import next.model.User;

public class DataBase {
private static Map<String, User> users = Maps.newHashMap();

static {
users.put("admin", new User("admin", "password", "자바지기", "admin@slipp.net"));
}

public static void addUser(User user) {
users.put(user.getUserId(), user);
}

public static User findUserById(String userId) {
return users.get(userId);
}

public static Collection<User> findAll() {
return users.values();
}
}
44 changes: 22 additions & 22 deletions src/main/java/core/jdbc/ConnectionManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,28 @@

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSource;

public class ConnectionManager {
private static final String DB_DRIVER = "org.h2.Driver";
private static final String DB_URL = "jdbc:h2:~/jwp-basic;AUTO_SERVER=TRUE";
private static final String DB_USERNAME = "sa";
private static final String DB_PW = "";
public static DataSource getDataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(DB_DRIVER);
ds.setUrl(DB_URL);
ds.setUsername(DB_USERNAME);
ds.setPassword(DB_PW);
return ds;
}
public static Connection getConnection() {
try {
return getDataSource().getConnection();
} catch (SQLException e) {
throw new IllegalStateException(e);
}
}
private static final String DB_DRIVER = "org.h2.Driver";
private static final String DB_URL = "jdbc:h2:~/jwp-basic;AUTO_SERVER=TRUE";
private static final String DB_USERNAME = "sa";
private static final String DB_PW = "";

public static DataSource getDataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(DB_DRIVER);
ds.setUrl(DB_URL);
ds.setUsername(DB_USERNAME);
ds.setPassword(DB_PW);
return ds;
}

public static Connection getConnection() {
try {
return getDataSource().getConnection();
} catch (SQLException e) {
throw new IllegalStateException(e);
}
}
}
24 changes: 24 additions & 0 deletions src/main/java/core/jdbc/DateAccessException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package core.jdbc;

public class DateAccessException extends RuntimeException {

private static final long serialVersionUID = 1L;

public DateAccessException() {
super();
}

public DateAccessException(String message,Throwable cause,boolean enableSuppression,boolean writeableStackTrace) {
super(message,cause,enableSuppression,writeableStackTrace);
}

public DateAccessException(String message,Throwable cause) {
super(message,cause);
}
public DateAccessException(String message) {
super(message);
}
public DateAccessException(Throwable cause) {
super(cause);
}
}
102 changes: 102 additions & 0 deletions src/main/java/core/jdbc/JdbcTemplate.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package core.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.jdbc.core.PreparedStatementCreator;

public class JdbcTemplate {



public void update(String sql,PreparedStatementSetter pss) throws DateAccessException {

try(Connection con = ConnectionManager.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
) {

pss.setParameters(pstmt);
pstmt.executeUpdate();

} catch (SQLException e) {
throw new DateAccessException(e);
}
}
public void update(PreparedStatementCreator psc,KeyHolder holder) throws DateAccessException {

try(Connection con = ConnectionManager.getConnection()) {

PreparedStatement pstmt = psc.createPreparedStatement(con);
pstmt.executeUpdate();

ResultSet rs=pstmt.getGeneratedKeys();
if(rs.next()) {
holder.setId(rs.getLong(1));
}
rs.close();
} catch (SQLException e) {
throw new DateAccessException(e);
}
}

public void update(String sql,Object... parameters)throws DateAccessException {

update(sql,createPreparedStatementSetter(parameters));
}

public <T> List<T> query(String sql,PreparedStatementSetter pss,RowMapper<T> rm) throws DateAccessException{
ResultSet rs = null;
try(Connection con= ConnectionManager.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql)){

pss.setParameters(pstmt);

rs = pstmt.executeQuery();

List<T> result = new ArrayList<T>();
while(rs.next()){
result.add(rm.mapRow(rs));
}

return result;
} catch (SQLException e) {
throw new DateAccessException(e);
}finally {
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
throw new DateAccessException(e);
}
}
}
}
public <T> List<T> query(String sql,RowMapper<T> rm,Object... parameters) throws DateAccessException{
return query(sql,createPreparedStatementSetter(parameters),rm);
}

public <T> T queryForObject(String sql,PreparedStatementSetter pss,RowMapper<T> rm) throws DateAccessException{
List<T> result = query(sql,pss,rm);
if(result.isEmpty()) {
return null;
}else {
return result.get(0);
}
}
public <T> T queryForObject(String sql,RowMapper<T> rm,Object... parameters) throws DateAccessException{
return queryForObject(sql,createPreparedStatementSetter(parameters),rm);
}
private PreparedStatementSetter createPreparedStatementSetter(Object...parameters) {
return new PreparedStatementSetter() {
public void setParameters(PreparedStatement pstmt)throws SQLException{
for(int i=0;i<parameters.length;i++) {
pstmt.setObject(i+1,parameters[i]);
}
}
};
}
}
11 changes: 11 additions & 0 deletions src/main/java/core/jdbc/KeyHolder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package core.jdbc;

public class KeyHolder {
private long id;
public void setId(long id) {
this.id =id;
}
public long getId() {
return id;
}
}
8 changes: 8 additions & 0 deletions src/main/java/core/jdbc/PreparedStatementSetter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package core.jdbc;

import java.sql.PreparedStatement;
import java.sql.SQLException;

public interface PreparedStatementSetter {
void setParameters(PreparedStatement pstmt)throws SQLException;
}
9 changes: 9 additions & 0 deletions src/main/java/core/jdbc/RowMapper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package core.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;

@FunctionalInterface
public interface RowMapper<T> {
T mapRow(ResultSet rs)throws SQLException;
}
8 changes: 8 additions & 0 deletions src/main/java/core/mvc/Controller.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package core.mvc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface Controller {
String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception;
}
Loading