GET방식과 다르게 POST 방식은 server.xml 파일을 수정해도 한글이 깨짐. 이럴때는 입력 받는 request 객체의 문자 인코딩 방식을 따로 선언해주면 됨.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); //사용자가 입력한 정보인 request 객체의 인코딩 방식을 UTF-8로 변환.
doGet(request, response); //get방식에서 전송 방식만 다르기 때문에 post방식에서는 get방식 메서드를 그대로 사용.
}
인코딩 방식으로써
UTF-8 방식 : UTF-8은 유니코드인데 한글을 포함한 거의 모든 문자의 인코딩을 지원해줌. 또한 현재 세계적으로 UTF-8을 쓰는 경향이 있기에 UTF-8을 사용하는 좋음. 단점은 EUC-KR방식에 비해서 용량이 살짝 큼. 한글 한 글자-> 3바이트. 나머지는 EUC-KR과 용량 같음.
EUC-KR방식 : 한국, 한국의 한자, 영어를 표현 가능. 하지만 중국식 한자, 일본식 한자등을 인코딩 해주지 못 함. 장점은 UTF-8에 비해 용량이 살짝 작음.한글 한 글자 -> 2바이트. 나머지는 UTF-8과 용량 같음.
< label for = "userid"> 아이디 : < /label>
< input type = "text" name = "id", id = "userid">< br>
label값의 for 속성을 통해 input 태그를 도와줄 수 있음. for 태그의 속성값과 input 태그의 id 속성값이 같으면 둘이 연결됨. 이렇게 연결되면 단순히 글자로 아이디 : 입력창 이렇게 보이지만 아이디 부분을 클릭하면 입력창 부분에 커서가 나타나게 됨. 즉 서포터 개념.
for을 안 쓰고 input 태그 앞 뒤로 label을 열고 닫아주면서 사용도 가능.
주로 radio 버튼이나 checkbox버튼과 같이 작은 크기의 input창에서 내용을 대신 클릭하게 도와주는 방식으로 유용하게 사용 가능.
여러 개 중 하나만 선택 가능
pre 태그 안의 값들은 화면에 그대로 표시됨.(스페이스바, 엔터키 등등..)
< hr>태그를 사용해 수평선 그리기 가능.
check박스를 만듬. radio와 큰 차이점은 여러개를 선택 가능.
checkbox의 경우 여러 값을 입력받기 때문에 값을 1개로만 저장하면 안 됨. 그래서 getParameterValues를 사용. getParameterValues은 값을 배열 값으로 저장.
String items[] = request.getParameterValues("item");
select태그를 만들어두고 안에 option태그를 추가해서 드롭 다운 요소들을 추가시킴.
size 속성은 한 번에 보여줄 목록 갯수.
multiple 속성은 여러 항목을 다중 선택 가능하게 만듬. ctr or shift키 누르고 클릭하면 다중 선택 가능.
< select id = "job" name = "job" size = "1" multiple = "multiple">
< option value = "">선택하세요< /option>
< option value = "학생">학생< /option>
< option value = "군인">군인< /option>
< option value = "백수">백수< /option>
< option value = "취준생">취준생< /option>
< option value = "취업가자">취업가자< /option>
< /select>
스크립트릿 선언 태그 안에선 자바 코드로 인식하기에 //같은 자바 주석도 사용 가능.
1.스크립트릿 자바 코드를 작성 <% %>
2.선언 변수와 메소드 선언 <%! %>
3.표현식 계산식이나 함수를 호출한 결과를 문자열 형태로 출력 <%= %>
4.주석 JSP페이지에 주석 달기 <%-- --%>.
4-1. < !-- --> 와의 차이점. 둘 다 주석 기능을 갖고 있지만 < !-- -->은 HTML에서 소스 보기를 하면 주석이 보인다. 하지만 <%-- --%>은 HTML에서 소스 보기를 해도 보이지 않는다.
5.지시자 JSP의 속성을 지정. < %@ %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%!
String str = "안녕하세유";
int a = 5, b = -5;
public int abs(int n) {
if (n < 0) {
n = -n;
}
return n;
}
%>
< html>
< head>
< meta charset="EUC-KR">
< title>Insert title here< /title>
< /head>
< body>
< %
out.print(str + "< br>");
out.print(a + "의 절대값 : " + abs(a) + "< br>");
out.print(b + "의 절대값 : " + abs(b) + "< br>");
%>
< /body>
< /html>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%!
int global_cnt = 0;
%>
< html>
< head>
< meta charset="EUC-KR">
< title>Insert title here< /title>
< /head>
< body>
< %
int local_cnt = 0;
out.print("< br> local_cnt : ");
out.print(++local_cnt);
out.print("< br> global_cnt : ");
out.print(++global_cnt);
%>
< /body>
< /html>
새로고침을 계속 하면 global_cnt는 1씩 증가하지만 local_cnt는 증가하지 않음. 이게 선언문과 스크립트릿에서 변수 선언의 차이.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%!
String str = "안녕하세요";
int a = 5, b = -5;
public int abs(int n) {
if (n < 0) {
n = -n;
}
return n;
}
%>
< html>
< head>
< meta charset="EUC-KR">
< title>Insert title here< /title>
< /head>
< body>
< %= str %>< br>
<%= a %> 의 절대값 : <%= abs(a)%> < br> <%-- 이런 식으로도 자바문 작성 가능 --%>
<%= b %> 의 절대값 : <%= abs(b)%> < br> <%-- 이런 식으로도 자바문 작성 가능 --%>
< /body>
< /html>
pase 지시자의 여러 속성인 import나 language 등 사용 가능.
지시자란 jsp에서 페이지가 실행될 때 정보를 jsp컨테이너에게 알리는 역할을 함.
< %@ page import = "java.text.SimpleDateFormat" %>
< %@ page import = "java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
< html>
< head>
< meta charset="EUC-KR">
< title>Insert title here< /title>
< /head>
< body>
< %
Calendar date = Calendar.getInstance();
SimpleDateFormat today = new SimpleDateFormat("yyyy년 MM월 dd월");
SimpleDateFormat now = new SimpleDateFormat("hh시 mm분 ss초");
%>
오늘은 < b> <%= today.format(date.getTime()) %>< /b>입니다. < br>
지금 시각은 < b> <%= now.format(date.getTime()) %>< /b>입니다.
< /body>
< /html>
출처 : 국비 교육