JSP 기초 2

이정우·2021년 10월 21일
0

JSP

목록 보기
2/10

POST 방식에서 한글 입출력

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 방식과 EUC-KR방식

인코딩 방식으로써
UTF-8 방식 : UTF-8은 유니코드인데 한글을 포함한 거의 모든 문자의 인코딩을 지원해줌. 또한 현재 세계적으로 UTF-8을 쓰는 경향이 있기에 UTF-8을 사용하는 좋음. 단점은 EUC-KR방식에 비해서 용량이 살짝 큼. 한글 한 글자-> 3바이트. 나머지는 EUC-KR과 용량 같음.

EUC-KR방식 : 한국, 한국의 한자, 영어를 표현 가능. 하지만 중국식 한자, 일본식 한자등을 인코딩 해주지 못 함. 장점은 UTF-8에 비해 용량이 살짝 작음.한글 한 글자 -> 2바이트. 나머지는 UTF-8과 용량 같음.

label for

< label for = "userid"> 아이디 : < /label>
< input type = "text" name = "id", id = "userid">< br>

label값의 for 속성을 통해 input 태그를 도와줄 수 있음. for 태그의 속성값과 input 태그의 id 속성값이 같으면 둘이 연결됨. 이렇게 연결되면 단순히 글자로 아이디 : 입력창 이렇게 보이지만 아이디 부분을 클릭하면 입력창 부분에 커서가 나타나게 됨. 즉 서포터 개념.

for을 안 쓰고 input 태그 앞 뒤로 label을 열고 닫아주면서 사용도 가능.
주로 radio 버튼이나 checkbox버튼과 같이 작은 크기의 input창에서 내용을 대신 클릭하게 도와주는 방식으로 유용하게 사용 가능.

input radio

여러 개 중 하나만 선택 가능

pre태그

pre 태그 안의 값들은 화면에 그대로 표시됨.(스페이스바, 엔터키 등등..)

hr 태그

< hr>태그를 사용해 수평선 그리기 가능.


input checkbox

check박스를 만듬. radio와 큰 차이점은 여러개를 선택 가능.

getParameterValues

checkbox의 경우 여러 값을 입력받기 때문에 값을 1개로만 저장하면 안 됨. 그래서 getParameterValues를 사용. getParameterValues은 값을 배열 값으로 저장.
String items[] = request.getParameterValues("item");

select 드롭 다운

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>

선택하세요 학생 군인 백수 취준생 취업가자 다중 선택 학생 군인 백수 취준생 취업가자

jsp 수행 순서

  1. 클라이언트가 jsp파일 요청(내용 입력 등등)
  2. 웹 서버가 jsp 요청을 서블릿 컨테이너에 넘김. 그러면 서블릿 컨테이너는 해당 jsp파일을 찾아서 서블릿 파일(서블릿.java)을 생성.
  3. 서블릿 파일이 컴파일되어서 서블릿 클래스 파일 생성.(서블릿.class)
  4. 서블릿 수행 결과를 웹 서버로 전달.
  5. 서블릿의 출력 결과를 html형태로 사용자가 보게 됨.

JSP 기본 태그

스크립트릿 선언 태그 안에선 자바 코드로 인식하기에 //같은 자바 주석도 사용 가능.

1.스크립트릿 자바 코드를 작성 <% %>
2.선언 변수와 메소드 선언 <%! %>
3.표현식 계산식이나 함수를 호출한 결과를 문자열 형태로 출력 <%= %>
4.주석 JSP페이지에 주석 달기 <%-- --%>.
4-1. < !-- --> 와의 차이점. 둘 다 주석 기능을 갖고 있지만 < !-- -->은 HTML에서 소스 보기를 하면 주석이 보인다. 하지만 <%-- --%>은 HTML에서 소스 보기를 해도 보이지 않는다.
5.지시자 JSP의 속성을 지정. < %@ %>

JSP에서 선언문에 JAVA 변수 선언과 메소드 사용하기

<%@ 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>

JSP 선언문과 스크립트릿 차이.

<%@ 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는 증가하지 않음. 이게 선언문과 스크립트릿에서 변수 선언의 차이.

jsp에서 표현식으로 java문 실행

<%@ 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>

JSP import하기

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>

출처 : 국비 교육

profile
프로그래밍 공부 중!

0개의 댓글