[Web] Struts 스트러쳐

sue·2024년 2월 1일

📒국비학원 [Web]

목록 보기
16/21
post-thumbnail

✅ Struts

  • struts
    : Servlet은 만들 때 if문을 쓰기때문에 느리니까, Struts로 하나하나를 메소드로 만들었기때문에 다이렉트로 찾아가 시간절약하게 만듦

1-1. Struts 설치

✏️ Test1.

💻 입력


✅ ibatis

: DB와 Java를 연결해주는 역할

  • DAO의 JDBC형태를 보완하기 위한 프레임워크

📂 프레임워크

: 대용량 프로젝트 or 만들 때 유지보수를 쉽게 할 수있는지에 대한 방법


우린 앞으로 MVC2 구조 -> Controller가 있음

⬇️ 아래 3가지를 통틀어서 MVC2라고 부름


  • Model : DB에 있는 데이터 (View랑 짝꿍)
  • View : 데이터 외관을 꾸미는 것
  • Controller : 안내데스크 / 클라이언트 요청 제일 먼저 받아내서 진행하도록 안내해주는 것 (원래는 boardServlet이 컨트롤러였음)

프로젝트 만들기


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


  • 아래 기존파일인 study의 lib에서 jstl이랑 오라클이랑 standard 라이블러리만 가져옴


  • DB관련된 파일도 필요하니까 미리 만들어둔 파일 옮기기


UTF-8 한글 필터 필수!


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


STRUST1의 환경설정

  • XML파일 늘어날 때마다 서버 재시작 ⭐

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


  • struts-config : 글로벌 환경셋팅
  • struts-config_temp :각각의 세부 디테일 환경셋팅

템플릿 하나 만들기


✅서블릿 설정

:기본확장자가 do임 -> action으로 찾아가라


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


✅ struts1 환경설정 완료!

: 메인 주소 (cp) = localhost:8080/struts1/까지임




1-2.

✏️ 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 {

여기 form안에 세개의 변수 가 들어가있음


scope : 데이터가 인식되는 범위

2-1. ibatis 환경설정 셋팅

✏️ 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


✅ 결과

0개의 댓글