3-2. Java Web
개발 작업시 생긴 이슈가 무엇인지, 그리고 어떻게 해결했는지 확인할 수 있습니다
Session 관리
모든 페이지가 서버를 거치지 않는 문제
session 관리를 총괄하는 session filter class를 사용하였습니다. 세션의 유무에 따라서, whiteList와 whiteList가 아닌 항목으로 나누었습니다. 또한, 로그인 정보 유무에 따라서, index로 보내줄지, dashboard로 보내줄지 결정했습니다.
서버를 거치지 않고 페이지 이동이 있을 경우, 예를 들어, 웹브라우저에서 back 키를 이용하여 페이지를 이동 할 경우, session filter를 거치지 않는다는 문제가 있었습니다.
Tomcat
URI Query String에 ' [ ' 또는 ' ] ' 등의 특수문자가 존재하면, 400 오류가 발생하는 문제
이 오류는 Tomcat 8버전부터 발생된 오류로, RFC-7230, 또는 RFC-3986 규격을 이유로 특수문자를 URI로써 정의할 수 없기에 발생된 것입니다.
이를 해결하기 위해, 파라미터를 encoding (encodeURI)를 하거나, web.xml 옵션을 수정해야합니다.
팀원들과 회의하여, 저희는 알 수 없는 글자(%로 시작하는 알 수 없는 글자들)가 URI로 남겨지는 것보다, WAS(Tomcat)가 자체적으로 처리해주는 것이 좋다 판단했습니다.
따라서 아래와 같은 코드로 수정함으로써, 문제를 해결했습니다.
<Connector
connectionTimeout="20000"
port="9090" protocol="HTTP/1.1"
redirectPort="8443"
URIEncoding="UTF-8"
relaxedQueryChars="[,],|"/>
Maven Project로의 전환시 발견된 문제점
ojdbc6.jar가 mvnrepository 에 존재하지 않는 문제
Oracle의 SSO 정책, 또는 mvn 서버의 부재에 따른 이슈로, 3rd Party Repository 를 인용하여 해결했습니다. pom.xml 상단부에는 아래와 같은 코드를 작성했으며,
<repositories>
<!-- 생략 -->
<repository>
<id>codelds</id>
<name>ORACLE JDBC Repository</name>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
<!-- 생략-->
</repositories>
pom.xml 하단부 dependencies 부분에 아래와 같은 코드를 작성했습니다.
<dependencies>
<!-- 생략 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
<scope>compile</scope>
</dependency>
<!-- 생략 -->
</dependencies>
Last updated