ajax로 데이터 전달/응답 받는법
2019-01-15 00:00:00 +0000데이터 전달 주의사항
- JavaBeans는 sevlet이란 Controller가 없을 때, jsp에서 jsp로 데이터를 전달할 때 사용한다.
- servlet을 Controller로 사용한다면 Attribute에 데이터를 저장하고 cos라이브러리를 사용해 ${AttributeName} 처럼 간단하게 사용할 수 있다
ajax요청 처리 순서
ajax 요청
$.ajax({
url:'projectBoardRead.do',
data: {"project_id":project_id},
dataType:'json',
success:function(data){
console.log("성공");
}
list를 Attribute에 넣어줌
forward.setRedirect(false);
forward.setPath("/jsp/module/schedule/calenderListJsonParse.jsp");
data를 json으로 변환
- java에서 해도 되지만 간편하게 하기위해 jsp 사용
- < html > 같은 태그는 전부 삭제해야 한다
- out.println도 사용하면 안된다(에러의 원인이 될 수도 있음)
- 반드시 하나의 list만 된다(Attribute를 두개 넣지 않는다)
- 왜냐하면 json은 서로 다른 데이터를 받으면 parsing 하지 못하기 때문이다
- json 변환을 해서 ajax 요청 성공 시 데이터를 간편하게 parsing할 수 있다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="kosta.model.module.vo.ScheduleCalender"%>
<%@page import="kosta.model.module.vo.ScheduleCategory"%>
<%@page import="java.util.List"%>
<%@page import="net.sf.json.JSONArray"%>
<%@page import="java.util.ArrayList"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%!
List<ScheduleCategory> category_list;
List<ScheduleCalender> calender_list;
%>
<%
category_list = (List<ScheduleCategory>)request.getAttribute("categoryList");
//System.out.println("list: " + category_list.size());
//calender_list = (List<ScheduleCalender>)request.getAttribute("calenderList");
//out.println(category_list);
System.out.println(JSONArray.fromObject(category_list).toString());
out.println(JSONArray.fromObject(category_list).toString());
%>
json 데이터 출력
- 이미 json으로 변경했으므로 따로 json으로 변환할 필요 없음
- ajax 요청 성공 시 json으로 데이터 변경은 안되는지 궁금
if(false == data[i].isNull("category_id"))
console.log(data[i].category_id);
json 사용 시 필요한 라이브러리
- commons-beanutils.jar
- commons-collections-3.2.jar
- commons-lang-2.4.jar
- commons-logging-1.1.jar
- ezmorph-1.0.6.jar
- json-lib-2.3-jdk13.jar
mybatis error
2019-01-08 00:00:00 +0000Mybatis 에러 정리
Error registering typeAlias for ‘Board 에러
Error building SqlSession.
The error may exist in SQL Mapper Configuration
Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error registering typeAlias for 'Board'. Cause:
- MyBatis Config에 typeAliases에 선언된 class를 찾을 수 없다는 에러. 확인해보니 Config 에서 class명을 잘못적어서 수정하였다
부적합한 열 유형 1111 에러
g.apache.ibatis.exceptions.PersistenceException:
Error updating database. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111
- servlet에 넘어온 데이터가 NULL이었고 NULL 데이터를 사용하려고 해서 발생
invalid character 에러
Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
The error may involve kosta.mapper.BoardMapper.insertBoard-Inline
The error occurred while setting parameters
SQL: insert into board values(board_seq.nextval, ?, ?, ?, sysdate, 0);
Cause: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
- db 쿼리문 끝에 세미콜론(;)을 붙임
The Network Adapter could not establish the connection
The error may exist in kosta/mapper/Board.xml
The error may involve kosta.mapper.BoardMapper.selectList
The error occurred while executing a query
Cause: java.sql.SQLException: Cannot create PoolableConnectionFactory (IO 오류: The Network Adapter could not establish the connection)
- 오라클 서비스가 꺼져있었다
mybatis 게시판 만들기 순서
2019-01-02 00:00:00 +0000게시판 만들기 정리
파일 작성순서
- xml 파일 작성
- ado 작성
- jsp 작성
게시물 삭제 추가하기
- 데이터 추가,삭제에 따라 태그명이 달라진다. 삭제 태그명은 delete이다
- xml에 id명(함수명), parameter, return 값을 생각하고 정의한다
- 태그의 id는 ado 함수명과 일치시켜야 한다
<delete id="deleteContents" parameterType="int">
delete from board where seq = #{seq}
</delete>
- mapperClass에 삭제 함수선언
int deleteContents(int seq);
- dao 삭제 함수 추가
public int deleteContents(int seq){
SqlSession sqlSession = getSqlSessionFactory().openSession();
int re = -1;
try{
re = sqlSession.getMapper(BoardMapper.class).deleteContents(seq);
if(re > 0){
sqlSession.commit();
}else{
sqlSession.rollback();
}
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return re;
}
- jsp 수정. 삭제 링크를 누르면 게시물이 바로 삭제되도록 한다
- get방식으로 parameter를 전달한다
<td><a href="delete.jsp?seq=<%= board.getSeq() %>">삭제하기</a></td>
- 삭제링크 클릭 시 이동하는 delete.jsp 파일을 만든다
- dao 객체의 데이터 삭제 함수를 호출한다.
<%
int seq = Integer.parseInt(request.getParameter("seq"));
BoardDao2 dao = BoardDao2.getInstance();
int re = dao.deleteContents(seq);
if(re > 0)
out.println("삭제 성공");
else
out.println("삭제 실패");
%>
Java Jsp Mybatis Dynamic Query
2019-01-02 00:00:00 +0000동적쿼리
동적쿼리란?
- db 데이터를 crud할 때 조건이 변할 수 있다
- 제목으로 게시물 검색, 작성자이름으로 게시물 검색이 있을 때 조건이 제목, 작성자 이름 둘 중하나로 바뀐다
- 이 때 조건이 계속 바뀌므로 동적 쿼리를 사용해서 조회해야한다
- 아래 예제에서 foreach는 조건이 여러개일 때(ex 체크박스) 사용한다
- collection은 foreach로 돌때마다 선택되는 객체를 의미한다. area 객체 개수만큼 foreach문이 돈다
- item은 구분하기 위한 임의의 이름이다
- separator은 반복되는 사이에 출력할 구문이다
Source
<select id="listBoard" resultType="Board" parameterType="Search">
select * from board
<if test="area">
<where>
<!--( title LIKE %aa% OR writer LIKE %aa% )-->
<foreach collection="area" item="item222" separator="OR" open='(' close=')'>
<!-- $로해줘야한다 상수처럼 리터럴 상수처럼 사용되어야 한다. 변수가 되면 안되기 때문에 #->$ -->
${item222} LIKE #{searchKey}
</foreach>
</where>
</if>
</select>
mybatis
2019-01-01 00:00:00 +0000MyBatis
MyBatis란
- 프레임워크란 잘 짜여진 하나의 틀
- 일관성 있는 코드를 사용할 수 있다
- Low Level의 고민들을 개발자가 고민하지 않아도 된다(핵심 비즈니스 로직에 집중)
- jpa,hibernate
- db에 쉽게 접근하고 데이터를 쉽게 가져오기 위해 사용(jdbc)
- Row의 결과값을 가지고 자바 오브젝트를 매핑을 한다
Object Relational Mapping(ORM) Framework
- jpa, hibernate
- 각 테이블과 1:1 매칭관계
- 테이블과 테이블이 join되면 실제 자바 오브젝트도 join되어야 함
MyBatis 정보
- mybatis-config.xml 에 MyBatis의 모든 정보가 들어가 있음
- mybatis-config.xml에 있는 정보를 가져오고 sqlSession 정보를 뽑는다. 그리고 Mapping한 함수를 호출해서 query를 실행시킨다
Mapper방식
- 고유한 이름으로 메서드를 만드는 방식
- xml파일을 추가하고 각 함수에 따라 query문을 만든다. interface도 추가해서 함수를 정의한다
JSTL
- DB에서 조건문을 주지 않고 JSTL 문을 사용할 수 있다
MyBatis 라이브러리 추가
- myBatis download url
- mybatis-3.2.6.jar tomcat lib 폴더에 추가(프로젝트 폴더서 추가되었는지 확인할 것)
- jdbc lib 위치 : C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
- oracle에 있는 jdbc lib를 tomcat lib 폴더에 넣는다
- ‘mybatis-config.xml’ 파일을 src 폴더 밑에 놓는다
Posts
-
Interceptor(인터셉터)
-
Android Studio Install
-
계층형 게시판
-
VirtualBox Ubuntu 18.04.2 LTS
-
TransactionAwareDataSourceProxy Error
-
Java Coding Conventions
-
Java Long과 long의 차이
-
Mybatis 객체 안에 객체 매핑
-
JavaConfig mariadb 연결
-
DataTable
-
관리자 페이지
-
MappingJackson2JsonView
-
Spring Javaconfig
-
게시판 만들기-제품 등록
-
게시판 만들기-제품 페이지 제작
-
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
-
footer 하단에 고정시키기
-
bootstrap4 사용법
-
Spring 데이터 검증 @Valid, BindingResult
-
brackets 실시간 미리보기
-
Spring 기본설정(pom.xml, web.xml, encoding)
-
Vue.js computed, methods, watch
-
javascript onkeyup
-
Maria DB Incorrect string value Error
-
javascript 암호화(md5, base64)
-
Vue.js template
-
Vue.js 소개
-
Nexacro 설명
-
ControllerAdvice
-
Batch
-
html 페이지 로딩 순서
-
소수구하기(PrimeNumber)
-
최소공배수,최대공약수
-
Stream
-
Lambda(람다식)
-
inner class(내부 클래스)
-
final 키워드
-
file upload
-
파이썬 빅 데이터 K-평균(K-means)
-
아나콘다(Anaconda), 주피터 개발환경 세팅
-
텐서플로우(TensorFlow) 아키텍쳐 및 Session
-
텐서플로우(TensorFlow)상수, 변수, 함수
-
머신러닝 기초
-
한글 리스트 오름차순, 내림차순
-
연속된 글자의 갯수 출력
-
java spring5 프로젝트 설정
-
restController
-
spring 세팅 및 기본설정
-
mybatis trim
-
jquery datepicker
-
ajax로 데이터 전달/응답 받는법
-
mybatis error
-
mybatis 게시판 만들기 순서
-
Java Jsp Mybatis Dynamic Query
-
mybatis
-
git 소개
-
node.js 개발환경 구축
-
node.js 기본 내장 모듈
-
node.js의 전역 객체
-
node.js http module
-
node.js event
-
jdbc
-
자바빈
-
jsp, servlet 정리
-
java null object pattern
-
다음지도 key 등록(kakao map)
-
공공 데이터 open api
-
facebook login api
-
sourcetree 사용법
-
JavaScript event3
-
JavaScript jquery
-
JavaScript dom
-
JavaScript ajax
-
JavaScript 이벤트2
-
JavaScript 캡슐화
-
JavaScript Array,내장객체
-
JavaScript var
-
JavaScript 객체,생성자
-
JavaScript 함수,클로저
-
JavaScript Event
-
javascript eclipse 자동완성(with tern)
-
CSS position
-
HTML5,CSS 선택자
-
자바 시간 측정
-
git,eclipse 연동
-
HTML 기초 정리
-
Eclipse Web 환경세팅
-
피보나치의 수
-
Oracle 반복문,커서,예외,저장 서브프로그램
-
Oracle PL/SQL
-
Oracle 다중쿼리(Multiple row query)
-
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
-
Oracle JOIN 정리
-
Oracle DDL, DML 정리
-
Oracle 문자열 함수 정리
-
Oracle 숫자,날짜,자료형 변환 함수 정리
-
Oracle 제약조건 정리
-
Oracle 기초 쿼리 정리
-
문제2775
-
DFS
-
junit
-
json
-
algorithmus basic
-
circular queue(원형큐)
-
binary search(이진탐색)
-
port forwarding(포트포워딩)
-
kakao chatbot(카카오 챗봇)
-
java io
-
sort comparable, comparator
-
Unresolved compilation problem
-
ArrayList, HashMap
-
Regular(정규표현식)
-
Enum Class
-
String Function
-
refactoring 이란(상수,제어플래그,assert)
-
reference,abstract 정리
-
FileNotFoundException Solve
-
static
-
Thread Synchronization(스레드동기화,원자성)
-
Java Exception(예외처리)
-
Java 생성자, this, super
-
roomnum
-
BeeHouse
-
Git Reset, Revert
-
Git Log
-
Array
-
stack
-
pyramid draw
-
Star Draw(별 그리기4)
-
Star Draw(별 그리기3)
-
Star Draw(별 그리기2)
-
Star Draw(별 그리기1)
-
Loop(While, For)
-
자바 데이터 타입, 데이터 연산
-
시계방향 달팽이 그리기
-
정수값의 짝수,홀수 갯수 구하기
-
java, Scanner 정리
-
draw dog
subscribe via RSS