package com.ch5;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
/*
* 서블릿(server + applet 합성어)
* 자바>서블릿>JSP(html+css+js+java+oracle) - 관리,유지보수,생산성 별로
*
*/
// 단 클래스 앞에 온다
// 서블릿은 화면을 처리하지 않고(할 수 있지만 불편해서) 컨트롤 계층의 역할을 한다
// JSP는 화면을 담당한다(View 계층)-JSP는 서블릿이다
@WebServlet("/hello") // 스프링으로 따지면 @Controller + RequestMapping (스프링은 메소드 앞에 온다. -> 메소드마다 URL을 갖는다.)
public class HelloServlet extends HttpServlet{ // 싱글톤 패턴으로 관리받고있다. - 하나다. - 공유(스레드)
// HelloServlet 노란줄 신경 안써도 된다. -> serialVersionUID 추가
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
System.out.println("init 호출");
super.init();
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service 호출");
super.service(arg0, arg1);
}
@Override
public void destroy() {
System.out.println("destroy 호출");
super.destroy();
}
}
스프링 다운로드
https://spring.io/tools
강의계획
: POJO 프레임워크 직접 만들어보기(mvc 패턴-디자인패턴,VO,DTO) - 스프링 모방하기
공동목표
: 화면과 로직 분리하자
: 프론트엔드와 백엔드를 완전히 분리할 수 있는 구조 설계
maven방식: xml 문법으로 환경을 설정 - 에러가 잦고 따로 문법을 공부해야 함.
gradle방식: 최신 방식 - 인텔리제이에서 gradle 방식으로 안드로이트 프로젝트를 지원해왔는데 구글에서 코틀린(함수형 프로그래밍 유행 - 자바에서는 람다식, js에서는 화살표 함수) 지지 공식 선언하면서 gradle 떠오름
package com.example.demo.dao;
import java.io.Reader;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class TestDao extends JFrame {
//
SqlSessionFactory sqlMap = null;
SqlSession session = null;
public void currentTime() {
System.out.println("CurrentTime 호출");
String time = null;
try {
String resourse = "com/mybatis/MapperConfig.xml";
Reader reader = null;
reader = Resources.getResourceAsReader(resourse);
sqlMap = new SqlSessionFactoryBuilder().build(reader);
session = sqlMap.openSession();
time = session.selectOne("currentTime");
System.out.println(time);
} catch (Exception e) {
e.printStackTrace();
}
}
public void procEmpcursor() {
Map<String, Object> pMap = new HashMap<>();
try {
String resourse = "com/mybatis/MapperConfig.xml";
Reader reader = null;
reader = Resources.getResourceAsReader(resourse);
sqlMap = new SqlSessionFactoryBuilder().build(reader);
session = sqlMap.openSession();
session.selectOne("proc_empcursor", pMap);
System.out.println(pMap);
} catch (Exception e) {
e.printStackTrace();
}
}
public void procLogin1() {
Map<String, Object> pMap = new HashMap<>();
try {
pMap.put("m_id", "kiwi123");
pMap.put("m_pw", "123");
String resourse = "com/mybatis/MapperConfig.xml";
Reader reader = null;
reader = Resources.getResourceAsReader(resourse);
sqlMap = new SqlSessionFactoryBuilder().build(reader);
session = sqlMap.openSession();
session.selectOne("proc_login1", pMap);
System.out.println(pMap);
Object keys[] = pMap.keySet().toArray();
for(int i = 0; i<keys.length; i++) {
if("r_msg".equals(keys[i])) {
JOptionPane.showMessageDialog(this, pMap.get("r_msg"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TestDao td = new TestDao();
//td.currentTime();
//td.procEmpcursor();
td.procLogin1();
}
}