본문 바로가기

프로젝트/세미프로젝트-병원 종합정보시스템 사이트13

[오류] 응답이 이미 커밋된 후에는, sendRedirect()를 호출할 수 없습니다. - "응답이 이미 커밋된 후에는, sendRedirect()를 호출할 수 없습니다."라는 오류가 뜬다.    ㅁ 원인- 서블릿이 이미 클라이언트에게 응답을 보낸 후에 sendRedirect()를 호출했을 때 발생.클라이언트에게 HTTP 응답이 완료된 이후에 추가적인 응답을 보내려고 할 때 발생하는 문제.   - 조건문으로 나누긴 했지만 하나의 if~else문이 아닌 2개의 if문에 sendRedirect 메소드가 있다.- 회원정보를 제대로 입력하면 오류가 뜨지 않지만, 잘못 입력하면 아까 같은 오류가 뜬다. - 그 이유는 response.sendRedirect()는 한 번만 호출되어야 하는데, 2번 호출되기 때문이다.- sendRedirect()는 즉시 메소드 실행을 종료하는 것이 아니기 때문에, 메소드.. 2024. 9. 27.
[오류] 빈문자열을 insert하는 경우, java.sql.SQLIntegrityConstraintViolationException - 사용자로부터 text 타입의 input 요소로 값을 받아옴. 값을 입력한 경우에는 오류가 발생하지 않는데 값을 입력하지 않으면 오류가 발생한다.- 분명 빈문자열인데, 오류 내용은 NULL을 NOT NULL 제약조건이 걸린 컬럼에 insert할 수 없다고 한다.   ㅁ 원인 - 데이터베이스는 빈 문자열을 null로 간주할 수 있다.그래서 NOT NULL인 컬럼에 빈 문자열을 넣을 수 없다.  ㅁ 해결  - 빈 문자열의 경우 다른 값이 들어가게 하니 해결되었다. 2024. 9. 27.
[오답] SYSDATE로 INSERT한 데이터가 조회되지 않음 - 진료예약 '추가' 기능으로 오늘 날짜로 예약을 추가했으나, 조회에서 보이지 않음.- 예전 날짜들의 예약은 보이는데 오늘 날짜로 예약을 추가하면 보이지 않는다.    ㅁ 원인 - DATE 타입 필드에서 BETWEEN을 사용할 때, 날짜 비교 시 포함되는 범위 문제.- BETWEEN을 사용할 때 날짜 범위에 포함되는 시간을 고려하지 않으면 오늘 날짜 (2024-09-26)가 검색되지 않을 수 있다. Oracle에서 DATE 타입이 날짜뿐만 아니라 시간까지 포함하고 있기 때문입니다.- BETWEEN 연산자를 사용할 경우, 2024-09-26의 시간까지 포함되지 않으면 검색 범위에 들어오지 않을 수 있습니다.즉, BETWEEN '2009-01-26' AND '2024-09-26'은 2024-09-26 00:.. 2024. 9. 26.
[오류] java.sql.SQLSyntaxErrorException - 의료진 계정을 삭제하는 기능 구현에서 sql 문법 에러 발생.    - String 변수에 주민등록번호를 여럿 담아서, String  배열 형태로 jsp에서 가져왔다.- 배열의 길이만큼 조건을 추가해서 doctor 테이블에서 삭제해야 한다.     (1) 쿼리  DELETE   FROM                DOCTORWHERE                   USER_NO IN ( SELECT USER_NO FROM MEMBER WHERE USER_SSN = ?                                        , SELECT USER_NO FROM MEMBER WHERE USER_SSN = ?                                        , SEL.. 2024. 9. 23.
[오답] Map 객체가 덮어씌워지는 문제 - 의료진 계정 검색 결과가 여러 행인 경우, 마지막으로 검색된 데이터로 다 덮어씌워지고 있다.     - DoctorDao.java는 이렇게 작성되어 있다. - 요청시 넘어온 진료과 값이 '전체' 일경우 조건 없이 select 하고, 특정 진료과 값이 있다면 그 값을 조건으로 select 한다.- 쿼리를 실행한 결과를 doctor, member 두 vo 객체에 나눠 담는다.- 두 vo 객체를 Map 객체에 담는다. "doctor"라는 key 값을 제시하면 Object로 형변환된 Doctor 객체가 나오고,"member"라는 key 값을 제시하면 Object로 형변환된 Member 객체가 나온다. - 서블릿에서 응답페이지로 이동시키면서 이동 데이터로 List> list를 담는다.- jsp에서 > list.. 2024. 9. 22.
[오류] java.lang.Error: Unresolved compilation problem -  java.lang.Error: 해결되지 않은 컴파일 문제: sql 변수를 찾을 수 없습니다   ㅁ 오류 원인  - if 조건문으로 진료과로 '전체'를 선택하면 그냥 쿼리를 실행하고, 진료과로 '외과', '내과', '치과', '안과'를 선택하면 if문으로 sql문에 조건을 추가하게끔 작성했다.- if 블록이든 else 블록이든 변수 sql은 생기는데 왜 오류가 나나 했는데, 블록 내에 선언해서 바깥에선 쓸 수 없었다. - Java에서 변수의 스코프(scope) 규칙. 변수는 선언된 블록 내에서만 접근할 수 있다.if-else 블록 내에서 변수를 선언하면 그 변수는 그 블록 내에서만 유효해서 다른 블록에서 접근할 수 없다.    ㅁ 해결  - 변수 sql을 if~else 블록 바깥에 선언한다.    -.. 2024. 9. 22.
[오류] java.lang.NullPointerException ㅁ manageMember.jsp   - 회원 계정 관리 페이지에서는 db로부터 회원 이름이나 회원 아이디로 Member 테이블에서 회원 정보를 조회해온다.- 그런데 이 페이지로 이동하는 "/manageM.admin" 서블릿을 요청하면 null pointer exception이 발생한다.      ㅁ 오류 원인   -  "/manageM.admin"이라는 url mapping 값을 가지는 서블릿에서 응답 데이터 없이 응답페이지로 이동만 시켜놨다.   %ListMember> list = (ListMember>)request.getAttribute("list");%>    - 그런데 응답페이지인 manageMember.jsp에서는 request로부터 "list"라는 key값을 가지는 Object를 꺼낸다. .. 2024. 9. 22.
쿼리들 ㅁ *-mapper.xml에 쿼리 쓸 때 끝에 ; 없어야 한다.   ㅁ 2_1. 의료진 계정 검색 요청 (이름)  (1) 넘기는 값- 의사명 (2) 가져와야 하는 값- DOCTOR: 사번, 이름,  면허번호, 진료과, 입사일- MEMBER : 주민등록번호,  전화번호, 주소 (3) 쿼리 SELECT DOCTOR_NO, DOCTOR_NAME, LICENCE_NO, DEPT_NAME, HIRE_DATE, USER_SSN, PHONE, ADDRESS FROM DOCTOR JOIN MEMBER USING (USER_NO) WHERE DOCTOR_NAME=? ; (4) 쿼리 예시 SELECT DOCTOR_NO, DOCTOR_NAME, LICENCE_NO, DEPT_NAME, HIRE_DATE, USER_SSN, .. 2024. 9. 20.
modal이 바로 열렸다 닫힘 ㅁ modal이 바로 열렸다 닫힘- '추가용 modal', '삭제용 modal', '수정용 modal'이 있다.- 그런데 '수정용 modal'은 정상적으로 뜨는데 '추가용 modal', '삭제용 modal'은 열리자마자 바로 닫히는 현상이 발생.이전까지 잘 되다가 갑자기 이런다.  - 원인 : form 요소의 action 속성이 비어 있는 경우에 발생합니다. 이 상황에서 모달이 열리자마자 폼이 제출되면서 모달이 닫히는 것이 원인일 수 있다.(html 화면구현 파일이라 비워놨었다)  - 해결 : form 요소의 action 속성에 #을 줬더니 해결됐다. 2024. 9. 13.
DB 피드백 ㅁ 수정 전        ㅁ 피드백    (피드백 1) 회원테이블 ㅡ 법정대리인이름추가(null) 의료진 ㅡ 면허번호컬럼추가 로그인시 사용자,의료진,관리자 나누어지고 마이페이지 이동시 마이페이지,의료진페이지,관리자페이지 이동 의료진테이블안에 진료과추가(매번 조인하기가 번거로움),진료과위치도 추가 근무일정 ㅡ 관리자측에서 신규의료진 등록시 근무일정 테이블도 같이 insert 진행하기 (의료진쪽에서 근무일정 등록시 update진행) 고객의소리 ㅡ 칭찬직원,부서 컬럼추가(null허용) 회신여부 컬럼추가 고객의소리답변 ㅡ 고객의소리 테이블에 합치기 답변자번호,답변일(null허용) 건강검진예약내역 ㅡ  기업번호 not null에서 null로 변경 희망검진일(varchar2) 희망내원시간(오전/오후) 예약일(db에.. 2024. 9. 13.
이미지 안보임 ㅁ header.jsp를 html로 바꿨을 때 이미지가 엑박으로 뜨는 문제 (경로 문제)    - 팀원에게 "header.jsp"를 받아서, body 태그 안의 header start ~ header end 부분을 복붙해서"관리자홈.html"로 화면구현을 하려하는데 이미지가 보이지 않는다. - 생각해보면 이클립스로 프로젝트를 만들고 올리기 전 테스트할 때도, 이미지가 안보여서 이미지 경로를 바꿨었다.그때 저렇게 "/vita/assets/image/vp마크.png"로 바꿨었다.     - 화면구현할 때는 context path를 사용한 절대경로로 이미지 파일 경로를 주지않고다시 상대경로로 바꾸니 이미지가 보인다. 2024. 9. 12.
피드백 (p.79) 피드백1. 기업 건강검진 연계기업 목록을 관리자가 추가/삭제하는 기능 - 추가하겠습니다. (p.79) 피드백2. 예약관리 상세페이지 - 상세페이지 없이, 예약 관리 페이지에서 예약체크사항이 보여지게 추가하겠습니다. (p.80) 피드백3. 관리자의 예약 추가 - 전화로 예약 받으면 관리자가 추가하는 기능입니다.  - 건강검진 예약은 회원이어야만 가능하도록 하겠습니다. 그래서 고객 ID는 필수로 받겠습니다. - 예약 체크사항은 병원 방문시 수기로 입력받겠습니다. (p.83) 피드백4. 진료과 - 진료과는 4개 고정이며, 따로 추가하거나 삭제하지 않습니다. (p.85) 피드백5. 의료진 계정 - 의료진 계정은 관리자가 만들어서 줍니다. - 관리자가 의료진 계정 추가시, 의료진 ID와 비밀번호 입력.. 2024. 9. 7.
DB 설계 ㅁ 회원 테이블 - 아이디, 이름, 주민등록번호, 주소, 핸드폰번호, 회원가입일 - 회원번호 ㅁ 의료진 테이블 - 사번, 이름, 주민등록번호, 진료과, 면허번호, 전화번호, 주소, 입사년도 ㅁ 진료 예약 내역 테이블 - 진료과, 의료진, 날짜, 예약시간(오전/오후), 이름, 핸드폰번호 ㅁ 건강검진 예약 내역 테이블 - 날짜, 예약시간(오전/오후), 예약번호, 회원번호, 이름, 핸드폰번호, 검진유형(일반 건강검진(개인), 기업 건강검진(특수) ㅁ 관리자 테이블 - 데이터 하나 - 아이디, 비밀번호, 관리자번호 ㅁ q&a 답변 테이블 - q&a 게시글 번호, 제목, 글쓴이, 작성시간,  - 답변 내용  ㅁ 공지사항 테이블 - 번호, 제목, 글쓴이, 날짜, 조회수, 내용  = 이름, 핸드폰번호등은 이미 회원 .. 2024. 9. 5.