
✏️ Test1.
💻 입력



✅ ibatis
: DB와 Java를 연결해주는 역할
- DAO의 JDBC형태를 보완하기 위한 프레임워크
📂 프레임워크
: 대용량 프로젝트 or 만들 때 유지보수를 쉽게 할 수있는지에 대한 방법
우린 앞으로
MVC2구조 ->Controller가 있음
⬇️ 아래 3가지를 통틀어서 MVC2라고 부름
프로젝트 만들기



✅ struts -> 라이브러리 lib로 드래그 (20개 + 3개) - 프레임워크

study의 lib에서 jstl이랑 오라클이랑 standard 라이블러리만 가져옴

UTF-8 한글 필터 필수!

필터처리(Filter클래스를 인터페이스해서 서블릿에서 필터역할을 할 수 있음)


STRUST1의 환경설정

공용으로 사용되는 환경설정



템플릿 하나 만들기


✅서블릿 설정
:기본확장자가 do임 -> action으로 찾아가라

jsp 버전 - 4.01로 해주기 / 우리가 설정한 cp 쓰려고 (학원에서만)


✅ struts1 환경설정 완료!
: 메인 주소 (cp) = localhost:8080/struts1/까지임

✏️ Test2.
💻 입력
struts
- struts가 dto를 관리
- 알아서 dto에 데이터를 넣어줌
⭐ ~FORM = DTO

ActionServlet 라이브러리 =
struts-core-1.3.10.jar

⭐ xml파일을 만들었으면 무조건 등록 먼저 하러가야함
: 등록은
web.xml-param-value에 하면 됨


⬇️ 아래처럼
<action path="/test" forward= "내가 가고싶은 진짜 주소"/>

-> 서버 재시작 후 콘솔 확인
: 확인완료 ✔️


- TestAction
: ① action 상속 = extends Action
② 오버라이드
- public class ActionForward execute ( )
mapping : 내가 왔다가 돌아갈 곳
form : TestForm 클래스

action을 상속받게되면서
데이터를 일일히 set으로 넣어줄 필요없고 알아서 넣어줌
그래서
public class TestAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
scope : 데이터가 인식되는 범위



✏️ Test2.
💻 입력

인터페이스로 생성해야 함



db의 위치정보 알 수 있는 xml

클래스 파일 생성


✅ ibatis Map 2.0


둘 이 다른 서버임










insertData



CommonDAOImpl.java
package com.util.dao;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.util.sqlMap.sqlMapConfig;
public class CommonDAOImpl implements CommonDAO {
private SqlMapClient sqlMap; //아래 this를 통해 초기화 시켜줌
//매개변수 받을 필요 없음 - sqlMapConfig.java에서 static으로 메모리상에 미리 올라갔기때문에
public CommonDAOImpl() {
this.sqlMap = sqlMapConfig.getSqlMapInstance();
}
//자체적으로 객체 생성되게 할거임
// = 인터페이스를 구현한 클래스는 인터페이스로 객체 생성 가능함
// = CommonDAO dao = new CommonDAOImpl();
public static CommonDAO getInstance() {
return new CommonDAOImpl();
}
@Override
public void insertData(String id, Object value) throws SQLException {
//아래 try값을 insert시켜줌 -> commit
try {
sqlMap.startTransaction();
sqlMap.insert(id,value);
sqlMap.commitTransaction();
} catch (Exception e) {
System.out.println(e.toString());
}finally {
sqlMap.endTransaction();
}
}
@Override
public int updateData(String id, Object value) throws SQLException {
int result = 0;
try {
sqlMap.startTransaction();
sqlMap.update(id, value);
sqlMap.commitTransaction();
} catch (Exception e) {
System.out.println(e.toString());
} finally {
sqlMap.endTransaction();
}
return result;
}
@Override
public int updateData(String id, Map<String, Object> map) throws SQLException {
int result = 0;
try {
sqlMap.startTransaction();
sqlMap.update(id, map);
sqlMap.commitTransaction();
} catch (Exception e) {
System.out.println(e.toString());
} finally {
sqlMap.endTransaction();
}
return result;
}
@Override
public int deleteData(String id) throws SQLException {
int result = 0;
try {
sqlMap.startTransaction();
sqlMap.delete(id);
sqlMap.commitTransaction();
} catch (Exception e) {
System.out.println(e.toString());
} finally {
sqlMap.endTransaction();
}
return result;
}
@Override
public int deleteData(String id, Object value) throws SQLException {
int result = 0;
try {
sqlMap.startTransaction();
sqlMap.delete(id,value);
sqlMap.commitTransaction();
} catch (Exception e) {
System.out.println(e.toString());
} finally {
sqlMap.endTransaction();
}
return result;
}
@Override
public int deleteData(String id, Map<String, Object> map) throws SQLException {
int result = 0;
try {
sqlMap.startTransaction();
sqlMap.delete(id,map);
sqlMap.commitTransaction();
} catch (Exception e) {
System.out.println(e.toString());
} finally {
sqlMap.endTransaction();
}
return result;
}
@Override
//select는 transaction이 없음
public Object getReadData(String id) {
try {
return sqlMap.queryForObject(id);
} catch (Exception e) {
System.out.println(e.toString());
}
return null; //select했는데 없으면 object의 초기값인 null을 돌려줌
}
@Override
public Object getReadData(String id, Object value) {
try {
return sqlMap.queryForObject(id,value);
} catch (Exception e) {
System.out.println(e.toString());
}
return null;
}
@Override
public Object getRead(String id, Map<String, Object> map) {
try {
return sqlMap.queryForObject(id,map);
} catch (Exception e) {
System.out.println(e.toString());
}
return null;
}
@Override
//숫자반환 메서드
public int getIntValue(String id) {
try {
return ((Integer) sqlMap.queryForObject(id)).intValue(); // .intValue() 정수값으로 변환해라
} catch (Exception e) {
System.out.println(e.toString());
}
return 0;
}
@Override
public int getIntValue(String id, Object value) {
try {
return ((Integer) sqlMap.queryForObject(id,value)).intValue();
} catch (Exception e) {
System.out.println(e.toString());
}
return 0;
}
@Override
public int getIntValue(String id, Map<String, Object> map) {
try {
return ((Integer)sqlMap.queryForObject(id,map)).intValue();
} catch (Exception e) {
System.out.println(e.toString());
}
return 0;
}
@SuppressWarnings("unchecked") //노란줄 없애주기 - 예외처리할때 있는지 없는지 확인해주는거
@Override
public List<Object> getListData(String id) {
try {
return (List<Object>)sqlMap.queryForList(id);
} catch (Exception e) {
System.out.println(e.toString());
}
return null;
}
@SuppressWarnings("unchecked")
@Override
public List<Object> getListData(String id, Object value) {
try {
return (List<Object>) sqlMap.queryForList(id,value);
} catch (Exception e) {
System.out.println(e.toString());
}
return null;
}
@SuppressWarnings("unchecked")
@Override
public List<Object> getListData(String id, Map<String, Object> map) {
try {
return (List<Object>) sqlMap.queryForList(id,map);
} catch (Exception e) {
System.out.println(e.toString());
}
return null;
}
}
✅ 게시판 만들기














이걸 이용해





서버 restart 해보고 / 콘솔 확인해보고 게시판 등록해보기!
insert쿼리 만들었으니까!
log4j : 보안취약

✅ log4 1.2.17 설치 / 파일 다운로드



로깅 보는 법


쿼리작성



변경해줌 list


✅ 결과




