protected ModelAndView onSubmit(HttpServletRequest request,
            HttpServletResponse response, Object command, BindException errors)
            throws Exception {
        ModelAndView m = new ModelAndView();
       
        response.setContentType("text/plain");
       
        if(!(request instanceof MultipartHttpServletRequest)){
            //요청이 해당 request 가 아닐 때
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,"잘못된 요청입니다.");
            return null;
        }
       
        //file 정보
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
        MultipartFile file = multipartRequest.getFile("file");
        String file_name = file.getOriginalFilename();
        File file_path = File.createTempFile("file", file_name, path);//파일의 저장될 경로
        long size = file.getSize();
       
        FileCopyUtils.copy(file.getInputStream(), new FileOutputStream(file_path));//copy
       
        FileUploadBean bean = (FileUploadBean)command;
        bean.setFile(file);
        bean.setFile_name(file_name);
        bean.setFile_path(file_path);
        bean.setSize(size);
       
        boardService.insertFile(bean);
       
        m.setViewName("/fileuploadSuccess.do");
       
        return m;
    }
Posted by zeide
,

[게시판] 글 조회수

자료 2009. 3. 2. 10:00
...
Connection con = null;
PreparedStatement pstmt = null;
...

try{
...(커넥션 얻기)
StringBuffer addCount = new StringBuffer();
addCount.append("update board set readcount = readcount+1 where num=?");
pstmt = con.prepareStatement(addCount.toString());
pstmt.setInt(1,num);
pstmt.executeUpdate();
...
}
...

이것은 누구나 아는 방법.
보통 글 번호에 따른 게시물을 읽는 코드와 같이 쓴다.(파라미터로 글 번호를 받기 때문에)
Posted by zeide
,
1. 쿠키 심기
  Cookie cookie = new Cookie(name, value);
  cookie.setMaxAge(limit);
  cookie.setPath("/");
  response.addCookie(cookie);

2.쿠키 얻기
Cookie[] cookies = request.getCookies();
  String str = "";
  
  if(cookies!=null){
   for(int i=0;i<cookies.length;i++){
    if(ckname.equals(cookies[i].getName())){
     str = URLDecoder.decode(cookies[i].getValue(),"utf-8");
    }//if
   }//for
  }//if

Posted by zeide
,

[게시판] 페이징2

자료 2009. 2. 17. 11:24

게시판이나 방명록 하단에 보이는 페이지 넘기기 부분

public class MyUtil {
// 현재 게시판의 페이지 인덱스 설정
    public String indexList(int current_page, int total_page, String list_url) {
        int pagenumber;     // 화면에 보여질 페이지 인덱스 수
        int startpage;      // 화면에 보여질 시작페이지 번호
        int endpage;        // 화면에 보여질 마지막페이지 번호
        int curpage;        // 이동하고자 하는 페이지 번호
        String strList="";  // 리턴될 페이지 인덱스 리스트

        pagenumber = 3;    // 한 화면의 페이지 인덱스 수 

        // 시작 페이지번호 구하기
        startpage = ((current_page - 1) / pagenumber) * pagenumber + 1;
        // 마지막 페이지번호 구하기
        endpage = (((startpage - 1) +  pagenumber) / pagenumber) * pagenumber;

        // 총 페이지 수가 계산된 마지막페이지 번호보다 작을경우
        // 총 페이지 수가 마지막페이지 번호가 됨
        if (total_page <= endpage)
        {
            endpage = total_page;
        }

        // 첫번째 페이지 인덱스 화면이 아닌경우
        if ( current_page > pagenumber) {
            curpage = startpage - 1;    // 시작페이지 번호보다 1 적은 페이지로 이동
            strList = strList + "<a href='"+list_url+"&current_page="+curpage+"'>[<<]</a>";
        }else{
            strList = strList + "[<<]";
        }
        strList = strList + " ... ";

        // 시작페이지 번호부터 마지막페이지 번호까지 화면에 표시
        curpage = startpage;

        while (curpage <= endpage){
            if (curpage == current_page) {
                strList = strList + "["+current_page+"]";
            } else {
                strList = strList +"<a href='"+list_url+"&current_page="+curpage+"'>["+curpage+"]</a>";
            }
            curpage++;
        }
        strList = strList + " ... ";
     
        // 뒤에 페이지가 더 있는경우
        if ( total_page > endpage) {
            curpage = endpage + 1; 
            strList = strList + "<a href='"+list_url+"&current_page="+curpage+"'>[>>]</a>";
        }else{
            strList = strList + "[>>]";
        }
        return strList;
    }
}

