1. 스트럿츠1 다운받기
    주소 :   http://struts.apache.org/   다운링크 : http://struts.apache.org/download.cgi#struts1310
    다운받은 압축파일을 내가 알 수 있는 폴더에 풀어줍니다.

2. 이클립스에 스트럿츠1 사용할 프로젝트 생성

3. 생성한 프로젝트 web-inf\lib\ 폴더에 스트럿츠1 lib\jar파일들 붙여넣기
    - 스트럿츠1 압축 푼 폴더\lib\몽땅 복사
    - 새로 생성한 프로젝트 WebContent\WEB-INF\lib 폴더에 몽땅 붙여넣기

4. web.xml, struts-config.xml 수정
    - 스트럿츠 압축푼 폴더 apps\struts-blank-1.3.10.war 압축 풀기.
    - WEB-INF\web.xml, struts-config.xml
    - web.xml은 열어서 이클립스 프로젝트에 있는 web.xml을 수정한다.
    - <web.xml>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>st1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
<!-- 붙여넣기 할 부분 -->
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
 </servlet>

  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

 
</web-app>

   
    - struts-config.xml은 WEB-INF에 붙여넣기 후 아래와 같이 수정
    - <struts-config.xml> 수정
 <?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>

<!-- ================================================ Form Bean Definitions -->

    <form-beans>
      <form-bean name="userForm" type="org.thinker.actions.UserForm"/>
    </form-beans>

<!-- ========================================= Global Exception Definitions -->

    <global-exceptions>
    </global-exceptions>

<!-- =========================================== Global Forward Definitions -->

    <global-forwards>
    </global-forwards>

<!-- =========================================== Action Mapping Definitions -->

    <action-mappings>
        <action
            path="/welcome"
            forward="/pages/welcome.jsp"/>
           
        <action path="/sample" type="org.thinker.actions.SampleAction" name="userForm">
          <forward name="success" path="/sample2.jsp"/>
        </action>

    </action-mappings>

</struts-config>

    <수정내용>











'프로그램 > 웹프로그래밍' 카테고리의 다른 글

[게시판] list.jsp  (0) 2012.02.23
[게시판] addBbs.html, addBbsAction.jsp  (0) 2012.02.23
[게시판] BbsService - 설계  (0) 2012.02.23
[게시판] BbsServiceImpl  (0) 2012.02.23
query maker  (0) 2012.02.23
  

모델2 나름정리

Posted by sabper 프로그램 : 2012. 2. 28. 16:50



 



1. 브라우저에서 aaa.do 호출
   web.xml설정에 따라
  <web.xml>

  

2. FrontController 에서 받는다.
    init 메소드에서 CommandFactory 호출.(CommandFactory 생성자)
      
    aaa.do path값을 저장.

    CommandFactory lookup메소드 호출 path 파라미터값으로..

    CommandFactory에서 넘어온 cmd를 excute(ACommandImpl 모델로 넘어감) aaa.jsp를 리턴.

    aaa.jsp로 dispatch

    aaa.jsp로 forward

   <FrontController>   

3. CommandFactory
    생성자에서 init() 메소드 호출.

    init() 메소드
    config.xml parse
    HashMap 에 담기

    lookup() 메소드
    map의 값중 path값에 맞는 값 cmd에 넣기.
    return cmd
    
   <CommandFactory>   

  3.1. config.xml
<?xml version="1.0" encoding="UTF-8"?>
<commands>
<command id="/index"></command>
<command id="/bbs/input"></command>
<command id="/aaa" class="org.thinker.web.ACommandImpl"></command>
<command id="/bbb" class="org.thinker.web.BCommandImpl"></command>
<command id="/ccc" class="org.thinker.web.CCommandImpl"></command>
</commands>





4. ACommandImpl

package org.thinker.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ACommandImpl implements Command {
 public String execute(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  
  System.out.println("AAAAAAAAAAAAAAAaa");
  
  return "aaa.jsp";
 }
}




5. aaa.jsp

'프로그램' 카테고리의 다른 글

이클립스에 log4j 설정하기  (0) 2012.02.21
  

[게시판] list.jsp

Posted by sabper 프로그램/웹프로그래밍 : 2012. 2. 23. 18:07


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="org.thinker.bbs.*" %>
<%@ page import="java.util.*" %>

<%
 BbsService service = new BbsServiceImpl();
 
 int pageno = 1;
 
 try{
  
  String str = request.getParameter("pageno");
  pageno = Integer.parseInt(str);
  if(pageno <= 0){
   pageno = 1;
  }
  
 }catch(Exception e){
  pageno = 1;
 }

 List<BbsVO> list = service.list(pageno);

