파게로그
[Spring MVC] POST 입력 및 한글 깨짐 본문
POST 입력을 위해 Admin Controller가 필요하다.
com.ddoongi.web.controller.admin.board에 EmpController를 만들어준다.
@Controller("adminEmpController")
@RequestMapping("/admin/board/emp/")
public class EmpController {
@RequestMapping("/list")
public String list() {
return "list";
}
@RequestMapping("/reg")
@ResponseBody
public String reg() {
return "reg";
}
@RequestMapping("/edit")
public String edit() {
return "edit";
}
@RequestMapping("/del")
public String del() {
return "del";
}
}
사용자가 입력할 수 있느 페이지를 마련해준다.
webapp/static/admin/board/event/emp/reg.html
근데 이게 RequestMapping이 패턴 기반이라 reg.html로 접속해도 reg Controller로 연결되어버린다.
(임시방편으로 reg.html 대신 reg1.html 이런식으로 이름 바꾸어주기)
어쨌든..
<form action="reg" method="post">
<input type="text" name="title" />
<input type="text" name="content" />
</form>
이렇게 하고
@Controller("adminEmpController")
@RequestMapping("/admin/board/emp/")
public class EmpController {
@RequestMapping("/list")
public String list() {
return "list";
}
@RequestMapping("/reg")
@ResponseBody
// public String reg(HttpServletRequest request) 도 가능은 하다. 선호되지는 않음.
public String reg(String title, String content) {
return "title:"+title+"<br/>"+"content:"+content;
}
@RequestMapping("/edit")
public String edit() {
return "edit";
}
@RequestMapping("/del")
public String del() {
return "del";
}
}
이렇게 받아서 사용하면 된다.
콤보박스 값 입력
드롭다운 메뉴를 말한다.
<select name="category">
<option>정치</option>
<option>경제</option>
<option>사회</option>
<option>문화</option>
</select>
String category로 받는다. -> 정치/경제/사회/문화 등의 label을 그대로 받는다.
그러나 실제로는 사용자가 보는 label과 전달되는 값은 다른게 보통이다.
식별자를
<option value="1">정치</option>
이렇게 설정해준다.
이러면 value가 전달된다.
체크박스
<input type="checkbox" name="정치" value="1" id="check1" />
<input type="checkbox" name="사회" value="2" id="check2" />
...
이렇게 하면 서버에서도 String 정치, String 사회, ... 이렇게 일일이 받아야 한다.
sol)
<input type="checkbox" name="categories" value="1" id="check1" />
<input type="checkbox" name="categories" value="2" id="check2" />
<input type="checkbox" name="categories" value="3" id="check2" />
<input type="checkbox" name="categories" value="4" id="check2" />
...
이렇게 하고 1,2번을 체크하고 보내면
Form Data에 category: 1, category: 2 이런 식으로 전달된다.
(title=sdf&category=1&category=2&...)
그러면 서버에서 String[] categories로 받으면
[1, 2] 와 같이 받아올 수 있다.
라디오버튼
<input type="radio" name="category" value="1" id="radio1" />
<input type="radio" name="category" value="2" id="radio2" />
...
(name이 그룹을 묶어주는 역할도 해서 name이 다르면 여러 개 선택 가능. 같은 name끼리의 input 내에서만 배타적 선택)
서버에서는 String[] category로 받는다. 그럼 value가 전달된다.
멀티바이트 문자 전송과 관련된 문제
한글은 Form Data에서 확인하면 잘 날라와있음
POST할 때 UTF-8로 날리는데, Tomcat 웹서버의 기본 설정은 ISO-8859-1...
1. Tomcat 설정을 바꾸기 - 권장하지 않음
2. Servlet이나 Controller에 설정
request.setCharacterEncoding("UTF-8");
근데 입력받을때마다 이걸 해줘야함
그래서 ServletFilter를 사용ㅇㅇ
웹서버 <-> WAS <-resp/req-> Servlet에서
WAS와 Servlet 사이 resp/req를 관장.
권한이나 인코딩 등...
Spring이 필터를 만들어준다.
web.xml에서...
<filter>
<filter-name>characterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
'콤퓨타 왕기초 > Spring' 카테고리의 다른 글
[Spring MVC] POST 입력 - 파일 저장하기(물리경로 얻기) (0) | 2021.05.03 |
---|---|
[Spring MVC] POST 입력 - 파일 업로드 (0) | 2021.05.03 |
[Spring MVC] Query String 파싱, @RequestParam (0) | 2021.05.03 |
[Spring MVC] 사용자 입력 (0) | 2021.05.03 |
[Spring MVC] Jackson.. 객체를 반환할 수 있도록 하기 (0) | 2021.05.02 |