본문 바로가기

study/java

[Spring] *.do 설정하기

Spring / Mobile

[Spring] *.do 설정하기

2014. 2. 5. 14:19

 이웃추가
본문 기타 기능

지금까지는 모바일 jQuery를위하여 jsp페이지만 이용하였다.

 

이제 Spring적인 요소를 활용하기 위하여

 

*.do를 사용해보도록 하겠다.

 

현재 필자의 index.html의 코드는 아래와 같다

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"  />
<title>Insert title here</title>
<script type="text/javascript">
  location.href = "/home.do";
</script> 
</head>
</html>
  

 

 

 

index.html페이지가호출되면 자동으로 home.do를 호출하도록 만들었다,

 

즉 "http://localhost:8080" 과 같이 입력하게 되면 index.html을 호출하게 되고

index.html은 home.do를 호출하게 된다.

 

즉 주소창에는 http://localhost:8080/home.do 의 경로를 통하여 페이지를 호출하고있다.

 

그렇다면 이러한 설정은 어떻게하느냐?

 

 

먼저 서버에 접속할시에 프로젝트 이름없이 해당 페이지를 여는 것부터 알아보도록 하겠다.

 

http://localhost:8080 이라고 프로젝트 명을 제외하고 입력하더라도 서버의 index.jsp를 호출하도록 설정하는 부분은 2가지이다.

 

1. server.xml / web.xml 이 두부분이다.

==> server.xml을 수정하는 방법 : tomcat을 활용하고 계시다면 server에서 server.xml이라는 파일을 열어보면 가장 아래쪽에

 

  <Context docBase="md" path="프로젝트명" reloadable="true" source="org.eclipse.jst.j2ee.server:md"/></Host>

 

이렇게 입력된 부분이 있을것이다.

 

이곳에서 프로젝트명을 아래와 같이지우고 서버를 클린해준다.

그렇다면 다시 path에 프로젝트 명이 입력될것이다. 그러면 다시 클린을 해주게 되면 아래와 같이 server.xml의 데이터가 수정된것을 볼것입니다.

 

  <Context docBase="md" path="" reloadable="true" source="org.eclipse.jst.j2ee.server:md"/></Host>

 

이제 수정할 부분은 web.xml이다.

 

<welcome-file-list>
     <welcome-file>index.html</welcome-file>
     <welcome-file>index.htm</welcome-file>
     <welcome-file>index.jsp</welcome-file>
     <welcome-file>default.html</welcome-file>
     <welcome-file>default.htm</welcome-file>
     <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>

 

위의부분은 web.xml에서 주소창만의 데이터가 들어왔을때 어떠한 파일을 처음으로 열것인지를 확인하는 것이다. 즉 현재 localhost:8080 이라는 주소로 접속하게 된다면 위의 파일들중 하나를 찾아서 접속하게 된다.

필자의 경우는 index.html 이라는 파일이 존재하기 때문에 index.html을 열게되는것이다.

 

 

---------------------------------------------------------------------

이제가지의 작업을 완료하고 나면 이제 주소창을 열게되면 위에 index.html 파일이 열릴것이다.

 

그렇다면 먼저 index.html파일을아래와 같이 작성한다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"  />
<title>Insert title here</title>
<script type="text/javascript">
  location.href = "/home.do";
</script> 
</head>
</html>

 

 

위와 같이 작성을하고 실행한다면 분명히 404오류가 발생할 것이다. 그이유는 무엇이냐

바로 location.href에 /home.do 를 찾지 못하기 때문이다.

 

이제 home.do에대한 설정을 해보도록 하겠다.

 

가장먼저 수정해야 되는 부분은 web.xml이다.

먼저 web.xml에아래와 같이입력한다.

 



<!-- Processes application requests -->
 <servlet>
  <servlet-name>appServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
  
 <servlet-mapping>
  <servlet-name>appServlet</servlet-name>
  <url-pattern>/*.do</url-pattern>
 </servlet-mapping>

 

 

그후 아래의 java파일을 생성한다.

생성 위치는

 

그림의 homeController,java 파일의 위치이다.

그리고 해당 자바 파일에는 아래의 내용을 펼쳐 내용을 입력한다,

package com.itmaker.util;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
 
 private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
 
 @RequestMapping(value="/home.do")
 public String home (ModelMap model) throws Exception {
  return "/home";
 }
 } 

 

이렇게 입력한 이후 이제 servlet-context를 수정한다. 

 

 <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
 <resources mapping="/resources/**" location="/resources/" />

 <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
 <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <beans:property name="prefix" value="/WEB-INF/views/" />
  <beans:property name="suffix" value=".jsp" />
 </beans:bean>

 

 

위의 내용을 입력하고 나면 이제 준비는 모두 마무리 되었다.

 

---------------------------------------------------

준비된내용을이제하나씩 순서대로 설명해보도록 하겠다,

 

1) localhost:8080으로 접속한다,.

2) index.html로 이동

3) index.html은 home.do 를 호출한다.

____________________________________________________

여기가까지 1차 server.xml을 수정한 내용이다,

 

4)페이지는 home.do를찾는다.

5) web.xml로 이동하여 *.do 에대한 정보를 얻는다.,

6) HomeController.java에서

 @RequestMapping(value="/home.do")

을 통하여 RequestMapping되는 이름중 value값과 같은 것을 인터셉트한다.

7) 해당 클래스 파일을 실행하고, 리턴되는 데이터의 값을 web.xml의 appServlet으로 가지고 간다.

<<<< 이경우 home.do의클래스파일의 리턴값은 "home"이다.

 

8) appServelt은 리턴된 home의 값을 servlet-context로 전송한다.

9) servlet-context는 받은 home의 값에 prefix와 suffix를 붙인다.

<<<<<<< 여기에서 찾고자 하는 주소값이 완성된다.

localhost:8080/WEB-INF/views/"home".jsp

이와 같이 파일을 찾아간다.

>>>>>>>>>>>>>>

 

10) 주소창에는 localhost:8080/home.do 라고 찍혀있지만 화면은

localhost:8080/WEB-INF/views/home.jsp 호출된다.

 

 

 

 

********************************************

여기까지가 do를 설정하고 활용하는 부분입니다.

 

정리!!!!!!!!!!!!!!!!!!!!

1. do를 활용하기위해서는 server.xml을먼저 수정해 주는 것이 경로 입력이 편리하다. <먼저 해주자>

2. server.xml 설정이후 web.xml을키고 do를 찾기위한 내역을입력한다.

3. java파일을 생성하고 RequestMapping value값에 do의 이름을 입력한다.

4. 해당 java파일의 클래스 리턴값은 확장자를 제외한 호출할 파일의 이름이다.

5. 리턴값은 web.xml을 거쳐 servlet-context로 이동하여 호출 파일의 주소가완성된다.

6. 주소창에는 do파일의 이름이나올뿐, 파일의 위치 경로나 나타나지 않는다.

 

 

tip !!!!

네이버와 같은 기업에는 do를 쓰지않고 nhn과 같은 다른 문자를쓰고있다.

이는 web.xml에서 *do. 부분은 *.nhn으로 바꾸어 주면 된다.