Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Eclipse
- Spring
- annotation
- 내림차순정렬
- 오름차순정렬
- 스프링
- 자바 계산기
- 계산기GUI
- 이클립스 #이클립스단축키 #자바 #자바단축키
- 알고리즘
- 버블소트
- 숫자정렬
- 자바 #java #이클립스 #eclipse #switch #switch문 #사칙연산 #계산기 #calculator #간단한계산기
- 자바알고리즘
- 계산기
- Swing
- 자바
- 배열정렬
- 버블정렬
- 자바GUI
- GUI
- 어노테이션
- MVC
- 이클립스
- Java
Archives
- Today
- Total
온 코딩
[Spring](게시판예제)Spring MVC 사용법 - xml 설정파일 이용 본문
SpringMVC가 제공하는 DispatcherServlet을 사용하여 Model2 구현 가능
1. web.xml
- 스프링프레임워크에서 제공하는 DispatcherServlet 등록
- 실행 시 DispatcherServlet의 init()메서드를 통해 XmlWebApplicationContext 스프링컨테이너 구동
- DispatcherServlet => WEB-INF 내에서 서블릿이름-servlet.xml 문서를 검색
* 만약 서블릿 이름-servlet.xml 문서의 위치를 변경할 경우 ,서블릿 초기화 파라미터를 이용하여 위치 변경 가능
<servlet>
<display-name>action</display-name>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
./WEB-INF/action-servlet.xml 로 자동 연결
서블릿 문서 이름 또는 위치 변경 시
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>ContextConfigLocation</param-name>
<param-value>/WEB-INF/config/action-servlet.xml</param-value>
</init-param>
</servlet>
- <param-name>태그 수정 불가!!
- <param-value> 문서의 위치와 이름
인코딩 설정
: CharacterEncodingFilter 클래스를 등록하여 인코딩 설정
: 모든 .do로 끝나는 요청에 characterEncoding 필터 적용
<filter>
<filter-name>characterEncoding</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>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
2. Controller를 구현 받는 ~~Controller.java 파일 만들기
- 스프링에서 제공하는 Controller 클래스는 ModelAndView 객체를 반환함
- 각 요청 사항에 맞는 컨트롤러 클래스 생성
package com.hhw.view.board;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.hhw.biz.board.BoardVO;
import com.hhw.biz.board.impl.BoardDAO;
public class GetBoardController implements Controller {
public GetBoardController() {
}
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("컨트롤러 : 글 상세조회 처리");
//1. 사용자 입력 정보 추출
String seq = request.getParameter("seq");
System.out.println(seq);
//2. DB 연동처리
BoardVO vo = new BoardVO();
vo.setSeq(Integer.parseInt(seq));
BoardDAO boardDAO = new BoardDAO();
BoardVO board = boardDAO.getBoard(vo);
//3. 리턴
ModelAndView mav = new ModelAndView();
mav.addObject("board", board); // model정보 저장
mav.setViewName("getBoard"); // view정보 저장
return mav;
}
}
* 주의 : ModelAndView 객체는 jsp에서 불러올 때 EL태그를 통해 사용할 수 있음
2. 스프링 설정 파일(action-servlet.xml) 만들기
- HandlerMapping/ ~~~Controller/ViewResolver <bean>으로 등록시 스프링 컨테이너가 객체 자동 생성
- Spring Bean Conrifutation file로 생성
1) 핸들러 맵핑 등록
- 스프링에서 제공하는 url을 통해 핸들러 맵핑을 하기 위한 SimpleUrlHandlerMapping 사용
- <prop key="/login.do">login</prop> => 해당 키값으로 요청이 들어오면 login아이디를 가진 컨트롤러 실행
2) 컨트롤러 등록
- 꼭 핸들러맵핑에서 사용한 값을 id로 받아야 해당 클래스가 실행 됨
3) 뷰리졸버 등록
- 스프링에서 제공하는 InternalResourceViewResolver 사용
- prefix와 seffix를 등록하여 불러오는 파일 경로 설정
* 각 페이지 이동 시, 뷰리졸버를 통하지 않고 바로 연결해야하는 경우 컨트롤러에서 뷰이름을 전달할 때 mav.setViewName("redirect:~~~.jsp")로 설정해야 함 // 뷰리졸버를 통한 화면이동-연결 주의해서 사용하기!!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 1. HandlerMapping 등록 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/login.do">login</prop>
<prop key="/getBoardList.do">getBoardList</prop>
<prop key="/getBoard.do">getBoard</prop>
<prop key="/insertBoard.do">insertBoard</prop>
<prop key="/deleteBoard.do">deleteBoard</prop>
<prop key="/updateBoard.do">updateBoard</prop>
<prop key="/logout.do">logout</prop>
</props>
</property>
</bean>
<!-- 2. Controller 등록 -->
<bean id="login" class="com.hhw.view.user.LoginController"></bean>
<bean id="getBoardList" class="com.hhw.view.board.GetBoardListController"></bean>
<bean id="getBoard" class="com.hhw.view.board.GetBoardController"></bean>
<bean id="insertBoard" class="com.hhw.view.board.InsertBoardController"></bean>
<bean id="deleteBoard" class="com.hhw.view.board.DeleteBoardController"></bean>
<bean id="updateBoard" class="com.hhw.view.board.UpdateBoardController"></bean>
<bean id="logout" class="com.hhw.view.user.LogoutController"></bean>
<!-- 3. ViewResolver 등록 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/board/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
화면 예시
EL태그/JSTL 사용
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.hhw.biz.board.impl.BoardDAO"%>
<%@ page import="com.hhw.biz.board.BoardVO"%>
<%@ page import="java.util.List"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
//세션에서 검색 결과인 List<BoardVO> vo 를 추출
//List<BoardVO> boardList = (List)session.getAttribute("boardList");
String name = (String)session.getAttribute("name");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getBoardList.jsp</title>
</head>
<body>
<div align="center">
<h1>글목록</h1>
<h3>${name }님 환영합니다 <a href="logout.do">로그아웃</a></h3>
<!-- 검색시작 : 구현예정 -->
<form action="getBoardList.jsp" method="post"></form>
<table border="1" cellpadding="0" cellspacing="0" width="700">
<tr>
<td align="right">
<select name="searchCondition">
<option value="title">제목
<option value="content">내용
</select>
<input name="searchKeyword" type="text" />
<input type="submit" value="검색" />
</td>
</tr>
</table>
<!-- 검색 종료 -->
<table border="1" cellpadding="0" cellspacing="0" width="700">
<tr>
<th bgcolor="orange" width="100">번호</th>
<th bgcolor="orange" width="200">제목</th>
<th bgcolor="orange" width="150">작성자</th>
<th bgcolor="orange" width="150">등록일</th>
<th bgcolor="orange" width="100">조회수</th>
</tr>
<c:forEach items="${boardList }" var="board">
<tr>
<td>${board.seq }</td>
<td align="left"><a href="getBoard.do?seq=${board.seq }">${board.title }</a></td>
<td>${board.writer }</td>
<td>${board.regDate }</td>
<td>${board.cnt }</td>
</tr>
</c:forEach>
</table>
<br>
<a href="insertBoard.jsp" >새 글 등록</a>
</div>
</body>
</html>
'복습 ARCHIVE > 모델별 프로젝트' 카테고리의 다른 글
[Spring] (게시판 예제)프레젠테이션레이어와 비즈니스레이어 통합 (0) | 2021.06.28 |
---|---|
[Spring] (게시판예제) Spring MVC 모델 - @annotation 이용 (0) | 2021.06.23 |
[Spring] (게시판예제)스프링 MVC 구조 구현 - DispatcherServlet, HadlerMapping , Controller, ViewResolver 직접 만들기 (0) | 2021.06.22 |
[Spring] Spring Legacy Project 에서 웹경로 수정하기 (0) | 2021.06.21 |
[Spring] 스프링 트렌젝션 처리 - JDBC기반 관리자 등록, <tx:advice> 설정, <aop:adivisor> 설정, (0) | 2021.06.21 |
Comments