-jsp로 만든 파일은 서블릿컨테이너를 통해 서블릿파일로 변환이 됨
-서블릿 컨테이너에서 내장객체를 확인해서 자동으로 생성해줌
PrintWriter out = response.getWriter();
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<table border="1">
<tr>
<%
for(int i = 1; i<=10; i++){
out.print("<td>"+i+"</td>");
}
%>
<!-- out객체 : 웹 페이지에 정보에 출력하기 위한 객체
서블릿에서 PrintWriter 객체생성한것과 같음
-->
</tr>
</table>
</body>
</html>
HTML에서 클라이언트가 요청하면 받아온 값을
post방식일 때 인코딩 설정 =>request.setCharacterEncoding("euc-kr");
get방식 => server.xml에서 설정Connector URIEncoding="EUC-KR"
클라이언트에 응답할 페이지의 인코딩방식 설정:
response.setContentType("text/html; charset=euc-kr");
input 태그에서 checkbox같은 type은
String[] 변수명 = request.getParameterValues("name값");
배열형태로 담아주고, 출력해줄때는 새로운 String변수를 선언하고 누적시켜 값을 표현해준다!
HTML에서 데이터를 넘겨받을때 String형으로만 받을 수 있는데, 값이 정수라면 형변환해줘야됨
int java = Integer.parseInt(request.getParameter("java"));
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>JSP로 데이터 전송</h1>
<!-- 데이터 전송 조건3가지 : action, name, submit + method -->
<form action="ex08request.jsp">
<!-- 문자열을 가진 서블릿 찾기 때문에 jsp는 확장자 써줘야 파일로 가게됨 -->
<input type="text" name="data">
<input type="submit" value="전송">
</form>
<!-- jsp로 데이터를 전송! -->
</body>
</html>
-데이터 전송 조건3가지 : action, name, submit + method
-문자열을 가진 서블릿 찾기 때문에 jsp는 확장자 써줘야 파일로 가게됨
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String data = request.getParameter("data");
out.print(data);
//out 내장객체로 출력
//서블릿의 출력스트림이 jsp에서는 내장객체라 객체생성안하고 바로out.
%>
<%= data %>
<!-- 표현식으로 출력 -->
\
</body>
</html>
-html에서 보낸 name값인 "data"를 받아옴 =>request.getParameter("data")
-웹페이지에 보여줄때 스크립틀릿(<% %>) 안에 out객체로 바로 보여주거나 표현식(<%= %>)로 출력해 보여줌
<!DOCTYPE html>
<html>
<head>
<style>
tr{
height: 40px;
text-align: center;
}
table{
margin: 0 auto;
}
</style>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body >
<form action="ex09score.jsp" method="post">
<fieldset>
<legend>성적확인프로그램</legend>
<table width="500">
<tr>
<td>이름</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>JAVA점수</td>
<td><input type="text" name="java"></td>
</tr>
<tr>
<td>WEB점수</td>
<td><input type="text" name="web"></td>
</tr>
<tr>
<td>IOT점수</td>
<td><input type="text" name="iot"></td>
</tr>
<tr>
<td>ANDROID점수</td>
<td><input type="text" name="and"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="확인하기!"></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
-fiedset요소는 하나의 그룹으로 묶은 요소들 주변으로 박스 모양의 선을 그려줌
< legend> 요소를 사용하면 < fieldset> 요소의 캡션(caption)을 정의할 수 있다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<style>
tr {
height: 40px;
text-align: center;
}
table {
margin: 0 auto;
}
</style>
<body>
<%
//post방식 인코딩
request.setCharacterEncoding("euc-kr");
//파라미터수집
String name = request.getParameter("name");
int java = Integer.parseInt(request.getParameter("java"));
int web = Integer.parseInt(request.getParameter("web"));
int iot = Integer.parseInt(request.getParameter("iot"));
int and = Integer.parseInt(request.getParameter("and"));
double avg = (java + web + iot + and) / 4;
String score = "";
if (avg >= 95) {
score = "A+";
} else if (avg >= 90) {
score = "A";
} else if (avg >= 85) {
score = "B+";
} else if (avg >= 80) {
score = "B";
} else if (avg < 80) {
score = "F";
}
%>
<fieldset>
<legend>성적확인프로그램</legend>
<table width="500">
<tr>
<td>이름</td>
<td><%=name%></td>
</tr>
<tr>
<td>JAVA점수</td>
<td><%=java%></td>
</tr>
<tr>
<td>WEB점수</td>
<td><%=web%></td>
</tr>
<tr>
<td>IOT점수</td>
<td><%=iot%></td>
</tr>
<tr>
<td>ANDROID점수</td>
<td><%=and%></td>
</tr>
<tr>
<td>평균</td>
<td><%=avg%></td>
</tr>
<tr>
<td>학점</td>
<td><%=score%></td>
</tr>
</table>
</fieldset>
</body>
</html>
Insert title here
성적확인프로그램
이름 | |
JAVA점수 | |
WEB점수 | |
IOT점수 | |
ANDROID점수 | |
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>선택이 어렵다면?</h1>
<form action="ex10input.jsp" method="get">
<fieldset>
<legend>랜덤숫자입력</legend>
<input type="text" name="num">
<input type="submit" value="생성">
</fieldset>
</form>
</body>
</html>
-fieldset 안에 랜덤숫자 입력받아,입력한 숫자만큼의 input태그가 생성되게 하는 jsp생성시켜줌
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
//파라미터수집
int num = Integer.parseInt(request.getParameter("num"));
//num을가져오기 받아온 값이 String 타입이기때문에 형변환해줌
%>
<form action="ex10result.jsp"> // 폼태그 값을 ex10result.jsp로 보내줌
<fieldset>
<legend> 랜덤당첨 작성 </legend>
주제 : <input type="text" name="title"><br>
<!-- 입력했던 num의 수만큼 input태그를 만들어야함 -->
<%
//입력한 num만큼 input태그 반복하기
for (int i = 1; i <= num; i++) {
out.print("아이템" + i + "<input type='text' name='item'><br>");
}
%>
<input type="submit" value="랜덤 당첨 시작">
</fieldset>
</form>
</body>
</html>
-입력한 수만큼의 input태그가 생성되면 사용자가 input태그에 값을 입력하게됨=>값은 name값인 item에 저장
<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
//파라미터수집
//주제 반복했던 input태그 가져오기
String title = request.getParameter("title");
String[] items = request.getParameterValues("item");
Random rd = new Random();
int random = rd.nextInt(items.length);
//입력값이 3이라면 랜덤수는 0,1,2 가나옴
%>
<fieldset>
<legend>
랜덤당첨결과
</legend>
<!-- 주제데이터 받아와서 출력하기 -->
<%= title %>
<!-- 반복했던 input태그들 중에 랜덤으로 출력하기 -->
<%= items[random] %>
</fieldset>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>page이동하기</h1>
<form action="ex11redirect.jsp">
<input type="submit" value="이동하기">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- <a href="http://www.naver.com">네이버 이동</a> -->
<%
response.sendRedirect("http://www.naver.com");
//sendRedirect : 페이지 강제이동
%>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>원하는 페이지로 이동</h1>
<form action="ex12moveURL.jsp" method="get">
<select name="page">
<option value="naver">네이버</option>
<option value="daum">다음</option>
<option value="google">구글</option>
</select>
<input type="submit" value="페이지 이동">
</form>
</body>
</html>
-스크립틀릿에 response.sendRedirect("주소");
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
//파라미터 수집
String homepage = request.getParameter("page");
//각 데이터가 네이버,다음,구글이라면 맞는 페이지 이동하게
if(homepage.equals("naver")){
response.sendRedirect("http://www.naver.com");
} else if(homepage.equals("daum")){
response.sendRedirect("http://www.daum.net");
} else {
response.sendRedirect("http://www.google.com");
}
%>
</body>
</html>