src/main/java에 controller패기지 생성하고 그안에 IndexController.java 생성
Tip.
src/main/java 에서 Class생성으로 들어가서 Package를 아래와같이 적어주면 패키지생성과 JavaClass파일 생성을 같이 할 수 있다
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!-- The controllers are auto-detected POJOs labeled with the @Controller
annotation. -->
<context:component-scan
base-package="com.portfolio.www" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:annotation-driven />
</beans>
pf-servlet.xml
@Controller
public class IndexController {
public IndexController() {
System.out.println("------------------------------생성됨----------------------------");
}
}
@Controller 어노테이션 넣고 생성자를 IndexController라 하자
이제 이 클래스가 객체가 될때(스프링이 new인스턴스로 객체를 생성할때) 쉽게 확인하기위해 "----생성됨----" 프린트해본다
서버를 시작하고 Console 로그에 "----생성됨----" 가 잘 찍혔나 확인
있으면 pf-servlet.xml의 컴포넌트스캔이 잘 작동한다는 뜻
베이스패키지(com.portfolio.www)부터 시작해 filter를 찾는다 타입은 어노테이션이고 표현식은 Controller인것
즉, com.portfolio.www아래 Controller 어노테이션을 찾는다
@Controller
public class IndexController {
public IndexController() {
System.out.println("--------------------------------생성됨--------------------------");
}
@RequestMapping("/index.do")
public String indexPage() {
return "index";
}
}
indexPage를 추가해보자 이러면 분명 파일을 찾을 수 없다며 404에러가 발생할 것이다
이유는 우리가 pf-servlet.xml 에 정의한 prefix와 suffix 때문이다
String이지만 Spring mvc가 jsp라 인식해서 이파일을 찾는다
즉, 우리는 Controller에서 /WEB-INF/views/index.jsp를 넘긴건데 이 파일이 없어 에러가 발생한 것이다
그러면 /WEB-INF 아래 views폴더를 만들고 그 안에 index.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>
Hello JSP.
</body>
</html>
Tip.
입력-> 처리 -> 출력
input.jsp -> Servlet -> output.jsp
input에서 파라미터를 보내면 output에서 쓸 수 있다 하지만 Servlet 이 가운데에서 받고 다시 넘겨줘야한다
input이 5개를 보내도 sevlet이 받고 5개를 안보내면 output에서 5개가 아니게 된다
jsp,html에서 무조건 servlet으로 파라미터가 넘어온다 파라미터를 출력하려면 servlet에서 보내줘야된다
실습으로 우리가 http://localhost:8080/01을 입력하면 index.jsp가 열리도록 만들어보자
index.html을 hello를 아래처럼 바꿔보자
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script>
window.onload = function(){
location.href="/01/index.do";
}
</script>
</body>
</html>
실행해보면 index.jsp의 Hello JSP. 이 잘 나옵니다
그렇다면 이제 input 파라미터에 값을 넣으면 output에 값을 넘겼을때 파라미터를 잘 받았는지 출력해보자
/WEB-INF/views/ 에 이제 input.jsp과 output.jsp를 만들어주자
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>전기요금 계산</title>
<style>
body { font-size:11px;}
table { border-width: thin; }
</style>
</head>
<body>
<form action="/01/output.do" method="post">
<table width="600" align="center" border="1">
<tr>
<th colspan="4">전기요금 계산</th>
</tr>
<tr>
<td colspan="2">사용일(yyyy-mm-dd)</td>
<td colspan="2"><input type="text" name="measureDate" /></td>
</tr>
<tr>
<td colspan="2">사용량(KWh)</td>
<td colspan="2"><input type="text" name="eAmount" /></td>
</tr>
<tr>
<td colspan="2" align="center"> <b>정액할인</b> </td>
<td colspan="2">해당 없음<input type="radio" name="discountType1" value="0" checked/></td>
</tr>
<tr>
<td colspan="2">장애의 정도가 심한 장애인 및 상이유공자<br/>독립유공자 또는 독립유공자 권리이전 유족 1인</td>
<td>
해당<input type="radio" name="discountType1" value="1"/>
</td>
<td>정액 할인<br/>(월 1만6천원, 여름철 2만원 한도)</td>
</tr>
<tr>
<td rowspan="2">기초생활수급자</td>
<td> 생계, 의료급여</td>
<td>
해당<input type="radio" name="discountType1" value="2"/>
</td>
<td>정액 할인<br/>(월 1만6천원, 여름철 2만원 한도)</td>
</tr>
<tr>
<td> 주거, 교육급여</td>
<td>
해당<input type="radio" name=discountType1 value="3"/>
</td>
<td>정액 할인<br/>(월 1만원, 여름철 1만2천원 한도)</td>
</tr>
<tr>
<td colspan="2">
차상위계층
<ul>
<li>국민기초생활보장법 제9조 5항</li>
<li>국민건강보험법 시행령 별표2 제3호 라목</li>
<li>장애인복지법 제49조 및 제50조</li>
<li>한부모가족지원법 제5조</li>
<li>우선돌봅 차상위자</li>
</ul>
</td>
<td>
해당<input type="radio" name="discountType1" value="4"/>
</td>
<td>정액 할인<br/>(월 8천원, 여름철 1만원 한도)</td>
</tr>
<tr>
<td colspan="2" align="center"> <b>정률할인(30%)</b> </td>
<td colspan="2">해당 없음 <input type="radio" name="discountType2" value="0" checked/></td>
</tr>
<tr>
<td colspan="2">
3자녀 이상 가구<br/>
<ul>
<li>주민등록표상 자(子) 또는 손(孫) 3인 이상</li>
</ul>
</td>
<td>
해당<input type="radio" name="discountType2" value="1"/>
</td>
<td>30%할인<br/>(월 1만6천원 한도)</td>
</tr>
<tr>
<td colspan="2">
대가족 가구<br/>
<ul>
<li>주민등록표상 가구원수가 5인 이상</li>
</ul>
</td>
<td>
해당<input type="radio" name="discountType2" value="2"/>
</td>
<td>30%할인<br/>(월 1만6천원 한도)</td>
</tr>
<tr>
<td colspan="2">
출산가구<br/>
<ul>
<li>주민등록표상 출생일로부터 3년 미만의 영아 기재</li>
</ul>
</td>
<td>
해당<input type="radio" name="discountType2" value="3"/>
</td>
<td>30%할인<br/>(월 1만6천원 한도)</td>
</tr>
<tr>
<td colspan="2">
생명유지장치 사용고객<br/>
<ul>
<li>호흡기 장애 또는 희귀난치성질환</li>
</ul>
</td>
<td>
해당<input type="radio" name="discountType2" value="4"/>
</td>
<td>30%할인</td>
</tr>
<tr>
<td colspan="2">
사회복지사업법에 의한 사회복지시설<br/>
</td>
<td>
해당<input type="radio" name="discountType2" value="4"/>
</td>
<td>30%할인</td>
</tr>
<tr>
<td colspan="4">
※ 여름철 구분 : 6월 1일 ~ 8월 31일 <br/>
※ 기초생활수급자 및 차상위계층 정액할인은 정률할인(30%)과 중복 적용 가능 <br/>
</td>
</tr>
<tr>
<td colspan="4" align="center">
<button type="submit"> 계산하기 </button>
</td>
</tr>
</table>
</form>
</body>
</html>
input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.util.*, java.text.*" %>
<!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=UTF-8">
<title>전기요금 계산</title>
<style>
body { font-size:11px;}
table { border-width: thin; }
</style>
</head>
<body>
<table width="600" align="center" border="1">
<tr>
<th colspan="4">전기요금 계산 결과</th>
</tr>
<tr>
<td colspan="2"><b>사용일</b></td>
<td colspan="2">9999-12-31</td>
</tr>
<tr>
<td colspan="2"><b>사용량(KWh)</b></td>
<td colspan="2">0 KWh</td>
</tr>
<tr>
<td colspan="2"> <b>정액할인</b> </td>
<td colspan="2">0 원</td>
</tr>
<tr>
<td colspan="2"> <b>정액할인 내용</b> </td>
<td colspan="2">0 원 할인 (월 1만6천원, 여름 2만원 한도)</td>
</tr>
<%--
<tr>
<td colspan="2" align="center"> <b>정률할인(30%)</b> </td>
<td colspan="2"></td>
</tr>
--%>
<tr>
<td colspan="4" align="center">
<b> 요금 계산 </b>
</td>
</tr>
<tr>
<td colspan="4">
① 기본요금 : 7,300 원 (3단계 단가)<br/>
② 전력량요금 : 82,285원 (1~3단계 요금의 합계, 원미만절사) <br/>
<ul>
<li>1단계 : 200kWh × 120.0원 = 24,000원</li>
<li>2단계 : 200kWh × 214.6원 = 42,920원</li>
<li>3단계 : 50kWh × 307.3원 = 15,365원</li>
</ul>
<br/>
③ 기후환경요금 : 450kWh × 9원 = 4,050원 <br/>
④ 연료비조정요금 : 450kWh × 5원 = 2,250원 <br/>
⑤ 전기요금계 : 93,635원 = 7,300원(①) + 82,285원(②) + 4,050원(③) <br/>
⑥ 부가가치세 : 93,635원(④) × 10% = 9,364원 (원미만 반올림)<br/>
⑦ 전력기반기금 93,635원(④) × 3.7% = 3,460원 (10원미만절사)<br/>
⑧ 할인금액 : 0원 <br/>
⑨ 청구금액 : 95,885원(⑤) + 9,589원(⑥) + 3,540원(⑦) - 0원(⑧) = 109,010원 (10원미만절사)
</td>
</tr>
</table>
</body>
</html>
output.jsp
그리고 Controller에 잘 출력되는지 코드를 작성해 확인해보자
@RequestMapping("/input.do")
public String inputPage() {
return "input";
}
@RequestMapping("/output.do")
public String outputPage() {
return "output";
}
서버를 시작해 input.do와 output.do가 잘 되는지 확인해보고 이제 outputPage를 param값을 받는코드로 수정해보자
@RequestMapping("/output.do")
public ModelAndView outputPage(@RequestParam HashMap<String, String> params) {
System.out.println(params);
ModelAndView mv = new ModelAndView();
mv.setViewName("output");
mv.addObject("measureDate", "2024-01-11");
return mv;
}
input에서 파람으로 보낸값이 잘받아지는지 params를 출력해보고
output에 measurDate를 2024-01-11로 입력해서 output에 잘 전달되는지 확인하기위해 output.jsp에 받는 코드로 수정
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.util.*, java.text.*" %>
<%
String measureDate = request.getParameter("measureDate");
%>
<!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=UTF-8">
<title>전기요금 계산</title>
<style>
body { font-size:11px;}
table { border-width: thin; }
</style>
</head>
<body>
${measureDate}
getParameter로 mesureDate값을 가져와 변수 mesureDate에 넣어주고 아래 body안에서 EL표기법으로 mesureDate를 출력해 값이 제대로 나오는제 확인해보면 완성
'공부 > 그룹 스터디' 카테고리의 다른 글
[3회차 02] DBeaver 설치 & 설정 (0) | 2024.04.17 |
---|---|
[3회차 01] Docker 간단 사용법 (0) | 2024.04.16 |
[1회차 0] 초기 세팅 (0) | 2024.04.16 |
[2회차 03] mvc:resources 란? (0) | 2024.04.16 |
[2회차 01] 이클립스 레거시 프로젝트 생성 & 설정 (0) | 2024.04.15 |