Spring 스프링 게시판 기능(유효성 검사)

Spring 스프링 게시판 기능(유효성 검사)

반응형

Spring 스프링 게시판 기능(유효성 검사)

1.아이디 중복검사 코드 (insert.jsp 파일에 작성)

//폼의 데이터를 전송할 때 발생하는 이벤트 처리 //(아이디가 중복일 시 중복검사를 하도록 요청하는 코드[다음 단계로 넘어가지 않게 만들어주는것!!!])) document.getElementById("myform") .addEventListener("submit",function(e){ //중복체크통과여부 확인! if(idcheck == false){ iddiv.innerHTML = '아이디 중복검사를 하십시오.'; iddiv.style.color = 'red'; itemid.focus(); //폼의 데이터를 전송하지 않도록 하기 e.preventDefault(); return; } });

=>아이디 중복검사를 하십시오 라는 메시지가 뜨면서 데이터전송이 되지 않는다(e.preventDefaulit();)

2.price(가격) 란에 숫자 이외의 문자가 들어갔을시 데이터 전송을 하지 않게하면서 메시지가 뜨게 하는 코드

var price = document.getElementById("price"); //price 입력 란의 숫자만 입력되었는지 체크 //+ 나 - 기호를 앞에 붙일 수 있는지 //,의 경우는 어떻게 할것인지 for(var i=0; i= '0' && ch <= '9'))){ price.focus(); alert("가격의 첫번째 자리는 숫자나 +, - 기호여야 합니다.") //폼의 데이터를 전송하지 않도록 하기 e.preventDefault(); return; } }else{ if(!(ch >= '0' && ch <= '9')){ price.focus(); alert("가격은 숫자로만 입력하세요!!!") //폼의 데이터를 전송하지 않도록 하기 e.preventDefault(); return; } } } });

**Spring에서의 File Upload 처리

=>MultipartFile 타입으로 처리

1.준비 사항

1)commons-fileupload 라이브러리의 의존성 설정

2)CommonsMultipartResolver 클래스의 bean을 생성

2.MulitpartFile

=>파라미터를 직접 이 타입으로 받아도 되고 HttpServletRequest 대신에

MultipartHttpServletRequest를 이용해서 요청을 받고 getFile(String parametherName)을

이용해서 가져올 수 있습니다.

3.실습

1)파일 업로드 처리를 위한 라이브러리의 의존성을 pom.xml 파일에 추가

commons-fileupload commons-fileupload 1.3.1

2)파일 업로드를 처리해 줄 수 있는 CommonsMultipartFile 클래스의 bean을 추가

=>servlet-context.xml 파일에 추가

3.DAO 클래스에 데이터를 삽입하기 위한 메소드를 생성하고 추가

//데이터 1개를 삽입하는 메소드 public int insertItem(Item item) { sessionFactory.getCurrentSession().save(item); return 1; }

4)ItemService 인터페이스에 데이터를 삽입하기 위한 메소드를 선언

//데이터 삽입(파일 업로드 처리를 위한 메소드) public int insertItem(MultipartHttpServletRequest request);

5)ItemServiceImpl 클래스에 데이터를 삽입하기 위한 메소드를 구현

@Override @Transactional public int insertItem(MultipartHttpServletRequest request) { //파라미터 읽기 String itemid = request.getParameter("itemid"); String itemname = request.getParameter("itemname"); String price = request.getParameter("price"); String description = request.getParameter("description"); //Dao 객체의 파라미터 만들기 Item item = new Item(); item.setItemid(Integer.parseInt(itemid)); item.setItemname(itemname); item.setPrice(Integer.parseInt(price)); item.setDescription(description); //파일 읽기 MultipartFile mf = request.getFile("pictureurl"); //업로드할 파일이 있는 경우에만 if(mf.isEmpty() == false) { //원본 파일 이름 가져오기 String originName = request.getFile("pictureurl").getOriginalFilename(); //원본 파일 이름은 여러 개의 파일을 업로드 하다보면 중복될 수 있기때문에 //파일 이름을 만들 때는 동일한 디렉토리에 저장한다면 중복되지 않도록 //파일 이름을 생성할 필요가 있습니다. //기본키와 파일명을 합치는 방법이 있고 UUID 클래스를 이용해서 만드는 방법 String uploadName = itemid + originName; item.setPictureurl(uploadName); //파일을 저장할 경로를 생성 //프로젝트내의 경로를 가지고 절대경로를 생성 //프로젝트 내의 경로가 아닐 경우 직접 경로를 작성! String uploadPath = request.getRealPath("/img"); //Servlet 3.0 이상인 경우 //request.getServletContext().getRealPath("/img") //업로드할 File 객체 생성 File file = new File(uploadPath + "\\" + uploadName); try { request.getFile("pictureurl").transferTo(file); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //데이터 삽입 return hibernateDao.insertItem(item); }

3)HomeController 클래스에 insert를 post 방식으로 요청했을 때 처리를 위한 메소드를 생성