%>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<table border="1" width="900" height="400">
 <tr>
  <td>번호</td>
  <td>제목</td>
  <td>작성자</td>
  <td>날짜</td>
  <td>조회수</td>
 </tr>
 
 <%for(BbsVO vo:list){%>
 <tr>
  <td><%=vo.getBbsno() %></td>
  <td><%=vo.getTitle() %></td>
  <td><%=vo.getWriter() %></td>
  <td><%=vo.getRegdate() %></td>
  <td><%=vo.getViewCnt() %></td>
 </tr>
 <%} %>
</table>
</body>
</html>

'프로그램 > 웹프로그래밍' 카테고리의 다른 글

스트럿츠1 이클립스 설치  (1) 2012.02.29
[게시판] addBbs.html, addBbsAction.jsp  (0) 2012.02.23
[게시판] BbsService - 설계  (0) 2012.02.23
[게시판] BbsServiceImpl  (0) 2012.02.23
query maker  (0) 2012.02.23
  


addBbs.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
 
 function doJob(){

  var formObj = document.getElementById("f1");
  formObj.submit();
 }
 
 function doA(){
  
  var obj = document.getElementById("testDiv");
  obj.addEventListener("click", doJob);
  
 }
 
 window.onload = doA;
 
</script>

</head>

<body>

<form id="f1" action="addBbsAction.jsp" method="post">
<label>제목</label><input type="text" name = "title"/><br/>
<label>작성자</label><input type="text" name = "writer"/><br/>
<label>내용</label><textarea name="content" rows="10" cols="50"></textarea><br/>
<div id="testDiv">눌러보세요</div>
</form>

</body>
</html>


addBbsAction.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="org.thinker.bbs.*" %>


<%
 request.setCharacterEncoding("UTF-8"); 
 BbsService service = new BbsServiceImpl();
 
 BbsVO vo = new BbsVO();
 
 String title = request.getParameter("title");
 String writer = request.getParameter("writer");
 String content = request.getParameter("content");
 
 vo.setTitle(title);
 vo.setWriter(writer);
 vo.setContent(content);
 
 out.print(content);
 
 out.print(vo);
 
 String resultMsg = "";
 
 try{
  service.create(vo);
  resultMsg="글입력성공";
 }catch(Exception e){
  resultMsg="글쓰기 실패";
 }

%>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=resultMsg %>
결과페이지
</body>
</html>


'프로그램 > 웹프로그래밍' 카테고리의 다른 글

스트럿츠1 이클립스 설치  (1) 2012.02.29
[게시판] list.jsp  (0) 2012.02.23
[게시판] BbsService - 설계  (0) 2012.02.23
[게시판] BbsServiceImpl  (0) 2012.02.23
query maker  (0) 2012.02.23
  


package org.thinker.bbs;

import java.util.List;

public interface BbsService {
 
 public void create(BbsVO vo) throws Exception;
 
 public void delete(int bbsno) throws Exception;
 
 public List<BbsVO> list(int pageno) throws Exception;
 
}

'프로그램 > 웹프로그래밍' 카테고리의 다른 글

[게시판] list.jsp  (0) 2012.02.23
[게시판] addBbs.html, addBbsAction.jsp  (0) 2012.02.23
[게시판] BbsServiceImpl  (0) 2012.02.23
query maker  (0) 2012.02.23
JDBC드라이버 이클립스 세팅 / 연결 체크 포인트  (0) 2012.02.10
  

[게시판] BbsServiceImpl

Posted by sabper 프로그램/웹프로그래밍 : 2012. 2. 23. 18:01

package org.thinker.bbs;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.thinker.common.AbstractService;

public class BbsServiceImpl extends AbstractService implements BbsService {

 @Override
 public void create(BbsVO vo) throws Exception {
  
  String sql = "insert into tbl_bbs(bbsno,title,content,writer) values (seq_bbs.nextval,?,?,?)";
  
  Connection con = null;
  PreparedStatement pstmt = null;
  
  try{
   
   con = getConnection();
   
   logger.debug(con);
   
   pstmt = con.prepareStatement(sql);
   
   pstmt.setString(1,vo.getTitle());
   pstmt.setString(2,vo.getContent());
   pstmt.setString(3,vo.getWriter());
   
   System.out.println(pstmt);
   
   int result = pstmt.executeUpdate();
   
   logger.info(result+"건 입력되었음");
   
  }catch(Exception e){
   logger.debug(e.getMessage());
   throw e;
  }finally{
   if(con != null){try{con.close();logger.debug("con is closed?"+con.isClosed());}catch (Exception e){logger.debug(e);throw e;}}
   if(pstmt != null){try{pstmt.close();logger.debug("pstmt is closed?"+pstmt.isClosed());}catch (Exception e){logger.debug(e);throw e;}}
   
  }
 }

