JAVA 교육/Spring
2019/10/15 Spring 요청 명령어 를 받는 다양한 방식 & Filter(필터)
- -
BbsCont.java 전체 코드
package kr.co.basicspring.test02;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.filter.CharacterEncodingFilter;
//@Controller 어노테이션이 붙는 class 는 자동으로 객체생성을 해준다
@Controller
public class BbsCont {
public BbsCont() {
//객체 생성이 되었는지 늘 출력으로 확인을 하자
System.out.println("------------BbsCont()객체 생성됨");
}//Bbscont end
//결과확인
//http://localhost:8090/basicspring/bbs/create.do
//1)
/*
@RequestMapping(value="bbs/create.do",method=RequestMethod.GET)
public ModelAndView bbsForm() {
ModelAndView mav= new ModelAndView();
mav.setViewName("bbs/bbsForm");
return mav;
}//bbsForm end
*/
//2)
@RequestMapping(value="bbs/create.do",method=RequestMethod.GET)
public String bbsForm() {
return "bbs/bbsForm";
}//bbsForm() end
//----------------------------------------------------------------------
//가) 동일한 요청 명령어를 GET|POST 방식으로 분리해서 호출가능
/*
@RequestMapping(value="bbs/create.do",method=RequestMethod.POST)
public ModelAndView bbsIns(HttpServletRequest req) {
String wname=req.getParameter("wname").trim();
String subject=req.getParameter("subject").trim();
String content=req.getParameter("content").trim();
String passwd=req.getParameter("passwd").trim();
ModelAndView mav= new ModelAndView();
mav.setViewName("bbs/bbsResult");
mav.addObject("wname",wname);
mav.addObject("subject",subject);
mav.addObject("content",content);
mav.addObject("passwd",passwd);
return mav;
}
*/
//나) 매개변수(parameter)가 DTO객체인 경우
// =>해당 클래스에 반드시
// ->폼 컨트롤 요소이름으로 되어 있는 멤버변수와
// ->각 getter 와 getter 함수가 있어야 한다.
@RequestMapping(value="bbs/create.do", method=RequestMethod.POST)
public ModelAndView bbsInt(BbsDTO dto) {
System.out.println("wname : " +dto.getWname());
System.out.println("subject : " +dto.getSubject());
System.out.println("content : " +dto.getContent());
System.out.println("passwd : " +dto.getPasswd());
ModelAndView mav= new ModelAndView();
mav.setViewName("bbs/bbsResult2");
//request영역에 dto 객체 올리기
mav.addObject("dto",dto);
return mav;
}//bbsInt() end
}//
※ 주의사항
소스코드를 복사할때는 앞,뒤에 있는 <code></code> 코드는 빼고 복사하자
1) 동일한 요청 명령어를 GET POST 방식으로 호출한 방식
1. BbsCont.java
//동일한 요청 명령어를 GET|POST 방식으로 분리해서 호출가능
@RequestMapping(value="bbs/create.do",method=RequestMethod.POST)
public ModelAndView bbsIns(HttpServletRequest req) {
String wname=req.getParameter("wname").trim();
String subject=req.getParameter("subject").trim();
String content=req.getParameter("content").trim();
String passwd=req.getParameter("passwd").trim();
ModelAndView mav= new ModelAndView();
mav.setViewName("bbs/bbsResult");
mav.addObject("wname",wname);
mav.addObject("subject",subject);
mav.addObject("content",content);
mav.addObject("passwd",passwd);
return mav;
}
9 line 에서 ModelAndView 객체에 넣어준 bbsResult 를 생성 시켜주자 |
2. 페이지 생성
3. bbsResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>bbs/bbsResult.jsp</title>
</head>
<body>
<h3>* 글쓰기 결과*</h3>
작성자 : ${wname}<br>
제목 : ${subject}<br>
내용 : ${content}<br>
비밀번호: ${passwd}<br>
</body>
</html>
4. 결과1
단, 아직 인코딩을 하지 않았기 때문에 한글을 적으면 한글이 깨져 화면에 출력된다. |
5. 인코딩 서블릿 등록
MVC 버전에서 encodefilter 작성하고 서블릿 등록을 해주었지만, spring에서는 서블릿 등록만 해주면 한글필터를 통과
bbsCont.java
import org.springframework.web.filter.CharacterEncodingFilter; |
▲ 필터 인코딩을 서블릿에 등록하기 위해 bbsCont.java(현재 운영중이 controller) 에 위의 코드를 import 시켜주자
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>
5. 결과2
2) 요청 명령어 매개변수(parameter)가 DTO객체인 경우
1. BbsDTO 생성
package kr.co.basicspring.test02;
위의 칼럼으로 BbsDTO 를 생성한 후 getter setter를 생성 |
2. BbsCont.java
매개변수(parameter)가 DTO객체인 경우 ->해당 클래스에 반드시 ->폼 컨트롤 요소이름으로 되어 있는 멤버변수와 ->각 setter 와 getter 함수가 있어야 한다. |
@RequestMapping(value="bbs/create.do",method=RequestMethod.GET)
public String bbsForm() {
return "bbs/bbsForm";
}//bbsForm() end
@RequestMapping(value="bbs/create.do", method=RequestMethod.post)
public ModelAndView bbsInt(BbsDTO dto) {
System.out.println("wname : " +dto.getWname());
System.out.println("subject : " +dto.getSubject());
System.out.println("content : " +dto.getContent());
System.out.println("passwd : " +dto.getPasswd());
ModelAndView mav= new ModelAndView();
mav.setViewName("bbs/bbsResult2");
//request영역에 dto 객체 올리기
mav.addObject("dto",dto);
return mav;
}//bbsInt() end
10 line 객체에 담은 bbsResult2 파일을 생성후 테스트 해보자 |
3. bbsResult2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>bbs/bbsResult2.jsp</title>
</head>
<body>
<h3>* 글쓰기 결과*</h3>
작성자 : ${dto.wname}<br>
제목 : ${dto.subject}<br>
내용 : ${dto.content}<br>
비밀번호: ${dto.passwd}<br>
</body>
</html>
결과
'JAVA 교육 > Spring' 카테고리의 다른 글
2019/10/16 Maven 라이브러리 다운 방법 (0) | 2019.10.16 |
---|---|
2019/10/16 Spring 로그인 폼 (0) | 2019.10.16 |
DTO 와 VO 의 차이점 (0) | 2019.10.16 |
2019/10/15 Spring 프로젝트생성 및 환경구축 (사칙연산 test) (0) | 2019.10.15 |
2019/10/14 Framework (myBatis ) (0) | 2019.10.14 |
Contents
소중한 공감 감사합니다