국비지원

22/05/02 수업정리

야생늑대 2022. 5. 2. 20:39
반응형

현재 수업에 사용되는 소스들

 

회원가입과 회원목록 출력페이지로 이동을 위한 메인웹페이지   inputTest01.jsp

회원가입 성공과 회원목록출력을 위한 웹페이지    Success.jsp

가입실패했을 때를 위한 웹페이지 Fail.jsp

데이터 제어를 위한 컨트롤러 서블릿  inputController.java

데이터를 DB에 제공하기 위한 메소드 기능용 클래스   InputTestService.java

DB와 연계하는 클래스  inputTestDao.java

요청데이터를 저장하는 객체를 만들기 위한 인스턴스필드가 선언된 클래스  InputTest2.java

 

데이터 처리순서 

 

 

 

 

 

 

request.getParameter("checkMsg");   요청한 페이지의 checkMsg를 가져온다.

글 작성에 실패하면  요청 파라메터에 저장되어있는 checkMsg를  변수에 담아 console.log 출력

서블릿에만 담아서 쓰는게 아니고 주소창에 작성해서 사용할수도있다.

 

 

 

 



 

 

ArrayList<InputTest2> testList = itSvc.selectTest();

request.setAttribute("testList",testList); 

"testList" 는 이미 ArrayList<InputTest2>타입으로 저장되어있는데

<% ArrayList testList = (ArrayList) request.getAttribute("testList"); %> 

어째서 꺼내올때 다시 타입변환을 똑같이 해줘야하는지 궁금해서 선생님께 물어봤다.

 

이유 -> 

request.setAttribute(String name, Object value) value는 Object 타입이다.

그래서 Object 타입의 값이 속성으로 저장되므로 request.getAttribute()은 속성 값을 Object 형태로 반환하기때문에 사용할 타입으로 타입변환해줘야한다.

 

 

 


 

 

 

 

게시판 작성시 글작성자 1    글제목 2   글내용 3   일 경우

sendRedirect 하지않고 submit(글작성) 을 누르면 서블릿에 처음보내지는 주소가 url 에 출력된다.

http://localhost:8080/Jsp_Board/Board/boardWrite?bWriter=1&bTitle=2&bContents=3

( bWriter가 1이고  bTitle가 2  그리고 bContents가 3인 파라메터가 담겨있다.)

? <-- ? 이후에 나오는 문장은  페이지의 파라메터 정보를 나타낸다. 

이 때 페이지를 벗어나기전까지 입력된 정보를 가지고 있는다.


sendRedirect 사용

원래 response.sendRedirect(contexPath+"/Board/BoardWrite.jsp")  를 사용하면 파라메터 정보없이 

단순히 페이지만 이동하게 된다.

(sendRedirect로 작성한 응답문이 url로  출력된다. 그리고 파라메터는 RequestDispatcher와 forward로 저장해서 페이지를이어 주지 않으면 한페이지에만 종속하다가 페이지이동시 소멸하기때문에 단순페이지이동(sendRedirect)을 하게 되면 파라메터는 남아있지 않음)

하지만 url뒤에 임의로 문자열을 입력하여 사용할 수도 있다.

response.sendRedirect(contexPath+"/Board/BoardWrite.jsp?checkMsg=1");
이 요청에 담겨있는 파라메터는 checkMsg = 1   이된다. 

이 파라메터로 조건문을 사용하여 사용자게에 알림창을 띄우거나 하는 기능을 사용할 수도 있다.

ex) if(checkMsg ==1) {

             alert("성공");

     }else{

              alert("실패");

     }

※ 잘 사용되지는 않는다고 한다.


script 태그에

var checkMsg = "${param.checkMsg}";   작성했을 때

var checkMsg = ${param.checkMsg}    "" 를 생략하면 

var checkMsg =      1        이라는 숫자 값은 나오지만 object타입이라 페이지에서 정확한 타입을 알수 없기 때문에 값을 사용할 수가 없다. 그래서  "" 더블쿼터로 묶어줘서 문자형태로 변환해서 변수에 담아주고

if(checkMsg =="1") { };   <--이렇게 문자열로 조건문에 사용한다.

※ 자습시간에 다시해보니까 숫자는 더블쿼터의 유무와는 상관없이 자동으로 타입변환해서 인식하는것같다

 

변수에 저장된 타입은 number 인데  문자 "1" 과 조건식성립

 


변수에 저장된 타입은 string 인데 number 타입인 1과 조건식성립

 

※ 문자열과 boolean 타입도 입력해봤다.

문자열은 더블쿼터를 사용안하면 찾을수 없다는 에러나고 진행이안된다.,

false 는 더블쿼터를 사용안하면 boolean 타입으로 인식되었다.

숫자만 타입상관없이 같은숫자면 true 가 된다.

위의 식이 성립했다.

 

22/05/23  오늘 마지막 시간에 선생님이 설명해주셨다.

스크립트태그안에서 var 선언시  "" 더블쿼터가 붙지않으면  문자도 숫자도 아닌  변수 로 인식해서 

정의되지 않은 변수라는 오류가 뜬다.

 


 

절대경로 

경로를 최상위부터 위치를 찾는다.

정적인 특성이 있어 파일이있는 위치를 정확히 해주지만 취상위부터 입력되기에 경로명이 길어지고 컴파일이 느리며, 소스의 위치가 바뀔때마다 절대경로로 지정된 소스들을 전부 다시 지정해줘야한다.

 

 

상대경로

작업중인 파일이 들어있는 폴더기준으로 결로를 찾는다.

경로명이 짧고 컴파일 속도가 절대경로에 비해 빠르고 소스의 위치가 자주바껴도 폴더의 구성이 달라지지않는 한 경로지정을 다시 할 필요가없다.

 

 

 

 

 

 

 

 

반응형

'국비지원' 카테고리의 다른 글

22-05-04 수업정리  (0) 2022.05.04
22/05/03수업정리  (0) 2022.05.03
22/04/29 수업정리  (0) 2022.04.29
22/04/28 수업정리  (0) 2022.04.28
22/04/27 수업정리  (0) 2022.04.27