 @Override
 public void delete(int bbsno) throws Exception {
  // TODO Auto-generated method stub

 }

 @Override
 public List<BbsVO> list(int pageno) throws Exception {
  
  List<BbsVO> result = new ArrayList<BbsVO>();
  
  StringBuilder builder = new StringBuilder();
  
  builder.append(" SELECT bbsno, title, content, writer, regdate, viewcnt FROM( ");
  builder.append(" SELECT /*+INDEX_DESC(tbl_bbs pk_bbs)*/ ");
  builder.append(" ROWNUM rn, bbsno, title, content, writer, regdate, viewcnt  ");
  builder.append(" FROM TBL_BBS ");
  builder.append(" WHERE ROWNUM <= ? * 10 ");
  builder.append(" ) ");
  builder.append(" WHERE rn > (? * 10) - 10 ");
  
  Connection con = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  
  try{
   
   con = getConnection();
   pstmt = con.prepareStatement(builder.toString());
   pstmt.setInt(1, pageno);
   pstmt.setInt(2, pageno);
   
   rs = pstmt.executeQuery();


   
   while(rs.next()){
    
    BbsVO vo = new BbsVO();
    vo.setBbsno(rs.getInt(1));
    vo.setTitle(rs.getString(2));
    vo.setContent(rs.getString(3));
    vo.setWriter(rs.getString(4));
    vo.setRegdate(rs.getDate(5));
    vo.setViewCnt(rs.getInt(6));
    
    result.add(vo);   
   }
   
  }catch(Exception e){
   logger.debug(e.getMessage());
   throw e;
   
  }finally{
   if(rs != null){try{rs.close(); System.out.println("rs is closed?"+rs.isClosed()); }catch(Exception e){ }}
   if(pstmt != null){try{pstmt.close(); System.out.println("pstmt is closed?"+pstmt.isClosed()); }catch(Exception e){ }}
   if(con != null){try{con.close(); System.out.println("con is closed?"+con.isClosed()); }catch(Exception e){ }}
  }
    
  return result;
 }

}

  

query maker

Posted by sabper 프로그램/웹프로그래밍 : 2012. 2. 23. 17:59


import java.io.FileInputStream;
import java.util.Scanner;


public class QueryMaker {
 
 public static void main(String[] args) throws Exception{
  
  Scanner scanner = new Scanner(new FileInputStream("c:\\webex\\query\\query.txt"));
  
  System.out.println("StringBuilder builder = new StringBuilder();");
  
  while(true){
   try{
    
    String line = scanner.nextLine();
    
    System.out.println("builder.append(\" "+line+" \");");
    
    
   }catch(Exception e){
    break;
   }
  }
  
 }
 
}

  

이클립스에 log4j 설정하기

Posted by sabper 프로그램 : 2012. 2. 21. 17:29

1. log4j 다운.
    - http://logging.apache.org/log4j/1.2/download.html 접속.
    - apache-log4j-1.2.16.zip 을 다운받고 압축을 푼다.
    - 압축을 푼 폴더안에 og4j-1.2.16.jar 파일이 있는지 확인 한다.
   
2. 이클립스 설정.
    - 프로젝트 WEB_INF/lib 폴더에 log4j-1.2.16.jar 파일을 복사 붙여넣기 한다.  
    - 프로젝트 src에 new - file 만들기로 log4j.properties 파일을 만든다.
    - log4j.properties 파일에 소스를 붙여넣기 한다.
     
log4j.rootLogger = debug, stdout, dailyfile //debug를 info,error,warn,fatal 로 조정만 하여 레벨 조정이 가능하다.
//콘솔창에 찍히는 부분 설정.

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n

//file에 기록되는 부분 설정.
log4j.appender.dailyfile.Threshold = DEBUG
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = c:\\log\\logfile.log //여기에 지정된 폴더로 날짜별로 로그파일이 생성된다
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n

3. 라이브러리 추가
   - 프로젝트 우측클릭 properties 설정 - Java Build Path - Libraries - Add Libary... 클릭
   - JUnit 클릭 - JUNIT library version : JUnit 3 - Finish

