일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hide
- Math.ceil()
- FileZilla다운로드
- addClass
- selectedIndex
- Math.round()
- calc.plus
- Git
- push오류
- Excel
- 파일질라설치오류
- 파일질라설치
- toFixed()
- 증가값
- is_check
- 파일질라다운로드
- SUB함수
- slideUp
- Math.floor()
- 주석이 먹히지 않을 때
- 1521
- index %
- ctrl+/
- excel중복체크
- selectoptions
- calc.minus
- FileZilla설치
- 소스트리인증실패
- removeClass
- Parent
- Today
- Total
잡동사니에도 사랑을
[21.11.17] (chapter06_1) 본문
* web.xml
1. web.xml에 DispatcherServlet 설정을 통해 스프링 설정 파일을 지정합니다.
2. *.do로 들어오는 클라이언트의 요청을 DispatcherServlet이 처리하도록 했다
3. DispatcherServlet은 /WEB-INF/서블릿이름-servlet.xml 파일로부터 스프링 설정 정보를 읽어온다.
* HelloController.java
1. 컨트롤러를 구현하려면 @Controller 어노테이션을 클래스에 적용한다.
2. @RequestMapping 어노테이션을 이용해서 클라이언트의 요청을 처리할 메소드를 지정한다.
3. ModelAndView.setViewName()메소드를 이용해서 컨트롤러의 처리 결과를 보여줄 뷰 이름을 지정한다.
* dispatcher-servlet.xml
1. DispatcherServlet은 스프링 컨테이너에서 컨트롤러 객체를 검색하기 때문에 스프링 설정파일에 컨트롤러를 빈으로 등록해주어야 한다
2. DispatcherServlet은 뷰이름과 매칭되는 뷰 구현체를 찾기 위해 ViewResolver를 사용한다.
3. 스프링 MVC는 JSP, Velocity, FreeMarker등의 뷰 구현 기술과의 연동을 지원하는데, JSP를 뷰 기술로 사용할 경우 InternalResourceViewResolver 구현체를 빈으로 등록해주면 된다.
4. ViewResolver가 /view/뷰이름.jsp를 뷰JSP로 사용한다는 의미이다
[예제]
Project : chapter06_1
Package : com.controller
Class : SumController.java
Package : com.bean
Class : SumDTO.java
Foler : sum
File : input.jsp
result.jsp
스프링 설정 파일
/WEB-INF/dispatcher-servlet.xml → /WEB-INF/spring/appServlet/mvc-context.xml
////////web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID" version="4.0">
<display-name>chapter06_1</display-name>
<!-- WAC
1. 웹
dispatcher-servlet.xml
-> 변경 /WEB-INF/spring/appServlet/mvc-context.xml로 변경한다. -->
<servlet>
<servlet-name>mvc</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>
<!-- 이렇게 쓰게 되면 이제는 dispatcher를 따라가지 않는다 -->
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 스프링 파라메터로 한글을 넘길 때 -->
<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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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-app>
////////SumController.java
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller // 내가 컨트롤러라는걸 알려주자~
public class SumController {
@RequestMapping(value = "/input.do", method = RequestMethod.GET)
// value = "/input.do" : 요청한 URL값
public String input() {
return "/sum/input";
}
@RequestMapping(value = "/input.do", method = RequestMethod.GET)
public String result() { // 콜백함수
return "/sum/result";
}
}
///////input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="calcForm" method="get" action="result.do">
<table border="1" cellspacing="0" cellpadding="5">
<tr>
<td width="50" align="center">X</td>
<td><input type="text" name="x"></td>
</tr>
<tr>
<td width="100" align="center">Y</td>
<td><input type="text" name="y"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="계산">
<input type="reset" value="취소"></td>
</tr>
</table>
</form>
</body>
</html>
여기서 잠깐!
다음과 같이 결과값을 result.jsp에 뿌려주려고 하는데, ${x }라고 쓰면 값이 나오지 않는다.
문장을 어떻게 써야 할까?
sumDTO를 사용하여 값을 도출하는 방법도 있다.
////////SumDTO.java
package com.bean;
import lombok.Data;
@Data
public class SumDTO {
private int x;
private int y;
}
먼저 SumDTO.java 파일을 만들어 데이터 값을 입력한다.
////////result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- <h1>${param.x } + ${param.y } = ${param.x + param.y }</h1>--%>
<%-- <h1>${x } + ${y } = ${x+y }</h1> --%>
<h1>${sumDTO.x } + ${sumDTO.y } = ${sumDTO.x+y }</h1>
</body>
</html>
[결과]
[예제]
Project : chapter06_1
Package : com.controller
Class : SungJukController.java
Package : com.bean
Class : SungJukDTO.java
Field : name, kor, eng, math, tot, avg
Foler : sungJuk
File : input.jsp
result.jsp
스프링 설정 파일
/WEB-INF/spring/appServlet/mvc-context.xml
////////web.xml
<servlet>
<servlet-name>mvc</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
/WEB-INF/spring/appServlet/mvc-context.xml
</param-value>
<!-- 이렇게 쓰게 되면 이제는 dispatcher를 따라가지 않는다 -->
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
////////mvc-context.xml
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="suffix" value=".jsp"></property>
</bean>
<!-- <bean id="sungJukController" class="com.controller.SungJukController"></bean> -->
<!-- 위 문장 대신 아래와 같이 작성해줘도 괜찮다 -->
<context:component-scan base-package="com.controller" />
////////input.jsp
//--------------------------중략---------------------------
<body>
<form name="sungJukForm" method="post" action="/chapter06_1/sungJuk/result.do">
<table border="1" cellspacing="0" cellpadding="5">
<tr>
<td width="50" align="center">이름</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td width="100" align="center">국어</td>
<td><input type="text" name="kor"></td>
</tr>
<tr>
<td width="100" align="center">영어</td>
<td><input type="text" name="eng"></td>
</tr>
<tr>
<td width="100" align="center">수학</td>
<td><input type="text" name="math"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="계산">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
</body>
////////SungJukController.java
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.bean.SungJukDTO;
@Controller
public class SungJukController {
@RequestMapping(value = "/sungJuk/input.do", method = RequestMethod.GET)
public String input() {
return "/sungJuk/input";
}
@PostMapping(value = "/sungJuk/result.do")
public String result(@ModelAttribute SungJukDTO sungJukDTO, Model model) {
int tot = sungJukDTO.getKor() + sungJukDTO.getEng() + sungJukDTO.getMath();
double avg = tot / 3.0;
sungJukDTO.setTot(tot);
sungJukDTO.setAvg(avg);
model.addAttribute("sungJukDTO", sungJukDTO);
return "/sungJuk/result";
}
}
////////result.jsp
<body>
<table>
<tr>
<th colspan="2">${sungJukDTO.name }성적</th>
<tr>
<td>총점 :</td>
<td><h1>${sungJukDTO.tot}</h1></td>
</tr>
<tr>
<td>평균 :</td>
<td><h1>${sungJukDTO.avg }</h1></td>
</tr>
</table>
</body>
[결과]
'SPRING' 카테고리의 다른 글
[21.11.18] (0) | 2021.11.18 |
---|---|
[21.11.17] WAC (Web Application Context) 등록 - (chapter06_SpringWebMaven) (0) | 2021.11.17 |
[21.11.16] 스프링 MVC (chapter06) (0) | 2021.11.16 |
[21.11.11] (sample01 - chapter03_SpringMaven) (0) | 2021.11.11 |
[21.11.11] AOP 예제 (sample01 - chapter03) (0) | 2021.11.11 |