spring - 3.txt



1. Spring web.xml이란?


web.xml은 서블릿 배포 기술자 라고 합니다. (설정을 위한 설정파일) web.xml은 WAS(Web Application Server) -> Tomcat이

최초 구동될 때, WEB-INF 디렉토리에 존재하는 web.xml을 읽고, 그에 해당하는 웹 애플리케이션 설정을 구성한다.



web.xml에서 dispatcher-servlet.xml을 호출한다. 만약 호출하는 코딩이 없어도 dispatcher-servlet.xml 자체 이름을 디폴트로

생각하고 호출합니다. (만약 dispatcher-servlet.xml의 파일 이름을 사용자가 임의로 변경한다면, web.xml에 명시해야합니다.)


web.xml의 자세한 내용은 아래 링크에 있습니다.


출처 : 

https://m.blog.naver.com/PostView.nhn?blogId=blogpyh&logNo=221128330192&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


https://gmlwjd9405.github.io/2018/10/29/web-application-structure.html



2. JSTL Formatting 태크란?


JSTL Formatting태그는 이름에서 알 수 있듯이 데이터의 포멧형태등을 정해주고 변경할때 사용하는 태그입니다.

JSTL Formatting을 사용하기위해선 JSP페이지 상단에 선언을 해주셔야합니다.


<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>


JSTL Formatting의 다양한 태그 라이브러리를 확인하거나, JSTL의 다양한 라이브러리를 확인하려면 아래 링크에서 할 수 있습니다.


출처 : https://bvc12.tistory.com/237



3. Exeption을 사용할때, 웹 프로젝트에서는 모든 예외처리를 Controller에서 처리한다. Service, DAO클래스에서는 throws로 컨트롤러까지 예외를 던져준다.



4. error페이지를 처리할 수 있는 곳 ==> Controller, web.xml, HandlerMapping


dispatcher-servlet.xml에서 예외페이지를 처리하는 경우 아래를 참고하여 설정


<!-- Exception Handler..... -->

<bean  class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

<property name="exceptionMappings">

<props>

<prop key="org.springframework.dao.EmptyResultDataAccessException">Error1</prop>

<prop key="java.lang.Exception">Error2</prop>

</props>

</property>

</bean>



5. AJAX를 사용할때는 컨트롤러에 어노테이션 @ResponseBody를 넣어줘야 한다.



5. 보안에 따른 view page 저장위치


view page들을 예전에는 WebContent폴더 아래에 새로운 폴더를 생성하여 웹 페이지를 저장했지만, 이러한 기법의 문제는 

웹 브라우저에서 주소창에 직접 주소를 입력하여 접근이 가능하기 때문에 보안상 좋지않다.

그래서 요즘은 WEB-INF폴더 아래에 새로 폴더를 만들어서 웹 페이지를 저장한다.

이러한 방식은 웹 브라우저에서 직접 주소를 입력하여 접근할 수 없으므로, 보안상 좋다.



6. AJAX를 사용할 경우, XML데이터는 무조건 VO(DTO)로만 데이터가 이동 가능하다. int, String, Map, List와

같은 자료형은 데이터 이동이 불가능하다. (그래서 보통 JSON을 사용한다.)



7. Java는 DB연결에 있어서 무조건 try catch를 사용해서 에러를 잡아줘야하지만, Spring에서는 모든 에러를

Runtime exception을 상속받고 있어서, 따로 처리하지 않아도 에러는 나지 않습니다.



<질문>


session id를 쿠키에 저장해서 이동하는데 만약 사용자가 쿠키기능을 막으면 ??


답변 : 쿠키 기능을 완전 막으면 session기능은 사용할 수 없습니다. 따라서, 세션을 사용한다는 의미는 쿠키를 사용한다는 의미와 같습니다.


프로세스 -> 싱글톤 => 싱글톤인데 프로세스 여러개 생성가능?

스레드 -> 싱글톤 => 메모리 과부하 ?? 어떻게 여러명이 하나의 클래스파일을 로드할수있지?

스레드 -> 싱글톤x => 프로세스로 생성하는거랑 무슨차이?



답변 :  - 만약 웹 서비스를 프로세스 단위로 사용자에게 제공하면 싱글톤의 의미자체가 없다.

         - 웹 서비스를 스레드 단위로 사용자에게 제공하면 싱글톤의 유무가 중요하다. 만약 싱글톤을 사용하지 않는다면,

           사용자들은 지속적으로 클래스파일을 로드하여 메모리에 문제가 생길것이다.

           그러나, 싱글톤을 사용한다면 사용자들은 하나의 클래스 파일을 카피하여 사용하므로, 메모리관리에 효과적이다.

           (내용정리가 필요할듯 ....)


db커넥션풀에는 아래와 같은 계정이 생성된다. 하나의 계정으로 모든 사람이 접속하는건가?


<context:property-placeholder location="classpath:/config/jdbc.properties"/>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">

<property name="driverClassName" value="${jdbc.driverClassName}"/>

<property name="url" value="${jdbc.url}"/>

<property name="username" value="${jdbc.username}"/>

<property name="password" value="${jdbc.password}"/>

<property name="maxActive" value="${jdbc.maxPoolSize}"/>

</bean>


답변 : 그렇다. bean객체로 생성한 하나의 계정을 DB커넥션풀에 생성하여 사용자들에게 계정을 빌려준다. (보통 5개 이상 만들지 않습니다. 그만큼 계정의 사용과 반납 과정이 빠릅니다.)

+ Recent posts