Spring을 활용한 JSP로 구현 된 웹페이지 분석 과제가 떨어졌다.
학부시절 처음으로 접했던 웹 프로그래밍.
ASP와 JSP 그리고 PHP를 만나서 놀라운 세계를 경험했었다.
그당시 프레임웍도 없었고, (있었다 해도 학습 의지가 부족하고 구글링 한다는건 내 자존심이 허락하지 않았..) 체계도 없이 배워서 엉망이었다.
그로부터 약 10년이 흘러 다시 AngularJS로 시작한 웹 프로그래밍,, 이건 신세계다.
그리고 다시 JSP로 돌아온 지금,
처음 웹 프로그래밍을 접했던때로. 새로운 언어를 공부하는 마음으로 다시 시작하자.
일단, 약 10분 만에 Spring JSP의 맛을 알게 해 준 포스트를 참조.
참조 : 머드초보님 블로그(http://mudchobo.tistory.com/116)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[실행하면, hello.htm의 body태그 안의 내용이 나오고, '<c:out> 태그안의 now 변수 값으로 'SpringappController' 에서 handleRequest 함수를 통해 전달한 Date 객체가 출력된다.]
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
참조 : 머드초보님 블로그(http://mudchobo.tistory.com/116)
스프링을 공부하다 보면 제일 이해하기 어려운게 xml 문서가 아닐까 싶다.
위 블로그의 포스팅을 보면 xml과 JSP가 어떻게 엮여지는 지 나름 쉽게 설명해놓은거 같다.
학부시절 처음으로 접했던 웹 프로그래밍.
ASP와 JSP 그리고 PHP를 만나서 놀라운 세계를 경험했었다.
그당시 프레임웍도 없었고, (있었다 해도 학습 의지가 부족하고 구글링 한다는건 내 자존심이 허락하지 않았..) 체계도 없이 배워서 엉망이었다.
그로부터 약 10년이 흘러 다시 AngularJS로 시작한 웹 프로그래밍,, 이건 신세계다.
그리고 다시 JSP로 돌아온 지금,
처음 웹 프로그래밍을 접했던때로. 새로운 언어를 공부하는 마음으로 다시 시작하자.
일단, 약 10분 만에 Spring JSP의 맛을 알게 해 준 포스트를 참조.
참조 : 머드초보님 블로그(http://mudchobo.tistory.com/116)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
........
web.xml파일을 수정합시다.
[code]
<display-name>SpringHelloWorld</display-name>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
[/code]
*.htm으로 들어오는 요청에 대해서는 springapp서블릿을 사용하겠다는 얘기네요. 서블릿은 스프링프레임워크에 있는 DispatcherServlet이랍니다
DispatcherServlet의 제어 행위를 처리하는 설정 파일이 필요한데, 이것은 서블릿 이름에 -servlet.xml을 붙여서 작성합니다.
/WEB-INF/springapp-servlet.xml을 작성해봅시다.
[code]
<beans>
<bean id="springappController" class="web.SpringappController" />
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.htm">springappController</prop>
</props>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
[/code]
대충 보아하니 beans태그 안에 bean태그가 3개가 있네요. 첫번째꺼는 Controller이고, 두번째꺼는 urlMapping시켜주는데 /hello.htm으로 요청이 들어오면 springappController에게 넘기라는 걸로 보이는군요-_-;
세번째꺼는 선행자와 후위자를 정해놓는 뭐그런거 같습니다. 미리 써놓으면 항상 쓰이는 WEB-INF/jsp/파일이름.jsp 에서 앞 뒤 없이 이름만 써도 되니까요.
SpringappController.java를 작성해봅시다.
이놈은 Controller라는 인터페이스를 상속받습니다.
web이라는 패키지를 생성후 거기에다가 class를 생성합니다.
생성할 때 New Java Class화면에서 Interface부분에 Add버튼을 클릭해서 Controller를 선택해서 추가해주면 자동으로 해줍니다.
[code]
package web;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class SpringappController implements Controller {
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
String now = (new Date()).toString();
logger.info("returning hello view with " + now);
return new ModelAndView("hello", "now", now);
}
}
[/code]
그냥 시간을 리턴합니다. new Date()로 시간을 생성해서 그걸 String으로 변환해서 now변수에 넣고, 로그를 기록하고, return할 때 now라는 변수는 now라는 이름으로 쓸 수 있게 hello파일에 넘겨줍니다. 이 hello는 앞 뒤 합치면 /WEB-INF/hello.jsp 가 되는 겁니다.
이제 /WEB-INF/hello.jsp파일을 봅시다.
[code]
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Hello :: Spring Application</title>
</head>
<body>
<h1>Hello World! - Spring Application</h1>
<p>Greetings, it is now<c:out value="${now}" /></p>
</body>
</html>
[/code]
now라는 변수를 c:out태그로 출력합니다. Controller에서 시간을 담아서 넘겨줬습니다.
아 그리고 jsp파일을 WEB-INF폴더에 넣는 이유는 JSP파일 접근에 대한 권한이 아마 우리한테 없고 SPRING에게 넘겨서 일껍니다-_-; 즉 직접적으로 접근하지 못하도록 하려고....-_-; 그런거 같습니다 ^^
was/SpringHelloWorld로 접속시 index.jsp를 실행하는데 없으니 하나 만듭시다.
index.jsp
<script>
location.href="hello.htm"
</script>
바로 hello.htm으로 포워드해줍니다-_-; 자 그럼 실행해봅시다.
web.xml파일을 수정합시다.
[code]
<display-name>SpringHelloWorld</display-name>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
[/code]
*.htm으로 들어오는 요청에 대해서는 springapp서블릿을 사용하겠다는 얘기네요. 서블릿은 스프링프레임워크에 있는 DispatcherServlet이랍니다
DispatcherServlet의 제어 행위를 처리하는 설정 파일이 필요한데, 이것은 서블릿 이름에 -servlet.xml을 붙여서 작성합니다.
/WEB-INF/springapp-servlet.xml을 작성해봅시다.
[code]
<beans>
<bean id="springappController" class="web.SpringappController" />
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.htm">springappController</prop>
</props>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
[/code]
대충 보아하니 beans태그 안에 bean태그가 3개가 있네요. 첫번째꺼는 Controller이고, 두번째꺼는 urlMapping시켜주는데 /hello.htm으로 요청이 들어오면 springappController에게 넘기라는 걸로 보이는군요-_-;
세번째꺼는 선행자와 후위자를 정해놓는 뭐그런거 같습니다. 미리 써놓으면 항상 쓰이는 WEB-INF/jsp/파일이름.jsp 에서 앞 뒤 없이 이름만 써도 되니까요.
SpringappController.java를 작성해봅시다.
이놈은 Controller라는 인터페이스를 상속받습니다.
web이라는 패키지를 생성후 거기에다가 class를 생성합니다.
생성할 때 New Java Class화면에서 Interface부분에 Add버튼을 클릭해서 Controller를 선택해서 추가해주면 자동으로 해줍니다.
[code]
package web;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class SpringappController implements Controller {
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
String now = (new Date()).toString();
logger.info("returning hello view with " + now);
return new ModelAndView("hello", "now", now);
}
}
[/code]
그냥 시간을 리턴합니다. new Date()로 시간을 생성해서 그걸 String으로 변환해서 now변수에 넣고, 로그를 기록하고, return할 때 now라는 변수는 now라는 이름으로 쓸 수 있게 hello파일에 넘겨줍니다. 이 hello는 앞 뒤 합치면 /WEB-INF/hello.jsp 가 되는 겁니다.
이제 /WEB-INF/hello.jsp파일을 봅시다.
[code]
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Hello :: Spring Application</title>
</head>
<body>
<h1>Hello World! - Spring Application</h1>
<p>Greetings, it is now<c:out value="${now}" /></p>
</body>
</html>
[/code]
now라는 변수를 c:out태그로 출력합니다. Controller에서 시간을 담아서 넘겨줬습니다.
아 그리고 jsp파일을 WEB-INF폴더에 넣는 이유는 JSP파일 접근에 대한 권한이 아마 우리한테 없고 SPRING에게 넘겨서 일껍니다-_-; 즉 직접적으로 접근하지 못하도록 하려고....-_-; 그런거 같습니다 ^^
was/SpringHelloWorld로 접속시 index.jsp를 실행하는데 없으니 하나 만듭시다.
index.jsp
<script>
location.href="hello.htm"
</script>
바로 hello.htm으로 포워드해줍니다-_-; 자 그럼 실행해봅시다.
[실행하면, hello.htm의 body태그 안의 내용이 나오고, '<c:out> 태그안의 now 변수 값으로 'SpringappController' 에서 handleRequest 함수를 통해 전달한 Date 객체가 출력된다.]
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
참조 : 머드초보님 블로그(http://mudchobo.tistory.com/116)
스프링을 공부하다 보면 제일 이해하기 어려운게 xml 문서가 아닐까 싶다.
위 블로그의 포스팅을 보면 xml과 JSP가 어떻게 엮여지는 지 나름 쉽게 설명해놓은거 같다.
댓글 없음:
댓글 쓰기