2019백업

7) 전자정부 프레임워크 값 주고받는 3가지 방법

728x90

1. HttpServletRequest 방식

2. VO 방식

3. @RequestParam을 이용하는 방식

 

index.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ page session="false" %>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<html>

<head>

<title>index</title>

</head>

<body>

<h1>

전자정부프레임워크(Spring) 값 주고 받는 3가지 방법

</h1>

 

<form id="frm" name="frm">

<input type="hidden" id="pageName" name="pageName"/>

<input type="text" id="m_id" name="m_id"/>

 

<table>

<tr>

<td>1.HttpServletRequest방식 </td>

<td><input type="button" name="btn1" value="방식1" onclick="javascript:header.pageSubmitFn('firstMethod','frm')"></td>

</tr>

<tr>

<td>2.VO방식 </td>

<td><input type="button" name="btn2" value="방식2" onclick="javascript:header.pageSubmitFn('secondMethod','frm')"></td>

</tr>

<tr>

<td>3.@RequestParam 이용하는 방식 </td>

<td><input type="button" name="btn3" value="방식3" onclick="javascript:header.pageSubmitFn('thirdMethod','frm')"></td>

</tr>

</table>

</form>

</body>

<script>

var header = {

pageSubmitFn : function(pageName, form) {

$("#pageName").val(pageName); //input 태그의 value를 설정한다.

$("#"+form).attr("action",pageName+".do");

$("#"+form).submit();

}

}

</script>

</html>

1. HttpServletRequest 방식

 @RequestMapping에서 해당하는 url를 받아주고 해당하는 메소드를 자동 호출한다.

 (ex. @RequestMapping(value="hihi.do") public String hehe(~~){~~} => hehe 자동호출)

코드

@RequestMapping(value="firstMethod.do")
public String initParam1(HttpServletRequest request, ModelMap model, @RequestParam String pageName) throws Exception {
// Map<String, Object> paramMap = new HashMap<String, Object>();
//  server의 server파일에 utf-8 설정해야함? 한글 깨진다구?
// request.setCharacterEncoding("utf-8");
// 한글이 왜 되냐..

String param = request.getParameter("m_id");
logger.info("firstMethod에 들어온 아이디 값: "+ param, param);

List serviceList = member_dao.memberSelect(param);
model.addAttribute("serviceList", serviceList);
model.addAttribute("pageName", pageName);
return "result";
}

1) jsp에서 $("#"+form).attr("action",pageName+".do"); $("#"+form).submit(); 자바 스크립트 구문을 통해 url을 호출한다.

2) HttpServletRequest request를 사용하여 값을 받고

3) ModelMap model에 add.Attribute()를 사용하여 키:값을 넣어준다.

2. VO 방식

객체 자체가 이동하는 방식

VO의 필드명과, form태그 안의 name이 일치하여야한다.

 

코드

//VO방식
@RequestMapping(value="secondMethod.do")
public String initParam2(@ModelAttribute Member member, ModelMap model, @RequestParam String pageName) throws Exception {
logger.info("secondMethod에 들어온 아이디 값: "+ member.getM_id(), member.getM_id());

List serviceList = member_dao.memberSelect2(member);
model.addAttribute("serviceList", serviceList);
model.addAttribute("pageName", pageName);
return "result";
}

1) jsp에 <input type="text" id="m_id" name="m_id"/> 에서의 name과 Member.java의 변수들이 같다.

@ModelAttribute를 사용하면 자동으로 setter을 호출해 값을 넣어준다. (안넣어줘도 해주던데 ..? 왜지)

 

2) xml에 값을 넣기위해 member_dao.java의 memeberSelect2에 객체를 넣어주어도 xml에서 자동으로 이름이 같은 변수를 찾아 매핑해준다.. 

 

memberMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace 선언 -->

<mapper namespace="memberMapper">

<select id="memberSelect" parameterType="String" resultType="Member">

SELECT * from member where m_id = #{m_id};

</select>

 

<select id="memberSelect2" parameterType="Member" resultType="Member">

SELECT * from member where m_id = #{m_id};

</select>

 

</mapper>

3. @RequestParam을 이용하는 방식

단일 값을 받을 때 좋은 방식? 

 

1번 방식의 코드 처럼

1) jsp input type의 name과 initParam1 함수 인자에 들어가는 이름이 동일해야한다.

2) public String initParam1(@RequestParam String pageName)  인자에 넣어준다.

3) model.addAttribute("pageName", pageName); 를 통해 전달한다.

 

 

출처) https://pjh3749.tistory.com/134   

 

 

반응형

'2019백업' 카테고리의 다른 글

8) Session에 넣어 전달하기  (0) 2019.06.26
스프링 프로젝트 가이드 진행  (0) 2019.06.25
6) Bean 의존관계 설정  (0) 2019.06.25
5) Spring Test와 Junit  (0) 2019.06.25
4-2) DI 애플리케이션 작성 - JUnit  (0) 2019.06.25