로그인 시스템 테스트경로입니다.
http://mudchobo.tomeii.com/MemberManager/


로그인 시스템 소스파일입니다.




이클립스 프로젝트로 포함했습니다.

이클립스 WTP 2.0 + TOMCAT 5.5 + JDK 5.0 에서 테스트했습니다.

 
Posted by 머드초보
,
 

네번째 시간이다.

actionForm에서 에러없이 writeAction을 실행하게 된다면 writeAction클래스를 실행하게 될 것이다. writeAction클래스를 보도록 하자.


잘보면 excute에서 있는 매게변수 form을 writeForm으로 형변환해서 writeform객체에 넣는다. 그래서 writeform에서 폼에서 입력한 데이터 값을 빈을 하나 선언해서 빈에다가 넣는다.

그 빈을 Manager클래스에 있는 insert메소드를 통해 db에 등록을 한다. insert메소드는 나중에 살펴보도록 하자. 그다음 글을 넣는데 성공했으므로 forward는 success로 포워드한다.

자 다음은 GuestBookManager클래스의 inssert메소드이다.


그냥 매개변수로 받은 bean을 db에 넣는 작업이다.

이렇게 되면 거의 다 완성이 됐는데 한글이 아직 지원이 안될 것이다. 한글 지원을 위해서 RequestProcessor를 만들어야 한다.

RequestProcessor클래스를 상속받은 NewRequestProcessor클래스.

이것을 써주기 위해서는 struts-config.xml에 이 줄을 추가해야한다.
<controller processorClass="guestbook.controller.NewRequestProcessor"/>

이클래스로 인해 한글이 가능해질 것이다.

이렇게 하면 대충 글만 써지고 쓴 글 리스트로 보이는 방명록을 만들 수 있을 것이다.
아래는 지금 까지 만든 방명록 소스다.


 
Posted by 머드초보
,
 
http://okjsp.pe.kr/seq/58275

여기 가면 pdf문서와 소스파일이 있는데 나도 이거보고 응용해서 방명록같지 않은 방명록을 만들어 보았다. 아직 스트럿츠에 있는 수많은 기능들을 이해하지 못했지만, 계속 해나가면 될 것 같다.

스트럿츠에서 TILES라는 것도 참 유용한 것 같고, 커스텀 태그 라이브러리를 이용해서 JSP코드를 매우 깔끔하고 읽기 쉽게 표현할 수 있다는 것도 좋은 것 같다.
예외처리나 뭐 이것저것 아직 공부해야할 부분이 많은 듯하다.
 
Posted by 머드초보
,
 

세번째 시간이다.

이제 글을 쓰는 기능을 구현해보도록하자.
글을 쓸 때에는 살짝 복잡하다. 백번 말하는 것보다 소스코드를 보면서 실습하는게 훨씬 더 이해가 잘된다.

글쓰기기능이 단순한 list보기보다 조금 틀린점은 ActionForm이라는 녀석이 들어간다.

ActionForm은 글을 쓸 때 폼에 맞춰서 이름, 비밀번호, 내용 등을 적은 다음에 submit해주면 그 폼에 있는 내용이 제대로 되었는지 검사하는 등 폼에 있는 내용을 가지고 뭘 하는 거다-_-; 솔직히 자세히는 모르겠지만, 글을 쓸 때에는 내용검사만 필요할 것같아서 내용검사만 공부해보자-_-;

가장 먼저 struts-config.xml파일을 건드려보자.

<form-beans>
  <!-- write를 위한 ActionForm 설정 -->
  <form-bean
   name="writeForm"
   type="guestbook.forms.writeForm">
  </form-bean> 
 </form-beans>

ActionForm을 사용하기 위해서는 form-beans 태그를 작성한다. 그래서 그안에 form-bean태그를 이용해서 폼태그와 클래스이름을 넣어준다.

글을 쓰기위해서 추가해야할 action태그는 이것이다.

<action path="/write" type="guestbook.actions.writeAction" name="writeForm"
    validate="true" input="/writeForm.jsp">
    <forward name="success" path="/list.do" redirect="true"/>
  </action>

잘 보면 listAction태그랑 비슷하다. 하지만, validate에서 true를 놓아서 유효성검사를 하겠다는 것이다. 유효성검사해서 에러가 발생하면 다시 writeForm.jsp로 가라는 뜻이다. 에러가 발생하지 않으면 writeAction을 실행하게 된다.
그리고 중간에 forward는 success를 받으면 list.do를 redirect(이거 안하면 주소창에서 다시 읽지 않아서 write.do로 남아있게 된다. 글쓰고 해줘야한다.)로 실행하라는 것이다.

추가했으면 writeForm.jsp부터 보자.


태그라이브러리로 html:form을 사용했다. 뭐 html에서 사용하는 form과 하는 역할은 거의 비슷하다. action은 write라고 써있는데 이것은 write.do를 실행하게 된다. focus는 처음 실행시 포커스위치이고, 나머지 html:text, html:password, html:textarea도 input태그와 같은 역할을 한다.
저렇게 하고 html:submit버튼을 만들면 form태그는 완성이다.
그 뒤에 html:messages태그를 한번 보도록 하자. 저 태그는 이름을 안적고 submit해버리면 이름을 적으라고 메시지를 보내는 역할을 하는 것이다. 나중에 writeAction클래스를 보면서 다시 설명해보자.

