Java Bark set Age age Move get Age
Java Bark() set. Age () age Move() get. Age ()
Login. Form
Login. Form
회원인증 <BODY> <center><font size='3'><b> 회원 인증 </b></font> <hr size='1' noshade width='600' > <TABLE cell. Spacing='0' cell. Padding='30' align='center' border='0' > <% String id = request. get. Parameter("txt. ID"); //전송된 파라메터 id String pass = request. get. Parameter("pass"); // 전송된 파라메터 pass String session. ID = "yes"; try{ //세션변수 생성 //데이터베이스 관련 작업 if (id == "" || pass == "") { //id 나 password 가 없을 때 %> <TR> <TD align='center'> <font size=2>ID와 비밀번호를 입력하세요. </font> </TD> </TR> <TD align='center'> <a href="member. jsp">[로그인]</a> </TD> </TR> <% }
회원인증 else { String str. SQL = "SELECT * FROM member_tbl where id='" + id + "'"; Class. for. Name(" ("oracle. jdbc. driver. Oracle. Driver"); ojdbc 14. jar //ORACLE 드라이버 로드 Connection conn = Driver. Manager. get. Connection("jdbc: oracle: thin: @168. 126. 146. 33: 1521: orcl", "jjin pang"); Statement stmt = conn. create. Statement(); Result. Set rs = stmt. execute. Query(str. SQL); rs. next(); String logid = rs. get. String("id"); //DB id String logpass = rs. get. String("pass"); //DB pass if (!id. equals(logid)) { %> <TR><TD align="center"> <font size='2'>회원 ID가 아닙니다. </font> </TD> </TR> <TR><TD align="center"> <a href="member. html">[로그인]</a> </TD> </TR> <%
회원인증 else if (!pass. equals(logpass)) { //id 가 일치하고 패스워드가 일치하지 않으면 %> <TR> <TD align='center'> <font size=2>비밀번호가 일치하지 않습니다. </font> </TD></TR> <TD align='center'> <a href="member. html">[로그인]</a> </TD></TR> <% } else { //id 와 pass 가 일치하는 인증된 회원이면 session. set. Attribute("user", session. ID); // 세션 변수 user에 yes 를 저장 response. send. Redirect("member_page. jsp"); // 회원 전용 페이지로 이동 } } //end of if } //end of try catch(Exception e) { %> <TR> <TD align="center"> <font size='2'>회원 ID가 아닙니다. </font> </TD> </TR> <TD align="center"> <a href="member. html">[로그인]</a> </TD> </TR> <% } %> </TABLE> </BODY> </HTML>
MVC 모델 JSP간 복잡한 이동 http 요청 http 응답 JSP JSP HTML+Ja va http 요청 http 응답 JSP JSP db JSP Java JSP Bean JSP서 DB 직접 접근 db MVC 모델 1 Bean에서 DB 접근
MVC 모델 JSP간 복잡한 이동 http 요청 http 응답 JSP JSP HTML+Ja va http 요청 http 응답 JSP JSP db JSP서 DB 직접 접근 db JSP Java JSP Bean MVC 모델 1 일관된 응답요청관리 http 요청 Servlet JSP (Controlle r) http 응답 MVC 모델 2 JSP JSP (View) Bean JSP (Model ) db
JSP에서 Javabean의 인스턴스 생성 규칙 JSP 에서 bean을 이용하기 위해서는 <jsp: use. Bean>, <jsp: set. Property>, <jsp: get. Property> 액션 태그를 활용해야 한다. <jsp: use. Bean id="name”class="package. Class” scope=“page" /> <jsp: use. Bean id="ti”class="com. Tiger”scope=page" /> com. Tiger ti = new com. Tiger(); <jsp: get. Property name=“name” property= “property”> <jsp: get. Property name=“ti” property=“age”> ti. get. Age(); <jsp: set. Property name=”name. Class”property=”name” value=”John” /> <jsp: set. Property name="ti”property= “age” value=3 /> ti. set. Age(3); http 요청 http 응답 JSP JSP Java JSP Bean db MVC 모델 1
Jsp에서 Java bean의 활용 연습(액션태그) <%@ page language="java" content. Type="text/html; charset=utf-8“ page. Encoding="utf-8 "%> <jsp: use. Bean id="my. Bean" class="com. Hello" scope="page" ></jsp: use. Bean> <jsp: set. Property name="my. Bean" property="message" value="My First Java. Bean!!!" /> <!DOCTYPE html PUBLIC "-//W 3 C//DTD HTML 4. 01 Transitional//EN" "http: //www. w 3. org/TR/html 4/loose. dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 액션태그를 이용한 get. Message() 메서드 사 <title>Insert title here</title> </head> 용 my. Bean. get. Message(); <body> Bean 연습: ==> <jsp: get. Property name="my. Bean" property="message" / > <hr width="350 px" align="left" /> <br/> 클래스의 인스턴스에서 메서드를 직접 사용 <hr width="300 px" align="left" /> <% my. Bean. set. Message("메서드에 직접데이터 저장!!!!"); %> 두번째 Bean ==> <%= my. Bean. get. Message() %> <hr width="350 px" align="left" /> </body> </html> 인스턴스를 이용한 메서드 직접사용
Jsp에서 Java bean의 활용 연습(import 활용) <%@ page language="java" content. Type="text/html; charset=utf-8" page. Encoding="utf- 8"%> <%@ page import="com. Hello" %> Jsp에서 Import 선 언 <!DOCTYPE html PUBLIC "-//W 3 C//DTD HTML 4. 01 Transitional//EN" "http: //www. w 3. org/TR/html 4/loose. dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> 생성자 직접 호출 인스턴스 직접 생성 <body> <% com. Hello my. Bean = new com. Hello(); my. Bean. set. Message("import My First Java. Bean!!!"); String me = my. Bean. get. Message(); %> import Bean ==> <%= me %> or <%= my. Bean. get. Message() %>
Jsp에서 Java bean의 활용 연습(import 활용) <%@ page language="java" content. Type="text/html; charset=utf-8" page. Encoding="utf- 8"%> <%@ page import="com. Hello" %> Jsp에서 Import 선 언 <!DOCTYPE html PUBLIC "-//W 3 C//DTD HTML 4. 01 Transitional//EN" "http: //www. w 3. org/TR/html 4/loose. dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> 생성자 직접 호출 인스턴스 직접 생성 <body> <% com. Hello he = new com. Hello(); he. set. Message("import 자바 클래스 인스턴스 선언에 의한 메시지 설정 "); String me = he. get. Message(); %> import Bean ==> <%= me %>
Java Bean을 이용한 회원관리 JSP간 복잡한 이동 http 요청 http 응답 JSP JSP HTML+Ja va db JSP서 DB 직접 접근 logform. ht ml • DB 연동 부분(Model): bean • 화면 부분(View) : JSP Member. Dao. jav a http 요청 http 응답 JSP JSP Java JSP Bean db MVC 모델 1 Bean에서 DB 접근
자바 빈을 활용한 회원인증 JSP 작성 http 요청 http 응답 logform. htm l logform 2. ht ml (로그인) Member_ok. js p member_ok_Bean. jsp member_ok_java. jsp db Member. Dao. jav a user. Ok(id, pass) db 메서드 추가 복사 및 링크 수정 member_page. jsp 생성
생성자와 conection 객체 생성 메서드 member_Dao. java package member; Member. Dao import java. sql. *; public class Member. Dao { 블록 > CTRL+SHIFT + O private static Member. Dao instance = null ; // Singleton 패턴을 이용한 인스턴스 생성과 get public static Member. Dao get. Instance(){ get. Connection() user. Ok() check. ID() insert. Member() get. IDSearch() … if (instance == null) instance = new Member. Dao(); return instance; } public Member. Dao() { } private static Connection get. Connection() throws Exception{ Connection con = null; Class. for. Name("oracle. jdbc. driver. Oracle. Driver"); con =Driver. Manager. get. Connection("jdbc: oracle: thin: @168. 126. 146. 33: 1521: orcl", "학번", "비번"); return con; } … } 조회, 검색, 추가, 삭제, 수정 관련 메서드 입력
로그인 메서드 Member. Dao. java-user. Ok() public static int user. Ok(String me_id, String me_pass) throws Exception {
use. Bean을 이용한 회원인증 member_ok_Bean. jsp //클래스의 객체를 생성 Member. Dao get. Connection( ) user. Ok() id= <%= id %> //System. out. prinln( “id=“+id) … alert(’<%= id %>는 정상입 니다 ’); id, pass userok x
import를 이용한 회원인증 - member_ok_Java. jsp Webcontents>New>JSP file> member_ok_Java. jsp 입력 member_ok_Java. jsp
Spring framework 3. 2. 8
Spring framework 4. 0 – p. 19
의존관계 연습 l DB 테이블 구성 l Dependency Dynamic Web Project 구성 l ojdbc 6. jar 복사 l spring package 생성
데이터 전달객체(DTO: Data Transper Object ) 구성
초난감 DAO(Data Access Object) – Dependency project 생성 main() 포함 package spring; User. Dao public class User. Dao { public void add(User user) throws Exception { Class. for. Name("oracle. jdbc. driver. Oracle. Driver"); add() get() main() Connection conn = Driver. Manager. get. Connection( "jdbc: oracle: thin: @168. 126. 146. 45: 1521: orcl", "jjinpang"); Prepared. Statement pstmt= conn. prepare. Statement( "insert into users(id, name, password) values(? , ? )"); pstmt. set. String(1, user. get. Id()); pstmt. set. String(2, user. get. Name()); pstmt. set. String(3, user. get. Password()); pstmt. execute. Update(); pstmt. close(); conn. close(); }
초난감 DAO(Data Access Object) 구성 public User get(String id) throws Exception { Class. for. Name("oracle. jdbc. driver. Oracle. Driver"); Connection conn = Driver. Manager. get. Connection( "jdbc: oracle: thin: @168. 126. 146. 45: 1521: orcl", "jjinpang"); User. Dao add() get() main() Prepared. Statement pstmt= conn. prepare. Statement("select * from users where id=? "); pstmt. set. String(1, id); Result. Set rs = pstmt. execute. Query(); rs. next(); User user = new User(); user. set. Id(rs. get. String("id")); user. set. Name(rs. get. String("name")); user. set. Password(rs. get. String("password")); rs. close(); pstmt. close(); conn. close(); return user; }
초난감 DAO(Data Access Object) 구성 public static void main(String[] args) throws Exception { User. Dao dao =new User. Dao(); User user =new User(); user. set. Id("kim"); user. set. Name("김한석"); user. set. Password("1234"); dao. add(user); System. out. println(user. get. Id()+": 등록성공"); User user 2=dao. get(user. get. Id()); System. out. println(user 2. get. Name()); System. out. println(user 2. get. Password()+": 조회성공"); } User. Dao add() get() main()
get. Connection 메소드를 별도의 클래스로 분리 1. spring 4 package 생성 2. spring 2 파일 복사 3. Simple. Connection 클래스 생 성 User. Dao add() get. Connectio n() main() User. Dao simple. Connecti on add() get() main() Simple. Connectio n get. Connection()
User. Dao 변경 User. Dao simple. Connecti on add() get() main() Simple. Connectio n get. Connection() 지역변수와 전역변수 Simple. Connection simple. Connection = new Simple. Connection(); 나머지 코드는 그대로 …
의존관계의 약화 별도의 클래스로 분리했으나 User. Dao에서 별도의 클래스명과 메소드명을 알아야 하므로 User. Dao 소스코드를 제공해야 함 Simple. Connection simple. Connection = new Simple. Connection(); Connection conn = simple. Connection. get. Connection(); 인터페이스 도입 : 의존관계의 약화 User. Dao parent Connection get. Connection() interface Parent. Connection get. Connection() add() get() OChild. Connection get. Connection() Simple. Connectio n MChild. Connection get. Connection()
관계설정 책임의 분리 l User. Dao가 인터페이스 뿐만 아니라 구현 클래스까지 알아야 한다. Parent. Connection parent. Connection = new OChild. Connection(); Connection conn = parent. Connection. get. Connection(); User. Dao Parent. Connectio n add() get() main() interface Parent. Connection get. Connection() OChild. Connection get. Connection() MChild. Connection get. Connection() l User. Dao가 OChild. Connection 구현 클래스까지 알아야 하기 때문 l User. Dao는 Parent. Connection 인터페이스 외에 는 어떤 클래스와도 관 계를 설정하지 않아야 한다.
관계설정 책임의 분리 User. Dao 클래스의 main() 메소드가 User. Dao를 사용하는 클라이언트 역 할 클라이언트 클래스를 분리하고 여기서 User. Dao와 Child. Connection 클래 스와의 관계를 설정하는 기능 구현 User. Dao. Test main() 생성/제공 사용 User. Dao parent. Connecti o User. Dao() add() get() <<생성>> User. Dao Parent. Connection add() get() main() 사용 interface Parent. Connection OChild. Connection() OChild. Connection MChild. Connection get. Connection() interface Parent. Connection get. Connection() OChild. Connection get. Connection() MChild. Connection get. Connection()
Dependency 정리 Spring 2 Spring User. Dao add() get. Connecti on main() add() get() main() Spring 4 Simple. Connectio n User. Dao simple. Connecti on get. Connection() add() get() main() Spring 5 Spring 6 User. Dao main() { new user. Dao(con ) parent. Connecti on } User. Dao 사용 parent. Connecti o user. Dao(p. Co n) add() get() <<생성>> 사용 User. Dao interface Parent. Connection get. Connection() OChild. Connectio n get. Connection() parent. Connecti on add() get() main() interface Parent. Connection get. Connection() OChild. Connection get. Connection()
Dependency 정리 User. Dao main() { new user. Dao(con ) parent. Connecti on } User. Dao 사용 parent. Connecti Spring 6 사용 o user. Dao(p. Co n) add() get() interface Parent. Connection get. Connection() OChild. Connectio n <<생성>> get. Connection() Spring 7 User. Dao. Test 사용 User. Dao dao = new Dao. Factory(). user. Dao(); Parent. Connection interface Parent. Connection 사용 get. Connection() User. Dao() add() get() OChild. Connectionr 생성 요청 Dao. Fatory user. Dao( ){ return User. Dao(new OChild. Connection()); } 생성 get. Connection()
Error message
의존관계 연습 프로젝트 생성 1. File > new > Dynamic Web Project 2. Project name : Hello. App 입력
전체 project 구성
의존성 관계 예제 1. sample 1 package에 Message. Bean 클래스 생성 2. Hello. App 클래스 생성-main() 포함 public class Message. Bean { public void say. Hello(String name) { System. out. println("Hello, " + name + "!"); } } Hello. App package sample 1; + main(String[] args) + say. Hello(mane: String) public class Hello. App { public static void main(String[] args) { Message. Bean bean = new Message. Bean(); bean. say. Hello("Spring"); } } Message. Bean
의존성 관계 약화(인터페이스 사용) Hello. App + main(String[] args) interface Message. Bean + say. Hello(mane: String) Message. Beankr + say. Hello(mane: String) Message. Beanen + say. Hello(mane: String )
의존성 관계 약화- Hello. App : sample 2 1. sample 2 package에 Message. Bean interface 생 성 2. Message. Bean을 구현한 Message. Bean. En 클래스 생 성 3. Message. Bean을 구현한 Message. Bean. Kr 클래스 생 성
Spring에 의한 구현 Hello. App : sample 3 Srping 설정파일 beans. xml Hello. App + main(String[] args) Spring framework 어떤 구현 객체를 사용할지 XML 파일에서 결정하도록 Spring Framework 사용 interface Message. Bean + say. Hello(mane: String) Message. Beankr + say. Hello(mane: String) Message. Beanen + say. Hello(mane: String )
Spring MVC의 환경 구성 1. http: //repo. springsource. org/release/org/springframework/spring/ 에서 Spring Framework의 다운로드 2. 압축을 풀고 lib 폴더를 프로젝트 lib 폴더에 import 3. 기타 의존관계에 있는 필요한 library 파일 import
Spring MVC 프로젝트 생성 Web project를 Spring Project로 전환 1. 오른쪽 클릭>Spring Tools > Add Spring Project Nature
beans. xml 1. Web. Content 오른쪽 클릭> new > other > XML file <? xml version="1. 0" encoding="UTF-8" ? > <beans xmlns="http: //www. springframework. org/schema/beans" xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance" xsi: schema. Location="http: //www. springframework. org/schema/b eans http: //www. springframework. org/schema/beans/spring-beans 3. 0. xsd"> <bean id="message. Bean" class="sample 3. Message. Bean. En" /> </beans> 2. 실제 사용될 child 객체 생성
스프링을 이용한 구현 package sample 3; 1. Web. Content 오른쪽 클릭> new > other > XML file import org. springframework. beans. factory. Bean. Factory; import org. springframework. beans. factory. xml. Xml. Bean. Factory; import org. springframework. core. io. File. System. Resource; public class Hello. App { public static void main(String[] args) { Bean. Factory factory = new Xml. Bean. Factory(new File. System. Resource("beans. xml")); Message. Bean bean = factory. get. Bean("message. Bean", Message. Bean. class); bean. say. Hello("Spring"); Message. Bean bean = new Message. Bean. En(); } } * Beans. xml 파일에서 사용할 객체를 결정한다. –제 어의 역전 (Io. C) * 객체 변경 후 실행
Application. Context를 이용한 Io. C sample 4 1. sample 4 package 생성 2. 3. 4. 5. 6. sample 3 파일 복사 bean. xml src 에 복사 Spring library 설정 확인 main() 변경 –실행 bean. xml 변경 실행
Application. Context를 이용한 Io. C spring 8 1. spring 8 package 생성 2. Spring 7 파일 복사 3. Dao. Factory 클래스 @Bean 삽입 4. Spring library 설정 5. User. Dao. Test 변경
Application Context를 이용한 Io. C 1. spring 8 package 생성 2. Spring 7 파일 복사 3. Dao. Factory 클래스 @Bean 삽입 4. Spring library 설정 5. User. Dao. Test 변경
Application. Context. xml을 이용한 Io. C – spring 9 1. spring 9 package 생성 2. Spring 8 파일 복사 3. Dao. Factory 클래스 dao. Bean. xml 로 변경 4. User. Dao. Test 변경 dao. Bean 9. xml 생성자 이용
Application. Context. xml을 이용한 Io. C – spring 9 1. spring 9 package 생성 2. Spring 8 파일 복사 3. Dao. Factory 클래스 dao. Bean. xml 로 변경 4. User. Dao. Test 변경 dao. Bean 9. xml 생성자 이용
Application. Context. xml을 이용한 Io. C – spring 9
Set프로퍼티를 이용한 의존관계주입(DI) spring 10 1. 2. 3. 4. spring 10 package 생성 Spring 9 파일 복사 User. Dao 클래스 변경 dao. Bean 10. xml 변경
Set. Property를 이용한 의존관계주입(DI)spring 10 dao. Bean 9. xml dao. Bean 10. xml Set. Property 이용
Set. Property를 이용한 의존관계주입(DI)spring 10 dao. Bean 9. xml dao. Bean 10. xml Set. Property 이용
- Slides: 92