경로 맞추기
계속 404에러가 난다. 이를 해결하기 위해서 그냥 간단하게 경로를 맞추기 위한 프로젝트를 만들었다.
경로 맞추는 법 1.
index.jsp 설정
src/main/webapp/index.jsp을 생성한다.
<jsp:forward page = "/page.do">
web.xml 설정
각종 코드 삽입
dispatcher-servlet.xml 의 경로를 설정해준다. (/WEB-INF/config/dispatcher-servlet.xml)
// Servlet 3.0
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app>
// index.jsp, index.html의 순서로 호출하고, 없다면 404 페이지를 호출한다.
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
// 대표적으로 spring context 변수를 선언하는 예시
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/conf/spring-context.xml</param-value>
</context-param>
// Encoding 방식을 UTF-8로 하기 위한 Filter
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
// root 이하 모든 url에 이름이 encodingFilter인 filter를 적용
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
// 대표적인 DispatcherServlet을 선언하는 예시
<servlet>
<servlet-name>action</servlet-name>
<servler-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
controller 설정
컨트롤러에서는 @RequestMapping(value="")의 값을 index.jsp에 적어둔 경로와 일치시켜야 한다.
index.jsp에 <jsp:forward page = "/page.do"> 이렇게 써놨으면, controller도 @RequestMapping(value="/page.do")로 나타내면 된다.
그리고,
return은 dispatcher-servlet.xml에 적어둔 p:prefix="/WEB-INF/jsp" p:suffix=".jsp" 을 고려해서 경로를 일치시키도록 한다.
return "main";
이런식으로 작성되면, 실제 읽어지는 경로는 /WEB-INF/jsp/main.jsp가 된다.
WEB-INF/config/dispatcher-servlet.xml 설정
다음은 dispatcher-servlet.xml의 설정이다. 이거는 경로가 web.xml에 지정이 되어 있다. web.xml에 dispatcher-servlet.xml이 정의되어 있어야 한다.
다음 코드는 dispatcher-servlet.xml에 들어가는 코드이다.
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
dispatcher-servlet.xml에는 여기서 p:prefix="/WEB-INF/jsp" p:suffix=".jsp"로 되어 있는 부분을 설정해 줄 수 있다.
위의 코드처럼 /WEB-INF/경로에 jsp를 폴더를 만들고 거기에 .jsp 페이지를 만들어도 된다.
나중에 Controller에서 return하는 경로와 합쳐지면 완전한 경로 "WEB-INF/jsp/main.jsp"가 된다.
보여질 페이지 설정(jsp)
web.xml의 소스가 p:prefix="/WEB-INF/jsp" p:suffix=".jsp"로 되어 있으면,
보여질 페이지는 /WEB-INF/jsp의 경로에 만들어 주면 된다. main.jsp
SVN
프로젝트 도중, 기존에 작업하는 프로젝트를 svn을 통해서 checkout해서 가져오는 것을 처음 해보았다.
svn을 통해서 checkout을 하는데, locked이 걸리는 에러가 발생하였다. 이 에러의 해결방법은 새로 workplace를 만들어서 svn을 통해서 다시 checkout을 통해 프로젝트를 임포트해오는 것이다.
두번째 문제는 받아오는 것까지는 되었는데, 가져오고 바로 서버를 실행하면 된다. 그런데, 서버를 실행하면은 404에러가 발생하였다. 문제는 server의 Overview|Module에서 Module 탭을 클릭하면, path 경로가 "/nanumPortal"로 되어 있는데, 이를 "/"이걸로 변경해 주니 되었다.
하 진짜ㅏ......
import javax.servlet.jsp.JspWriter에서 오류가 난다.
에러 내용 : The import javax.servlet.jsp.JspWriter cannot be resolved
해결책(참고) :
[해결]
이클립스 -> 왼쪽 프로젝트 명 마우스 오른쪽 클릭 -> Build Path -> Configure Build Path..
-> 새창에서 왼쪽 Java Build Path 선택 확인 -> 중앙 Libraries 탭 -> ADD External JARs.. 에서
톰캣(tocat) - lib 폴더에 jsp-api.jar / servlet-api.jar를 선택하면 됨.
출처: https://nyhooni.tistory.com/70 [NewYorker IT Report]
댓글