@RequestMapping(value = "/insert", method = RequestMethod.POST) public String insert( MultipartHttpServletRequest request, Model model) { //서비스의 메소드를 호출 itemService.insertItem(request); // 삽입, 삭제, 갱신 등 새로고침을 했을 때 이전 작업을 다시 수행하면 안되는 경우에는 // Redirect를 해야 합니다. // Redirect를 할때는 View 이름이 아니고 URL을 작성 return "redirect:./"; }

7)실행하고 파일 업로드 했을 때 파일을 확인해야 하는 디렉토리

=>본인워크스페이스C:\eclipse\.metadata\.plugins\org.eclipse.wst.server.core\

tmp0\wtpwebapps\프로젝트이름

=>프로젝트는 원래 모양 그대로 있고 실행이 될 때는 프로젝트의 내용을 build 해서 위의 디렉토리에 있는 내용이 실행되는 것입니다.

=>프로젝트를 복사해서 다른 곳에서 실행하는 경우 프로젝트를 만들 때 존재했던 파일들은 그대로 있지만 실행 중 생성한 파일들은 없습니다.

개발환경에서 운영환경으로 이전(이 작업을 이행이라고 합니다.)할 때 기존 데이터베이스 내용을 전부 삭제해야 할 때도 있습니다.

**WebSocket

=>http 나 https 는 연결형 프로토콜이기는 하지만 한 번 요청을 해서 응답을 받으면 연결이 끊어집니다.

=>채팅과 같은 애플리케이션을 만들 때 http 나 https 를 이용하는 것은 어렵습니다.

데이터를 여러번 주고 받고자 하는 경우 연결하고 끊고 다시 연결하고 끊고 하는 작업을 반복해야 합니다.

데이터를 주고받는 시간보다 연결과 해제에 많은 자원을 소모하게됩니다.

그래서 나온 방법중의 하나가 애플리케이션을 설치하는 방법이 있습니다.

=>순수 웹 환경에서 실시간 양방향 통신을 위한 Spec이 HTML5에서 추가가 되었는데 이 Spec이

WebSocket 입니다.

WebSocket은 한 번 연결하면 close 할 때까지 계속 연결되어 있습니다.

=>최근에는 Android나 iOS에서도 웹 소켓에 접속하는 API가 추가

1.클라이언트(웹 브라우저)에서의 사용 방법(자바스크립트)

1)WebSocket 객체 생성

new Websocket("ws://domain/demo")

2)데이터 전송

WebSocket객체.send("데이터")

3)데이터 전송받기 - 콜백 사용

WebSocket객체.addEventListener("message",function(e)){

//매개변수 e가 전송된 데이터입니다.

}

4)기타 이벤트

open, close 이벤트

5)연결 해제

Websocket객체.close()

2.Spring을 이용한 WebSocket 서버 설정

=>WebSocketHandler 인터페이스를 구현한 클래스를 생성하고 메소드 재정의

=>클래스 위에 @EnableWebSocket 이나 설정 파일에 websocket:handlers 태그를 이용해서

웹 소켓 서버 설정

3.WebSocketHandler 인터페이스를 구현한 클래스

=>TextWebSocketHandler, AbstractWebSocketHandler

4.의존성 라이브러리

spring-websocket

5.주의할 점

=>spring 의 websocket은 서블릿 3.0부터 사용가능

6.실습

1)pom.xml 소켓에 spring-websocket 의존성 설정

org.springframework spring-websocket ${org.springframework-version}

다음 시간에 이어서 설명드리겠습니다 ^^

반응형

from http://bucheoneduc.tistory.com/32 by ccl(A) rewrite - 2021-12-27 12:01:21