java에서 connection pool을 spec화 한 것이다. 각 DB의 vender들은 해당 spec을 구현하여 각 DB들만의 connection pool을 제공한다(Third part library)
Third part library 외에도 WAS에서 DataSource를 얻어서 사용하는 방법도 있다.
WAS Datasource Document
file:///C:/z.utility/07.WAS/Servlet%204.0%20JSP%202.3/apache-tomcat-9.0.58-fulldocs/tomcat-9.0-doc/jndi-datasource-examples-howto.html#Oracle8i,_9i&_10g
WEB C/S는 기존의 C/S와 다르게 연결을 유지해 놓고 데이터를 주고받는 방식과는 다르게 request와 response를 주고받는 순간만 연결을 유지하여 연결비용과 서버의 부하를 줄인다는 장점이 존한다.
그러나 연결을 유지하지 않기에 Client가 로그인한 뒤 다시 사이트를 방문하여도 다시 로그인 과정을 거치치 않는 이상 해당 Client가 로그인을 했는지 하지 않았는지 알 수 없다.(stateless)
이러한 문제를 해결하기 위한 browser 기술이 Cookie이다.
key, value 형식으로 데이터와 전송할 서버의 domain과 path를 cookie에 담아 browser마다 지정된 cookie 폴더에 넣어둔다.
이후 browser에서 다른 서버로 요청을 보낼때 cookie중 요청할 서버의 정보와 동일한 cookie가 존재하면 해당 cookie를 request에 담아 보낸다.
Client에 정보를 저장하는것은 보안 문제뿐 아니라 서버에서 로직을 구현할 때 client에 정보가 있어 불편함이 존재한다.
session은 server에 정보를 name, value 형식으로 저장하는 기술이다. client가 server에 request를 보내면 해당 client의 상태를 기억하기 위해 server에 session을 생성한다.
session에는 고유의 session id가 존재하며 request를 한 client에게 해당 session id를 cookie로 전달한다.
이후 Client의 정보를 session에 저장하고 client의 request가 오면 request의 cookie의 session id를 조회해 해당 client의 session에 접근해 정보를 가져 올 수 있다.
따라서 client가 로그인하면 해당 client의 로그인 정보를 session에 저장하고 다시 client의 request가 오면 session을 조회해 로그인 정보를 알 수 있다.
container에서 servlet을 호출하기에 servlet에서 예외를 throws로 처리하면 container에 예외가 전달된다.
따라서 container는 예외를 전달 받으면 web.xml 설정을 통해 그에 맞는 예외 처리가 가능하다.
*405에러가 발생하면 client에게 405ErrorDisplay.html를 보여줌*
<error-page>
<error-code>405</error-code>
<location>/jw05/405ErrorDisplay.html</location>
</error-page>
*NullPointerException이 발생하면 NullErrorDisplay servlet을 실행*
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/NullErrorDisplay</location>
</error-page>