Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 18e5b47

Browse files
committed
.
1 parent bd884dd commit 18e5b47

39 files changed

+1658
-0
lines changed

Lesson08/step04/build.gradle

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
apply plugin: 'java'
2+
apply plugin: 'eclipse-wtp'
3+
apply plugin: 'war'
4+
5+
compileJava.options.encoding = 'UTF-8'
6+
sourceCompatibility = 1.7
7+
version = '1.0'
8+
9+
eclipse {
10+
wtp {
11+
facet {
12+
facet name: 'jst.web', version: '3.0' // Servlet Spec Version 지정
13+
facet name: 'jst.java', version: '1.7' // Java Version 지정, 1.7 ...
14+
}
15+
}
16+
}
17+
18+
jar {
19+
manifest {
20+
attributes 'Implementation-Title': 'Gradle Quickstart',
21+
'Implementation-Version': version
22+
}
23+
}
24+
25+
repositories {
26+
mavenCentral()
27+
}
28+
29+
dependencies {
30+
compile 'org.springframework:spring-webmvc:4.0.3.RELEASE'
31+
compile 'org.mybatis:mybatis-spring:1.2.2'
32+
compile 'org.springframework:spring-jdbc:4.0.3.RELEASE'
33+
providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
34+
compile 'jstl:jstl:1.2'
35+
compile 'org.reflections:reflections:0.9.9-RC1'
36+
compile 'log4j:log4j:1.2.17'
37+
compile 'mysql:mysql-connector-java:5.1.30'
38+
compile 'org.mybatis:mybatis:3.2.6'
39+
compile 'org.springframework:spring-context:4.0.3.RELEASE'
40+
compile group: 'commons-collections',
41+
name: 'commons-collections',
42+
version: '3.2'
43+
testCompile group: 'junit',
44+
name: 'junit',
45+
version: '4.+'
46+
}
47+
48+
test {
49+
systemProperties 'property': 'value'
50+
}
51+
52+
uploadArchives {
53+
repositories {
54+
flatDir {
55+
dirs 'repos'
56+
}
57+
}
58+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package spms.bind;
2+
3+
public interface DataBinding {
4+
Object[] getDataBinders();
5+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package spms.bind;
2+
3+
import java.lang.reflect.Method;
4+
import java.util.Date;
5+
import java.util.Set;
6+
7+
import javax.servlet.ServletRequest;
8+
9+
public class ServletRequestDataBinder {
10+
public static Object bind(
11+
ServletRequest request, Class<?> dataType, String dataName)
12+
throws Exception {
13+
if (isPrimitiveType(dataType)) {
14+
return createValueObject(dataType, request.getParameter(dataName));
15+
}
16+
17+
Set<String> paramNames = request.getParameterMap().keySet();
18+
Object dataObject = dataType.newInstance();
19+
Method m = null;
20+
21+
for (String paramName : paramNames) {
22+
m = findSetter(dataType, paramName);
23+
if (m != null) {
24+
m.invoke(dataObject, createValueObject(m.getParameterTypes()[0],
25+
request.getParameter(paramName)));
26+
}
27+
}
28+
return dataObject;
29+
}
30+
31+
private static boolean isPrimitiveType(Class<?> type) {
32+
if (type.getName().equals("int") || type == Integer.class ||
33+
type.getName().equals("long") || type == Long.class ||
34+
type.getName().equals("float") || type == Float.class ||
35+
type.getName().equals("double") || type == Double.class ||
36+
type.getName().equals("boolean") || type == Boolean.class ||
37+
type == Date.class || type == String.class) {
38+
return true;
39+
}
40+
return false;
41+
}
42+
43+
private static Object createValueObject(Class<?> type, String value) {
44+
if (type.getName().equals("int") || type == Integer.class) {
45+
return new Integer(value);
46+
} else if (type.getName().equals("float") || type == Float.class) {
47+
return new Float(value);
48+
} else if (type.getName().equals("double") || type == Double.class) {
49+
return new Double(value);
50+
} else if (type.getName().equals("long") || type == Long.class) {
51+
return new Long(value);
52+
} else if (type.getName().equals("boolean") || type == Boolean.class) {
53+
return new Boolean(value);
54+
} else if (type == Date.class) {
55+
return java.sql.Date.valueOf(value);
56+
} else {
57+
return value;
58+
}
59+
}
60+
61+
private static Method findSetter(Class<?> type, String name) {
62+
Method[] methods = type.getMethods();
63+
64+
String propName = null;
65+
for (Method m : methods) {
66+
if (!m.getName().startsWith("set")) continue;
67+
68+
propName = m.getName().substring(3);
69+
if (propName.toLowerCase().equals(name.toLowerCase())) {
70+
return m;
71+
}
72+
}
73+
return null;
74+
}
75+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package spms.controls;
2+
3+
import java.util.Map;
4+
5+
public interface Controller {
6+
String execute(Map<String, Object> model) throws Exception;
7+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package spms.controls;
2+
3+
import java.util.Map;
4+
5+
import javax.servlet.http.HttpSession;
6+
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.stereotype.Component;
9+
10+
import spms.bind.DataBinding;
11+
import spms.dao.MemberDao;
12+
import spms.vo.Member;
13+
14+
// 스프링 애노테이션(@Component)으로 변경
15+
@Component("/auth/login.do")
16+
public class LogInController implements Controller, DataBinding {
17+
MemberDao memberDao;
18+
19+
@Autowired
20+
public LogInController setMemberDao(MemberDao memberDao) {
21+
this.memberDao = memberDao;
22+
return this;
23+
}
24+
25+
public Object[] getDataBinders() {
26+
return new Object[]{
27+
"loginInfo", spms.vo.Member.class
28+
};
29+
}
30+
31+
@Override
32+
public String execute(Map<String, Object> model) throws Exception {
33+
Member loginInfo = (Member)model.get("loginInfo");
34+
35+
if (loginInfo.getEmail() == null) { // 입력폼을 요청할 때
36+
return "/auth/LogInForm.jsp";
37+
38+
} else { // 회원 등록을 요청할 때
39+
Member member = memberDao.exist(
40+
loginInfo.getEmail(),
41+
loginInfo.getPassword());
42+
43+
if (member != null) {
44+
HttpSession session = (HttpSession)model.get("session");
45+
session.setAttribute("member", member);
46+
return "redirect:../member/list.do";
47+
} else {
48+
return "/auth/LogInFail.jsp";
49+
}
50+
}
51+
}
52+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package spms.controls;
2+
3+
import java.util.Map;
4+
5+
import javax.servlet.http.HttpSession;
6+
7+
import org.springframework.stereotype.Component;
8+
9+
//스프링 애노테이션(@Component)으로 변경
10+
@Component("/auth/logout.do")
11+
public class LogOutController implements Controller {
12+
@Override
13+
public String execute(Map<String, Object> model) throws Exception {
14+
HttpSession session = (HttpSession)model.get("session");
15+
session.invalidate();
16+
17+
return "redirect:login.do";
18+
}
19+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package spms.controls;
2+
3+
import java.util.Map;
4+
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Component;
7+
8+
import spms.bind.DataBinding;
9+
import spms.dao.MemberDao;
10+
import spms.vo.Member;
11+
12+
//스프링 애노테이션(@Component)으로 변경
13+
@Component("/member/add.do")
14+
public class MemberAddController implements Controller, DataBinding {
15+
MemberDao memberDao;
16+
17+
@Autowired
18+
public MemberAddController setMemberDao(MemberDao memberDao) {
19+
this.memberDao = memberDao;
20+
return this;
21+
}
22+
23+
public Object[] getDataBinders() {
24+
return new Object[]{
25+
"member", spms.vo.Member.class
26+
};
27+
}
28+
29+
@Override
30+
public String execute(Map<String, Object> model) throws Exception {
31+
Member member = (Member)model.get("member");
32+
if (member.getEmail() == null) { // 입력폼을 요청할 때
33+
return "/member/MemberForm.jsp";
34+
} else { // 회원 등록을 요청할 때
35+
memberDao.insert(member);
36+
return "redirect:list.do";
37+
}
38+
}
39+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package spms.controls;
2+
3+
import java.util.Map;
4+
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Component;
7+
8+
import spms.bind.DataBinding;
9+
import spms.dao.MemberDao;
10+
11+
//스프링 애노테이션(@Component)으로 변경
12+
@Component("/member/delete.do")
13+
public class MemberDeleteController implements Controller, DataBinding {
14+
MemberDao memberDao;
15+
16+
@Autowired
17+
public MemberDeleteController setMemberDao(MemberDao memberDao) {
18+
this.memberDao = memberDao;
19+
return this;
20+
}
21+
22+
public Object[] getDataBinders() {
23+
return new Object[]{
24+
"no", Integer.class
25+
};
26+
}
27+
28+
@Override
29+
public String execute(Map<String, Object> model) throws Exception {
30+
Integer no = (Integer)model.get("no");
31+
memberDao.delete(no);
32+
33+
return "redirect:list.do";
34+
}
35+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package spms.controls;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Component;
8+
9+
import spms.bind.DataBinding;
10+
import spms.dao.MemberDao;
11+
12+
//스프링 애노테이션(@Component)으로 변경
13+
@Component("/member/list.do")
14+
public class MemberListController implements Controller, DataBinding {
15+
MemberDao memberDao;
16+
17+
@Autowired
18+
public MemberListController setMemberDao(MemberDao memberDao) {
19+
this.memberDao = memberDao;
20+
return this;
21+
}
22+
23+
public Object[] getDataBinders() {
24+
return new Object[]{
25+
"orderCond", String.class
26+
};
27+
}
28+
29+
@Override
30+
public String execute(Map<String, Object> model) throws Exception {
31+
HashMap<String,Object> paramMap = new HashMap<String,Object>();
32+
paramMap.put("orderCond", model.get("orderCond"));
33+
34+
model.put("members", memberDao.selectList(paramMap));
35+
return "/member/MemberList.jsp";
36+
}
37+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package spms.controls;
2+
3+
import java.util.Map;
4+
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Component;
7+
8+
import spms.bind.DataBinding;
9+
import spms.dao.MemberDao;
10+
import spms.vo.Member;
11+
12+
//스프링 애노테이션(@Component)으로 변경
13+
@Component("/member/update.do")
14+
public class MemberUpdateController implements Controller, DataBinding {
15+
MemberDao memberDao;
16+
17+
@Autowired
18+
public MemberUpdateController setMemberDao(MemberDao memberDao) {
19+
this.memberDao = memberDao;
20+
return this;
21+
}
22+
23+
public Object[] getDataBinders() {
24+
return new Object[]{
25+
"no", Integer.class,
26+
"member", spms.vo.Member.class
27+
};
28+
}
29+
30+
@Override
31+
public String execute(Map<String, Object> model) throws Exception {
32+
Member member = (Member)model.get("member");
33+
34+
if (member.getEmail() == null) {
35+
Integer no = (Integer)model.get("no");
36+
Member detailInfo = memberDao.selectOne(no);
37+
model.put("member", detailInfo);
38+
return "/member/MemberUpdateForm.jsp";
39+
40+
} else {
41+
memberDao.update(member);
42+
return "redirect:list.do";
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)