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 |