Posted by zeide
,
댓글을 다는 게시판에서 설정해야 할 부분

1. 글 순서 변수
2. 그룹화를 위한 변수
3. 어느 글에 대한 답글인지의 변수
4. 그룹에 대한 순서를 지어줄 수 있는 변수

이 중에서 2, 3, 4를 추가한다.
Posted by zeide
,

[게시판] 페이징1

자료 2009. 2. 13. 12:09

게시판 하단에 페이지 넘기기 부분.
주석 참고.

public class PagingHandle {
 private int p_group;//화면에 보이는 페이지의 그룹
 /**
  * @param page_url
  * @param total_page
  * @param page_size
  * @param page_num
  * @return
  */
 public String indexPageList(String page_url, String total_page, String page_size, int page_num ){
  String reIndexList="";//반환되는 페이징
  
  int totalRow = Integer.parseInt(total_page);//전체 글의 수
  int pageSize = Integer.parseInt(page_size);//한 페이지에 보여질 글의 수
  int pageNum = page_num;//페이지 번호
  
  /*시작 페이지 번호(보여지는 페이지의 번호) 구하기
   * 보고 있는 페이지가 페이지 그룹의 마지막 페이지면(pageNum==p_group) 다음 페이지를시작 페이지로 설정 */
  int startPage = ((((pageNum%p_group)==0)?pageNum-1:pageNum)/p_group)*p_group+1;
  
  /*전체 페이지 번호 구하기
   *전체 글의 수를 페이지당 보여질 글의 수로 나누면 총 페이지가 나온다. 글 수가 많으면 1페이지 추가 */
  int totalPage = (totalRow/pageSize)+(((totalRow%pageSize)==0)?0:1);
  
  /*마지막 페이지 번호 구하기
   *전체 페이지 번호에서 보여지는 페이지 번호를 제외한 나머지 페이지와 페이지그룹을 비교해서 결정 */
  int endPage = ((totalPage-startPage)<p_group)?totalPage:p_group;
  
  //1번 페이지로 가기
  reIndexList +="<a href='"+page_url+"&pageNum=1'>[처음]</a>&nbsp";
  
  //현재 페이지가 페이지 그룹보다 클 경우 이전 그룹으로 가기
  if(pageNum>p_group){
   reIndexList +="<a href='"+page_url+"&pageNum="+(startPage-1)+"'>[이전]</a>&nbsp";
  }//if
  
  //페이지 그룹 안에 있는 페이지 번호 설정하기
  while(startPage<=endPage){
   //현재 보고 있는 페이지
   if(startPage==pageNum){
    reIndexList+="<b>["+pageNum+"]</b>&nbsp";
   }else{
    reIndexList+="<a href='"+page_url+"&pageNum="+startPage+"'>["+startPage+"]</a>&nbsp";
   }//else
   startPage++;
  }//while
  
  //뒤에 페이지가 더 있으면 다음 페이지 그룹으로 가기
  if(endPage!=totalPage){
   reIndexList +="<a href='"+page_url+"&pageNum="+(endPage+1)+"'>[다음]</a>&nbsp";
  }//if
  
  //마지막 페이지로 가기
  reIndexList +="<a href='"+page_url+"&pageNum="+totalPage+"'>[끝]</a>";
  
  return reIndexList;
 }//indexPageList
 
}//class
Posted by zeide
,

[게시판] web.xml 설정

자료 2009. 2. 10. 17:17
web.xml에서 매핑설정
 
<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>
   org.springframework.web.filter.CharacterEncodingFilter
  </filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>
 
 <filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 
 <servlet>
  <servlet-name>guestboard</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/config.xml,
        /WEB-INF/controller.xml
   </param-value>
  </init-param>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>guestboard</servlet-name>
  <url-pattern>*.htm</url-pattern>
 </servlet-mapping>

Posted by zeide
,
DB는 오라클10g

>테이블<
create table guestbook(
num number(4) not null primary key,
name varchar2(20) not null,
pass varchar2(20) not null,
reg_date varchar2(10) not null,
subject varchar2(50) not null,
content varchar2(4000) not null,
readcount number(4) not null,
re_step number(4) not null,
re_level number(4) not null,
ref number(4) default 0
);

>num증가를 위한 시퀀스<
create sequence guest_bookno
start with 1
increment by 1
minvalue 1
maxvalue 9999999
;
Posted by zeide
,