다음은 writeForm클래스 소스 내용이다.


빈클래스와 비슷해보인다. 여기서는 폼에서 받은 데이터 값을 가지고 유효성 검사를 한다. 보면 validate라는 메소드가 보인다. 이 메소드에서 검사를 해서 만약에 name이나, password, content 등이 null이 되버리면 errors메시지를 추가한다. 아까 writeForm.jsp에 본 invalidContentError이라는 이름으로 정하고 error.invalidContent라는 메시지를 생성하는 것이다. error.invalidContent는 어디에 있느냐! 이것은 따로 properties파일을 만들어준다.

build->class -> resources -> application.properties 라는 파일을 생성한다.

error.invalidName=\uc774\ub984\uc744 \uc801\uc5b4\uc8fc\uc138\uc694.
error.invalidPassword=\ube44\ubc00\ubc88\ud638\ub97c \uc801\uc5b4\uc8fc\uc138\uc694.
error.invalidContent=\ub0b4\uc6a9\uc744 \uc801\uc5b4\uc8fc\uc138\uc694.

왠 이상한 유니코드냐! 한글이 안된다. 그러므로 java sdk에서 제공하는 native2ascii를 실행해서 한글을 쓰면 유니코드가 나오는데 이것을 여기에 적어 넣도록하자.
이 properties파일을 사용하기 위해서 struts-config.xml파일에 추가하자.
<message-resources parameter="guestbook.resources.application" />

다음 시간으로!

 
Posted by 머드초보
,
 

두번째 시간이다-_-;
단순히 리스트만 보여주는
기능을 구현해보자.

DB를 우선 설정해야겠다.
DB는 간단히
GUESTBOOK_ID -> 자동으로 증가하는 숫자.
REGISTER -> 등록일과 시간을 나타냄.
NAME -> 이름.
EMAIL -> EMAIL주소
PASSWORD -> 글 입력한 뒤 지울 때 씀(여기서 지우는 기능없음-_-;)
CONTENT -> 방명록 내용.

MySQL기준으로 이렇게 생성하자.

create table GUESTBOOK (
    GUESTBOOK_ID INT         NOT NULL PRIMARY KEY AUTO_INCREMENT ,
    REGISTER     DATETIME    NOT NULL,
    NAME         VARCHAR(20) NOT NULL,
    EMAIL        VARCHAR(40) NOT NULL,
    PASSWORD     VARCHAR(10),
    CONTENT      MEDIUMTEXT  NOT NULL
)

생성했으면 DB를 직접 조정해서 글도 몇개 넣어 놓자.

struts-config.xml파일을 수정하자.
<action path="/list" type="simpleguestbook.actions.listAction" validate="false">
    <forward name="success" path="/list.jsp"/>
  </action>
이 액션태그를 action-mappings태그안에다가 추가를 하자.
저것은 list.do를 실행하면 guestbook.actions.listAction클래스에 있는 execute메소드를 실행하게 되고 validate="false"로 인해 유효성검사는 하지 않으며 success라는 forward값을 받게 되면 list.jsp를 포워딩하라는 그런 뜻이다.

가장먼저 데이터를 담을 수 있는 bean클래스를 작성 해보자.


여기에서는 간단히 get과 set을 이용하여 작성했다.
그 다음 실질적인 역할을 하는 manager클래스를 작성해보자.


딱 getList라는 메소드는 db에 저장된 리스트를 가져오는 것이다.

listAction클래스를 작성해보자.
패키지를 guestbook.actions라고 생성을 한뒤 클래스를 추가하여 listAction이라고 한다.


struts-config.xml파일에서 action태그에서 설정한 action클래스가 실행이 되는데 여기 클래스에 있는 execute메소드를 실행하게 된다. 보면 Manager클래스에서 방명록내용이 담겨져있는 list를 읽어와서 세션에 저장하는 역할을 한뒤 forward로 success를 반환한다.
아까 action태그안에 forward이름이 success인것이 forward되는 것이다.
저기 Action에 fail을 리턴하면 action태그에 fail인 것의 forward가 있다면 그것을 실행하게 되는 것이다.

이제 list.jsp파일을 작성해보자.

보면 이상한 태그들이 많이 있는데 뭐 단순하다. 태그의 종류는 무쟈게 많지만 게시판에 쓰이는 거라면 logic:iterate(반복태그)랑 bean:write(내용출력) 정도만 있으면 출력할 수 있다.

logic:iterate는 방금전에 listAction에서 저장한 세션 lists(List클래스)를 넣은 대로 반복하는 것이다. 글이 5개가 있다면 5번 반복할 것이다.
bean:write는 그냥 bean에 있는 값을 가져와서 보여주는 것이다. property는 빈의 필드명이 된다. 그냥 저렇게 쓰면 된다.

이제 http://localhost:8080/SimpleGuestBook/list.do 를 실행하게 되면 억지로 집어 넣었던 db에 있는 내용이 보여질 것이다.

 
Posted by 머드초보
,