일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- excel중복체크
- push오류
- Excel
- toFixed()
- Git
- 파일질라설치
- 주석이 먹히지 않을 때
- removeClass
- Math.round()
- FileZilla설치
- 1521
- 파일질라다운로드
- Math.ceil()
- hide
- calc.minus
- Parent
- SUB함수
- addClass
- 파일질라설치오류
- ctrl+/
- 증가값
- FileZilla다운로드
- calc.plus
- is_check
- index %
- selectoptions
- 소스트리인증실패
- slideUp
- selectedIndex
- Math.floor()
- Today
- Total
잡동사니에도 사랑을
[21.10.27] 우편번호 검색 및 글쓰기(JSTL 정의) 본문
1) 우편번호 검색 - (2)
view → controller → service → DAO → DB 순으로 데이터를 전달한다.
저번 시간에 이어서 우편번호 검색 기능을 좀더 세부적으로 정리해나가는 시간을 갖도록 하자.
////////command.properties
////////CheckPost.java
package member.service;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.control.CommandProcess;
import member.bean.ZipcodeDTO;
import member.dao.MemberDAO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class CheckPostSearchService implements CommandProcess {
@Override
public String requestPro(HttpServletRequest request, HttpServletResponse response) throws Throwable {
//데이터
String sido = request.getParameter("sido");
String sigungu = request.getParameter("sigungu");
String roadname = request.getParameter("roadname");
System.out.println(sido + "," + sigungu + "," + roadname);
//DB
List<ZipcodeDTO> list = null;
if (sido != null && roadname != null) {
MemberDAO memberDAO = MemberDAO.getInstance();
list = memberDAO.getZipcodeList(sido, sigungu, roadname);
System.out.println("list=" + list); // 클래스명@16진수 이런 식으로 나오지 않고 [~~~, ~~~, ~~~] 이런식으로 보인다.
}
// list -> json으로 변환 (jar파일 넣어주기)
JSONObject json = new JSONObject(); // json 객체
if (list != null) {
JSONArray array = new JSONArray(); // json Array
for (ZipcodeDTO zipcodeDTO : list) {
JSONObject temp = new JSONObject(); // json 객체
temp.put("zipcode", zipcodeDTO.getZipcode());
temp.put("sido", zipcodeDTO.getSido());
temp.put("sigungu", zipcodeDTO.getSigungu());
temp.put("yubmyundong", zipcodeDTO.getYubmyundong());
temp.put("ri", zipcodeDTO.getRi());
temp.put("roadname", zipcodeDTO.getRoadname());
temp.put("buildingname", zipcodeDTO.getBuildingname());
// 배열에 담아주자
array.add(temp);
} //for
// json 객체에 붙이자
json.put("list", array);
}
System.out.println("json=" + json);
request.setAttribute("list", json);
return "/member/checkPostSearch.jsp";
}
}
////////CheckPostSearchService.java
결과를 잠깐 보면,
※ ERROR !!!
Could not set parameters for mapping: ParameterMapping{property='email1', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #5 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111 |
프로그래밍을 하다보면 Error를 심심치 않게 발견할 수 있다.
에러 발생 시 빠르게 파악하고 해결하기 위해선 여러 Error 유형을 많이 접해봐야 하는데,
1시간동안 발목 붙잡은 Error 하나를 짚고 넘어가보자.
메시지 중간에 보면 Error setting null for parameter #5 라고 되어 있다.
이는 mybatis 로 넘어온 파라메터 값 중 5번째에 해당되는 값 #5 이 NULL 이어서 발생하는 에러이다.
파라메터 값을 불러오고 저장하는 클래스 파일인 WriteService.java에
String name = request.getParameter("name");
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String gender = request.getParameter("gender");
String email1 = request.getParameter("email1");
...
다음과 같이 설정해주었었는데, 여기서 다섯번째 값인 email1이 email로 오타가 나있어 에러가 발생하였다.
2) 글쓰기
////////menu.jsp
*주요 내용 :
→ 아이디 입력 시에만 글쓰기 버튼이 활성화될 수 있도록 기능을 변경해주었다.
<c:if> 태그를 사용하려면 taglib를 잡아줘야 한다.
여기서 JSTL에 대해 다시 한번 짚고 넘어가도록 하자.
JSTL 이란 표준 태그 라이브러리이며, 자신만의 태그를 추가할 수 있는 기능을 제공한다.
자바에서 import문을 선언하듯 JSP에서도 JSTL 확장 태그를 사용하려면 taglib 지시자로 라이브러리를 선언해줘야 한다.
<%@ taglib prefix="접두사" uri="URI" %>
주로 Core에서 c를 사용하여 <c:if>, <c:forEach> 등으로 사용한다.
JSTL 라이브러리 jar 파일이 반드시 필요하며, jar 파일을 WEB-INF/lib에 넣고,
JSTL을 사용하고자 하는 jsp 파일에 "커스텀 액션을 사용하겠다" 라는 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>을 기입해 정의를 선언해준다.
JSTL 태그 종류
1) c:out (prefix="c") - 변수의 값 출력
<c:out value="출력값" default="기본값" />
<c:out value="출력값">기본값</c:out>
2) c:set (prefix="c") - 변수에 값을 저장. setAttribute와 동일한 역할.
<c:set var="변수명" value="값" scope="page(기본값)" />
<c:set var="변수명" scope="page(기본값)">값</c:set>
기본값 -> request / session / application
3) c:forEach (prefix="c") - 범위 안에서 반복문 수행. for와 동일한 역할.
<c:forEach var="변수명" items="목록데이터" begin="시작인덱스" end="종료인덱스">콘텐츠</c:forEach>
4) c:if (prefix="c") - 조건문 수행. if와 동일한 역할
<c:if test="조건식" var="변수명" scope="page(기본값)">내용</c:if>
5) c:remove : 보관소에 저장된 값 제거
<c:remove var="변수명" scope="page(기본값)" />
////////command.properties
→ key 값을 입력하면 value가 실행할 수 있도록 구성을 만들어준다.
////////boardWrite.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<script type="text/javascript">
window.onload=function(){
alert("글쓰기 성공");
}
</script>
[결과]
'JAVA_EE > MVC+JQuery+Mybatis' 카테고리의 다른 글
[21.11.01] (0) | 2021.11.01 |
---|---|
[21.10.28] 글쓰기와 목록( (0) | 2021.10.28 |
[21.10.26] MQBProject (0) | 2021.10.26 |
[21.10.26] (0) | 2021.10.26 |
[21.10.25] (MQBProject) (0) | 2021.10.25 |