IT 면접족보/자바 면접족보

자바 수업 정리 -jsp_한글(다국어)처리,초기화 파라미터, ServletContextListener/ css_선택자(27 일차)

낙산암 2020. 12. 31. 17:28

1. jsp/servlet 에서 한글처리 방식은? (다국어 처리)

  • Tomcat서버의 기본 문자 처리 방식은 IOS 8859 1 방식이기 때문에 개발자가 별도의 한글 인코딩을 하지 않으면 디폴트로 IOS 8859 1 로 잡혀서 한글이 깨져 보이는 현상이 생긴다.
  • 2가지 방식의 처리 방법이 있다. Get방식(서버)과 Post 방식(servlet)
  • 하지만 서버는 건들지 않는게 좋다! sevlet 파일을 수정하자.
  • UTF-8 (유니코드) 을 쓰자.

2. 아래의 선택자에 대하여 설명하시오.

>
+
~
a[href="https://net.tutsplus.com"]

자손 선택자 (자세한 내용은 아래 5번에서)

> (element1 > element2)

직계 자식만 선택함 = 자손 선택자

  • #container > ul 는 div의 직계 자손인 ul만 대상이고 그 자식 li의 자식 ul은 선택하지 않는다.

동위 선택자

<h3 id="title">동위 선택자(+,~)</h3>
<div>div_01</div>
<div>div_02</div>
<div>div_03</div>
<div>div_04</div>
<div>div_05</div>

+ (element1 + element2)

  • 예시에서 h3+div
  • 동위 선택자, 인접 선택자 라고 부름
  • 같은 수준에 있는 바로 옆에 있는 걸 말한다.(다음거)

~ (element1 ~ element2)

 

  • 예시에서 h3~div, #title~div(id가 title)
  • 같은 수준에 있는 전체를 말함

속성 선택자 (attribute selector)

  • [대괄호]안에 있는 특성을 가진 모든 요소를 선택함
  • 형태 : [attribute] [attr=value] [attr~=value] [attr|=value] [attr^=value] [attr$=value] [attr*=value]

3. 웹 어플리케이션 감시를 위한 프로그래밍 방법은?

ServletContextListener(웹어플리케이션 감시)

  • 웹어플리케이션의 생명주기 LifeCycle 를 감시한다.
  • 해당 메소드가 웹 어플리케이션의 시작과 종료 시 호출 된다.
  • contextInitialized (), contextDestroyed() 함수를 사용해 시작할 때, 종료할 때 호출되게 한다.

방법

1 ) 리스너 클래스 제작 (.java)

contextInitialized (), contextDestroyed() 함수 오버라이드

 

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("contextDestroyed");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("contextInitialized");
	}
	
}

web.xml 파일에 리스너 클래스 작성

 

  <listener>
		<listener-class>com.javalec.ex.ContextListenerEx</listener-class>
  </listener>

 

4. 데이터 공유를 위한 ServletContext와 서블릿 초기화 파라미터 ServletConfig에 대하여 설명하시오.

 

초기화 파라미터

처음 WAS가 시작될 때 읽어 들이는 파라미터값을 초기화 파라미터라고 한다.

  1. 서블릿 초기화 파리미터(ServletConfig)와 2) 컨텍스트 초기화 파라미터가 있다.

초기화 파라미터를 사용하는 이유

  1. DB에 저장되는 내용들은 보안이 필요한 내용들이라 자바로 코딩하는 것 보다 초기화 파라미터를 이용하는게 좋다.
  2. 유지보수 관점에서 변경 가능한 파라미터를 DD(Deployment Descriptor)에 읽어 사용하도록 함 → 서블릿 소스 변경 부담을 줄임 예) 로그 파일명, DB테이블명 & 사용자명

서블릿 초기화 파라미터(Servlet Initialize Parameter): ServletConfig

  • 특정 Servlet 이 생성될 때 초기에 필요한 데이터들이 있다 . (특정 경로 및 아이디 정보 등) 이러한 데이터들을 초기화 파라미터라고 한다.
  • key, value 형태로 들어간다.
  • web.xml 에 기술하고 Servlet 파일에서는 ServletConfig 클래스를 이용해서 접근 사용 하거나 Servlet 파일에 직접 기술하는 방법이 있다.
  • Servlet 파일에 @annotation을 이용해서 직접 기술하는 방법보다 web.xml에 작성하는 것이 더 좋다. (직관적이고 이해하기도 좋다.)

서블릿 초기화 파라미터 설정 방법

 

1) web.xml에 다음과 같이 내용 작성 후 (예시)

<servlet>  
	<servlet-name>ServletInitParam</servlet-name>
	<servlet-class>com.javalec.ex.ServletInitPAram</servlet-class>

	<init-param>
		<param-name>id</param-name>
		<param-value>abcdef</param-value>
	</init-param>
	<init-param>
		<param-name>pw</param-name>
		<param-value>1234</param-value>
	</init-param>
	<init-param>
		<param-name>path</param-name>
		<param-value>C:\\javalec\\workspace</param-value>
	</init-param>

	</servlet>
	
	<servlet-mapping>
		<servlet-name>ServletInitParam</servlet-name>
		<url-pattern>/InitParam</url-pattern>
	</servlet-mapping>
  
</web-app>

ServletConfig메소드이용해서 데이터 불러오기

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String id = getInitParameter("id");
		String pw = getInitParameter("pw");
		String path = getInitParameter("path");
  • web.xml 설정하면 서버 실행해서 메모리에 올리면 가장먼저 web.xml을 읽어들인다.
  • 작성한 서블릿은 예시와 같이 com.javalec.ex.ServletInitPAram 해당 클래스에서만 사용할 수 있다. → 하나의 클래스에 종속되어있다.

Context Initialize Parameter: ServletContext(데이터 공유)

  • 여러 Servlet 에서 특정 데이터를 공유해야 할 경우 context parameter 를 이용해서 web.xml 에 데이터를 작성한다.
  • ServletConfig초기화 파라미터 작성은 해당 클래스에 종속되지만 ServletContext는 Servlet 에서 공유하면서 사용 할 수 있다.
  • 마찬가지로 key, vlaue 형태로 들어간다
<context-param>
  	<param-name>id</param-name>
  	<param-value>abcdef</param-value>
  </context-param>
  <context-param>
  	<param-name>pw</param-name>
  	<param-value>1234</param-value>
  </context-param>
  <context-param>
  	<param-name>path</param-name>
  	<param-value>C:\javalec\workspace</param-value>
  </context-param>
  
</web-app>

 

함수를 호출한다.

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String id = getServletContext().getInitParameter("id");
		String pw = getServletContext().getInitParameter("pw");
		String path = getServletContext().getInitParameter("path");

5. 후손 선택자와 자식 선택자에 대하여 설명하시오.

 

트리구조로 관리하게 되어있다. div 태그 아래 div , div 이런식으로

 

후손 선택자 (element element)

  • 앞의 element의 전체 후손이 선택된다.
div li { //후손
	font-size: 25px;
}

<!-- div 하고 한칸 띄우고 li 하면 li가 후손 선택자임을 말함 -->

자손 선택자 (element > element)

  • 직계 자식만 선택함 = 자손 선택자
div > h1 {  //자손
	font-size: 25px;
}

<!-- div가 크니까 div 바로 밑에 있는h1을 말함  -->