2024_0717_SpringParameter [ADD] Spring Parameter
GitHub - chaSunil/FirstProject: 1차 프로젝트
1차 프로젝트. Contribute to chaSunil/FirstProject development by creating an account on GitHub.
github.com
servlet-context.xml에 추가
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<!-- CSS/Javascript/Image.... -->
<resources mapping="/resources/**" location="/resources" />
<resources mapping="/**" location="/" />
html 작성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function send1(f) {
// 입력값 체크
f.action = "insert1.do";
f.submit();
}
function send2(f) {
// 입력값 체크
f.action = "insert2.do";
f.submit();
}
function send3(f) {
// 입력값 체크
f.action = "insert3.do";
f.submit();
}
</script>
</head>
<body>
<form>
<table border="1">
<tr>
<th>이름</th>
<td><input name="name" value="홍길동"></td>
</tr>
<tr>
<th>나이</th>
<td><input name="age" value="20"></td>
</tr>
<tr>
<th>전화</th>
<td><input name="tel" value="010-1234-1234"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="button" value="낱개로 받기" onclick="send1(this.form);">
<input type="button" value="객체로 받기" onclick="send2(this.form);">
<input type="button" value="Map으로 받기" onclick="send3(this.form);">
</td>
</tr>
</table>
</form>
</body>
</html>
Controller 작성
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ParamTestController {
public ParamTestController() {
// TODO Auto-generated constructor stub
System.out.println("--ParamTestController()--");
}
// /insert1.do?name=홍길동&age=20&tel=010-1234-1234
@RequestMapping("/insert1.do")
public String insert1(String name, int age, String tel, Model model) {
// 메소드의 인자 : DispatcherServlet에 대한 요구사항
// model통한 request binding
model.addAttribute("name",name);
model.addAttribute("age",age);
model.addAttribute("tel",tel);
return "result1";
}
}
parameter의 값과 Argument의 변수명과 동일하지 않아도 parameter 값을 넘기는방법
parameter명과 수신될 변수명이 틀릴경우 생략(parameter명과 동일한 변수명에 값을 넣어준다
required = 요구하다 true일 시 무조건 있어야한다, false일 경우 parameter 값이 없어도 된다.
defaultValue는 parameter 값이 안넘어올 경우 "한국"으로 출력시켜준다.
// /insert1.do?name=홍길동&age=20&tel=010-1234-1234
@RequestMapping("/insert1.do")
// parameter명과 수신될 변수명이 틀릴경우
// 생략(parameter명과 동일한 변수명에 값을 넣어준다)
public String insert1(@RequestParam(name="name") String irum,
int age,
String tel,
@RequestParam(name="nation", required = false, defaultValue = "한국") String nation,
Model model) {
// 메소드의 인자 : DispatcherServlet에 대한 요구사항
// model통한 request binding
model.addAttribute("name",irum);
model.addAttribute("age",age);
model.addAttribute("tel",tel);
model.addAttribute("nation",nation);
return "result1";
}
Vo로 parameter값 받기(DispatcherServlet이 parameter로 넘긴 데이터를 vo로 포장해준다)
살짝 생성해봤어 나
// /insert2.do?name=홍길동&age=20&tel=010-1234-1234
@RequestMapping("/insert2.do")
public String insert2(PersonVo vo, Model model) {
// 각 parameter를 받기 -> Vo생성후 값을 넣어주고->전달
// 메소드 인자 : DispatcherServlet에 대한 요구사항
// request.binding
model.addAttribute("vo",vo);
return "result2";
}
살짝 복붙해봤어 나
<%@ 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>
<hr>
객체(PersonVo)로 받기 결과
<hr>
이름 : ${ requestScope.vo.name }<br>
나이 : ${ requestScope.vo.age }<br>
전화 : ${ vo.tel }<br>
<a href="input.html">다시하기</a>
</body>
</html>
Map으로 객체 받기
// /insert3.do?name=홍길동&age=20&tel=010-1234-1234
@RequestMapping("/insert3.do")
public String insert3(@RequestParam Map map, Model model) {
model.addAttribute("map",map);
return "result3";
}
살짝 복사해봤어 나
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<hr>
Map으로 받기 결과
<hr>
이름 : ${ requestScope.map.name }<br>
나이 : ${ requestScope.map.age }<br>
전화 : ${ map.tel }<br>
<a href="input.html">다시하기</a>
<hr>
Map forEach이용 출력
<hr>
<c:forEach var="entry" items="${ map }">
parameter name : ${ entry.key } value: ${ entry.value }<br>
</c:forEach>
</body>
</html>
ip 넣는방법 ㅋㅋ(HttpServletRequest request)를 Argument로 넣어준다.
request.getRemoteAddr(); 로 ip를 변수값에 저장해준뒤, model.addAttribute("ip",ip) 하여 넘겨준다.
// /insert3.do?name=홍길동&age=20&tel=010-1234-1234
@RequestMapping("/insert3.do")
public String insert3(@RequestParam Map map, Model model, HttpServletRequest request) {
String ip = request.getRemoteAddr();
model.addAttribute("map",map);
model.addAttribute("ip",ip);
return "result3";
}
매번 이렇게 Argument 값에 HttpServletRequest request를 넣어주는것도 일이다.
@Autowired를 사용해봐!!! 자동엮기기능이 있습니다.
Session 또한 저렇게 얻어올 수 있다.
발생오류 조심
'SpringBoot↗' 카테고리의 다른 글
Spring MVC Mybatis DB 사용해보기 (0) | 2024.07.18 |
---|---|
Spring DB 데이터베이스 연동(설정 세팅) (0) | 2024.07.18 |
[오류해결]Spring Maven 라이브러리 충돌 일어날 때 (0) | 2024.07.17 |
진짜요점핵중요 A (DisPatcherServlet 작동움직임 세부구조) (0) | 2024.07.17 |
!!! Spring 초기 설정만 !!! 한 번 더! 리턴즈 !! !!! (0) | 2024.07.16 |