4. 사용해보기.
    - log4j import
       private static Logger logger = Logger.getLogger(TestLog4j.class);

    -   logger.debug("dddd");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
        logger.fatal("fatal");
        요런식으로 찍어보면 된다.
        찍힌 내용은 설정파일의 경로에 파일로도 저장된다.
        설정파일의 debug를 warn이라고 해놓으면 info, debug의 메시지는 당연히 안찍힌다.
        설정파일 한방으로 찍히고 안찍히고를 결정 지을 수 있다.











'프로그램' 카테고리의 다른 글

모델2 나름정리  (0) 2012.02.28
  

sql 정리

Posted by sabper 프로그램/DB : 2012. 2. 21. 16:56


테이블 생성
create table tbl_member{
 userid varchar2(50),
 userpw varchar2(50),
 username varchar2(100),
 tel varchar2(50)
};

primary key 설정
alter table tbl_member add constraint
pk_member primary key (user_id);

데이터이동.
insert into tbl_member(uerid,userpw,usename,tel)
select * from user00.tbl_member

컬럼에 필드값 입력
insert INTO TBL_MEMBER (userid, userpw, username,tel)
VALUES ('u05','u05','윤종원','010-2965-4190');

group by
select deptno, count(ename) from emp group by deptno;
- emp 테이블의 deptno별로 ename의 개수를 카운트한다.

order by
select * from tbl_member order by userid;
- userid 로 정렬
- index full scan / table full scan

삭제
delete tbl_member where userid = 'u05';

시퀀스 
- 유일(unique) 한 값을 생성해 주는 오라클 객체
- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있다.
create sequence seq_bbs
  start with 1 -- 시작 1
  increment by 1 - 증가값 1
  maxvalue 99999999 - 최대값 99,999,999
  nocycle;

insert into tbl_bbs(bbsno, title, content, writer)
values(seq_bbs.nextval, '제목','내용','글쓴이');
- nextval : 현재 시퀀스 값의 다음값 반환
- currval : 현재값 반환

rownum
- sql문 실행 후 데이터마다 붙는 번호.
select rownum, bbsno, title, writer from tbl_bbs order by bbsno desc;

오라클 힌트
출처 :
http://theone79.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-hint-%EC%82%AC%EC%9A%A9%EB%B2%95
/*+INDEX_DESC(tbl_bbs pk_bbs) */
- 지정한 테이블의 인덱스 스캔을 실행하도록 유도(역순으로)
- 해당 쿼리가 인덱스 범위 스캔의 사용 시, 인덱스 컬럼의 값을 사용하여 역순으로 실행.
select /*+INDEX_DESC(tbl_bbs pk_bbs) +/ rownum,bbsno,title,writer from tbl_bbs where rownum <=10



tbl_bbs 테이블 생성
create table tbl_bbs(
 bbsno number(50),
 title varchar2(400) not null,
 content varchar2(2000) not null,
 writer varchar2(200),
 regdate date default sysdate,
 viewcnt number default 0
);

- primary key
alter table tbl_bbs add constraint pk_bbs
primary key (bbsno);

- 시퀀스 생성
create sequence seq_bbs
  start with 1
  increment by 1
  maxvalue 99999999
  nocycle;

- 데이터 삽입
insert into tbl_bbs(bbsno, title, content, writer)
values(seq_bbs.nextval, '제목','내용','글쓴이');

- 시퀀스 이용 데이터 재귀 복사
insert into tbl_bbs(bbsno, title, content, writer)
select seq_bbs.nextval, title, content, writer from tbl_bbs;
-> 실행할때마다 현재 데이터의 2배가 insert.

- 인라인 뷰,오라클 힌트 이용 게시판 페이지
   select * from (
   select /*+INDEX_DESC(tbl_bbs pk_bbs)*/
   rownum rn, bbsno, title, content, writer, regdate, viewcnt
   from tbl_bbs
   where rownum <= 1*10  -- 1은 페이지번호를 뜻한다.
   )
   where rn > (1*10)-10 -- 1은 페이지번호를 뜻한다.




















'프로그램 > DB' 카테고리의 다른 글

ERD (entity-relationship diagram) 링크.  (0) 2012.02.21
  

ERD (entity-relationship diagram) 링크.

Posted by sabper 프로그램/DB : 2012. 2. 21. 16:40

ERD[이 알 디]는 전략적 계획이나 또는 하향식 계획에서 자주 사용되며, 개략적인 상부계층의 데이터 다이어그램이다.





출처 : [텀즈] http://www.terms.co.kr/ERD.htm


위키 링크

'프로그램 > DB' 카테고리의 다른 글

sql 정리  (0) 2012.02.21
  
 «이전 1 2  다음»