JSP Team Project [Space Music] - 세팅

diddbsckd456·2022년 11월 28일
0

🚀SpaceMusics🛸

목록 보기
2/5

🚀[Space Music] 프로젝트 Setting🛸

🔧 필요한 세팅

  • encoding filter 생성
  • DB연결
  • interface Action 생성

📂 생성한 파일

  • CharacterEncodingFilter.java
  • SqlMapConfig.java
  • config.xml
  • Action.java (Interface)
  • ActionForward.java

🔸 Encoding Filter

encoding filter는 파일들을 한글이 깨지지 않게 UTF-8로 맞춰주는 역할을 한다.

@WebFilter("*.sm")
public class CharacterEncodingFilter implements Filter {

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {

		// 한글 안깨지게 하는 인코딩 방법.
		arg0.setCharacterEncoding("utf-8");
		arg1.setCharacterEncoding("utf-8");
		arg1.setContentType("text/html; charset=utf-8"); 
		
		
		//System.out.println("before filter");
		// filterChain으로 다음 작업 진행 여부를 정한다.
		arg2.doFilter(arg0, arg1);
		//System.out.println("after filter");

	}
}

@WebFilter(*.sm)으로 내가 .sm으로 끝나게 경로를 지정한 파일들은 모두 이 필터를 지나게 할 수 있고, 그 파일들은 모두 UTF-8이 적용된다.


🔸 DB 연결

🔹 SqlMapConfig.java

public class SqlMapConfig { // mybatis 사용하기위한 준비 class
	private static SqlSessionFactory factory;

	// 클래스 초기화 블럭(클래스가 처음 로딩될 때 한번만 수행)
	static {
		try {
			String resource = "./com/spaceMusic/mybatis/config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			factory = new SqlSessionFactoryBuilder().build(reader);

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static SqlSessionFactory getFactory() {
		return factory;
	}

} // SqlMapConfig class

MyBatis란?
자바의 관계형 데이터 베이스 프로그래밍을 보다 쉽게 도와주는 프레임 워크이다.
자바에서는 관계형 데이터베이스 프로그래밍을 하기위해 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스인 JDBC를 제공하는데, JDBC의 모든 기능을 Mybatis가 대부분 제공한다.
그리고 Mybatis를 사용하면 SQL문이 코드로부터 완전히 분리되어 코드가 짧아지고 깔끔해진다. 그리고 하나의 파일에만 SQL코드를 입력하기 때문에 유지보수가 쉬워진다.

resourceMybatis를 설정해놓은 config.xml의 경로를 저장해놓은 변수이다.


🔹 config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<typeAliases>
		<typeAlias type="com.spaceMusic.dto.ArtistDTO" alias="ArtistDTO"/>
		<typeAlias type="com.spaceMusic.dto.GenreDTO" alias="GenreDTO"/>
		<typeAlias type="com.spaceMusic.dto.MusicDTO" alias="MusicDTO"/>
		<typeAlias type="com.spaceMusic.dto.UserDTO" alias="UserDTO"/>
	</typeAliases>
	 <environments default="development">
		 <environment id="development">
			 <transactionManager type="JDBC"/>
			 <dataSource type="POOLED">
				 <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
				 <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
				 <property name="username" value="jsp"/>
				 <property name="password" value="jsp"/>
			 </dataSource>
		 </environment>
	 </environments>
	 
	 <mappers>
	 	<mapper resource="com/spaceMusic/xml/spaceMusic.xml"/>
	 </mappers>
	
</configuration>

typeAliasspaceMusic.xml에서 사용할 파일들의 Alias명을 정해줘서 파일들을 더 간단하게 사용할 수 있게 해준다.
propertyOracle의 경로와 계정명, 비밀번호등을 지정해준다.
mapperspaceMusic.xml과 연결해준다.


🔸 Interface Action 생성

🔹 Action.java (interface)

public interface Action { // servlet 사용하기 위한 interface

	public ActionForward execute(HttpServletRequest req, HttpServletResponse resp);
}

interface는 쉽게 말하면 설계도 같은것이다. 다른 파일에서 implement Action으로 Action을 상속받으면 Action안에 만들어진 public ActionForward execute(){}메서드를 무조건 사용해야 한다.
interface Action을 만든 이유는 Servlet을 사용하기 위해서인데 Servlet은 자바 기반 웹페이지를 동적 페이지로 만들어 주는 일종의 프로그램이다.


🔹 ActionForward.java

public class ActionForward { 	// 경로 지정하기위한 부모클래스(action에 상속해주기 위해 만들어 놓음)

	private boolean isRedirect; // 방식
	private String path; 		// 경로

	// 기본 생성자
	public ActionForward() {}

	// 초기화 생성자
	public ActionForward(boolean isRedirect, String path) {
		super();
		this.isRedirect = isRedirect;
		this.path = path;
	}

	// getter(), setter()
	public boolean isRedirect() {
		return isRedirect;
	}

	public void setRedirect(boolean isRedirect) {
		this.isRedirect = isRedirect;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

}

Action Forward전송 방식경로를 지정하기 위한 클래스이다.
isRedirecttrue이면 Redirect방식으로 전송되고 false이면 Forward방식으로 전송된다.


전체 코드가 있는 GitHub

0개의 댓글