[JSP]Spring Web
2012. 4. 4. 09:45ㆍ개발관련기록/Servlet_JSP
반응형
@Controller 가 원래는 implements 였었다 (2.5ver)
대세가 어노테이션 사용이여서 @Controller을 사용한다
설정파일에서는 객체 생성만 한다
실행 흐름 정리
컨트롤러 요청 DefaultAnnotationHandlerMapping
HelloController 빈 리턴 -> Dispatcher : DispatcherServlet
처리요청 HelloController -> 모델뷰 리턴 -> Dispatcher : DispatcherServlet
hello에 매칭되는 View 객체 요청 ViewResolver : InternalResourceViewResolver 뷰 리턴 -> Dispatcher : DispatcherServlet
응답 생성 요청 -> InternalResourceView -> JSP를 이용하여 응답생성 -> hello.jsp
Dispatcher : DispatcherServlet 가 모든것을 컨트롤 하는것을 알 수 있다(Struts2의 Controller와 같은 역할)
dispatcher-servlet.xml
01.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
02.
03.
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
04.
xmlns:context
=
"http://www.springframework.org/schema/context"
xmlns:p
=
"http://www.springframework.org/schema/p"
05.
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
06.
xsi:schemaLocation="http://www.springframework.org/schema/beans
10.
11.
12.
<!-- 기본 설정 -->
13.
<
bean
id
=
"helloController"
class
=
"madvirus.spring.chap06.controller.HelloController"
/>
14.
15.
<!-- View 글로벌 설정 -->
16.
<
bean
id
=
"viewResolver"
class
=
"org.springframework.web.servlet.view.InternalResourceViewResolver"
>
17.
<
property
name
=
"prefix"
value
=
"/WEB-INF/view/"
/>
18.
<
property
name
=
"suffix"
value
=
".jsp"
/>
19.
</
bean
>
20.
</
beans
>
객체 생성
web.xml
01.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
02.
<
web-app
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns
=
"http://java.sun.com/xml/ns/javaee"
xmlns:web
=
"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id
=
"WebApp_ID"
version
=
"2.5"
>
03.
04.
<!-- 기본 설정 -->
05.
06.
<!-- <
servlet-name
>dispatcher</
servlet-name
>을 써놓고 dispatcher-servlet.xml
07.
의 앞에가 일치하면 자동으로 읽음
08.
-->
09.
<
servlet
>
10.
<
servlet-name
>dispatcher</
servlet-name
>
11.
<
servlet-class
>org.springframework.web.servlet.DispatcherServlet</
servlet-class
>
12.
<
load-on-startup
>1</
load-on-startup
>
13.
</
servlet
>
14.
<
servlet-mapping
>
15.
<
servlet-name
>dispatcher</
servlet-name
>
16.
<
url-pattern
>*.do</
url-pattern
>
17.
<
url-pattern
>/game/*</
url-pattern
>
18.
</
servlet-mapping
>
19.
<!-- 캐릭터 인코딩 -->
20.
<
filter
>
21.
<
filter-name
>encodingFilter</
filter-name
>
22.
<
filter-class
>org.springframework.web.filter.CharacterEncodingFilter</
filter-class
>
23.
<
init-param
>
24.
<
param-name
>encoding</
param-name
>
25.
<
param-value
>UTF-8</
param-value
>
26.
</
init-param
>
27.
</
filter
>
28.
<
filter-mapping
>
29.
<
filter-name
>encodingFilter</
filter-name
>
30.
<
url-pattern
>/*</
url-pattern
>
31.
</
filter-mapping
>
32.
</
web-app
>
DispatcherServlet
url-pattern에 정보를 받는다
url-pattern 을 여러개 줄경우에는 에러발생이 생길 수 있기 때문에
.do를 남발하지 않는것이 좋다
캐릭터 인코딩
언어 처리 하기에 편리함(페이지 마다 인코딩 설정 불필요)
request.setCharacterEncoding("");
hello.jsp
01.
<%@ page language=
"java"
contentType=
"text/html; charset=UTF-8"
02.
pageEncoding=
"UTF-8"
%>
03.
<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
04.
<html>
05.
<head>
06.
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
07.
<title>인사</title>
08.
</head>
09.
<body>
10.
인사말 : <strong>${greeting}</strong>
11.
</body>
12.
</html>
HelloController.java
01.
package
madvirus.spring.chap06.controller;
02.
03.
import
java.util.Calendar;
04.
05.
import
org.springframework.stereotype.Controller;
06.
import
org.springframework.web.bind.annotation.RequestMapping;
07.
import
org.springframework.web.servlet.ModelAndView;
08.
09.
//컨트롤러(Struts2의 Action과 동일)을 구현하기 위해 @Controller 명시
10.
@Controller
11.
public
class
HelloController {
12.
13.
//클라이언트의 요청에 대해 호출되는 메서드 지정
14.
@RequestMapping
(
"/hello.do"
)
15.
public
ModelAndView hello(){
16.
//View에 정보를 전달하기 위해 ModelAndView 객체 생성
17.
ModelAndView mav =
new
ModelAndView();
18.
mav.setViewName(
"hello"
);
//View의 이름을 지정.jsp 생략
19.
mav.addObject(
"greeting"
,getGreeting());
//View에서 사용할 데이터 저장
20.
return
mav;
21.
}
22.
23.
private
String getGreeting(){
24.
int
hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
25.
if
(hour>=
6
&& hour <=
10
){
26.
return
"좋은 아침입니다."
;
27.
}
else
if
(hour >=
12
&& hour <=
15
){
28.
return
"점심 식사는 하셨나요?"
;
29.
}
else
if
(hour >=
18
&& hour<=
22
){
30.
return
"좋은 밤 되세요"
;
31.
}
32.
return
"안녕하세요"
;
33.
}
34.
}
@Controller로 struts2 의 Action
ModelAndView는 마음대로(메서드명)
addObject가 setAttribute 역할을함
Spring은 별도의 표현식이 없다(물론 커스텀 태그는 있지만)
그래서 EL을 많이 사용한다
출처 : http://javai.tistory.com/561
반응형
'개발관련기록 > Servlet_JSP' 카테고리의 다른 글
Java 설치 및 환경설정 관련 (0) | 2012.06.05 |
---|---|
[JSP] DB의 BLOB 타입으로 저장된 이미지를 출력해 보자. (0) | 2012.04.04 |
[Download] 한글 Putty 다운로드 (0) | 2011.11.30 |
[MySQL]Alter 구문 관련 쿼리 예제 (0) | 2011.08.09 |
[Servlet / JSP] Mysql 13장 예제 쿼리문 적기 (0) | 2011.08.09 |