1. 1
* jsp태그 - 스크립 트릿
- JSP페이지에서 JAVA언어를 사용하기 위한 요소 중 가장 많이 사용하는 태그입니다.
- 스크립트릿 안에는 우리가 알고 있는 거의 모든 JAVA 코드를 사용할 수 있습니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//자바 코드
int a = 10;
if (a >= 10) {
out.println("10보다 큼"); //화면 출력
} else {
out.println("10보다 작음");
}
%>
<hr>
<%
for (int i = 1; i <= 10; i++) {
out.println(i + "<br>"); //문자열로 넣으면 태그로 인식이 됩니다.
}
%>
<hr>
<%
int num = 0;
if (num >= 0) {
out.println("<h6>num은 0보다 큽니다</h6>");
}
%>
<hr>
<% if(num >= 10){ %>
<h6>num은 10보다 큼</h6>
<% } else { %>
<h6>num은 10보다 작음</h6>
<% } %>
<hr>
1. 구구단 3단 out.println과, br 태그를 사용해서 브라우저 화면에 출력
<hr>
<%
for(int i = 1; i <= 9; i++){
out.println("3" + "*" + i + "=" + 3 * i + "<br>");
}
%>
<hr>
2. 체크박스 20개를 브라우저에 생성<br>
<hr>
<form>
<% for(int i = 1; i <= 20; i++){ %>
<input type = "checkbox" name = "test"> <br>
<% } %>
</form>
</body>
</html>
1. 2
* 선언(Declaration)
- JSP 페이지 내에서 사용되는 변수 또는 메서드를 선언할 때 사용합니다.
- 여기 선언된 변수 및 메서드는 전역의 의미(멤버변수) 로 사용됩니다.
* 표현식(Expression)
- JSP 페이지 내에서 사용되는 변수의 값 또는 메서드 호출 결과 값을 출력하기 위해 사용됩니다.
- 결과 값의 데이터 유형은 String이며, 세미콜론(;)을 사용할 수 없습니다.
- 표현식은 out.println()을 대체합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//상단부 선언
int a = 10;
String str = "hello world";
int b = 3;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--
주석 ctrl + shift + /
<%
out.println(a + "<br>");
out.println(str + "<br>");
%>
--%>
<!--
html 주석은 창에서 f12 개발자 창에서 보임
-->
<%=a %><br>
<%=str %><br>
<h2>구구단 3단을 표현식을 통해서 출력</h2>
<% for(int i = 1; i <= 9; i++){ %>
<%= b + "*" + i + "=" + 3 * i + "<br>" %>
<%-- 3 * <%=i %> = <%=3*i %><br> --%>
<% } %>
<h2>반복문으로 체크박스에 1~20까지 이름을 붙여서 가로 출력</h2>
<%for(int i = 1; i <= 20; i++){ %>
<input type = "checkbox" name = "aaa"> <%=i %>
<%-- <%= "<input type = \"checkbox\" name =\"test\">" + i %> --%>
<% } %>
</body>
</html>
1. 3
* 지시자(directive) - JSP페이지의 전체적인 속성을 지정할 때 사용합니다.
1) page: JSP페이지에 대한 정보를 지정한다. JSP가 생성하는 문서의 타입, 임포트, 에러 페이지 등 페이지에서 필요로 하는 정보를 설정합니다.
- 페이지 디렉티브에 선언 될 수 있는 속성들
a. language - 언어를 지정합니다. java만 지정할 수 있습니다.
b. import - 패키지를 import할 때 사용합니다.
c. errorPage - 설정 된 페이지에서 에러가 발생했을 시에 미리 만들어 둔 에러 페이지를 호출합니다.
d. contentType - text/html이라고 쓰면 결과가 HTML문서로 만들어집니다.
e. pageEncoding - 출력 문자 인코딩 입니다. 한글을 사용하려면 utf-8로 지정합니다.
2) include: JSP 페이지의 특정 영역에 다른 문서를 포함시킵니다.
3) taglib: JSP 페이지에서 사용할 태그 라이브러리를 지정합니다
<%@page import="java.util.HashMap"%>
<%@page import="java.util.HashSet"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String now = sdf.format(date);
ArrayList<String> list = new ArrayList<>();
HashSet<Integer> set = new HashSet<>(); //데이터가 중복이 안됨.
HashMap<Integer, String> map = new HashMap<>();
list.add("hong");
list.add("kim");
set.add(1);
set.add(1); //중복 데이터는 허용하지 않기 때문에 들어가지 않음.
map.put(1, "kim");
map.put(2, "hong");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
지금:<%=now %> <br>
리스트:<%=list.toString() %> <br>
맵:<%=map.toString() %> <br>
셋:<%=set.toString() %> <br>
</body>
</html>
2.1
* get post, 서블릿
1) url-mapping
package com.example.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/banana") //요청에 대하여 어노테이션으로 연결(고유)
public class TestServlet extends HttpServlet{
private static final long serialVersionUID = 1L; //상징적으로 가지고 있어야 함
//특정 클래스 오버라이드
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//System.out.println("헬로");
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("헬로헬로"); //컨텐츠 타입이 존재함
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
2) web.xml 설정 파일 수정
package com.example.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//web.xml에 맵핑 설정
public class TestServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("헬로");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
- xml 파일 열어서 수정
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>JSPBasic</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- TestServlet2를 appServlet으로 선언 -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>com.example.servlet.TestServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/melon</url-pattern>
</servlet-mapping>
</web-app>
2. 2
* GET/ POST 방식 브라우저 한글처리
3.1
* 내장 객체
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- action에는 지정된 페이지의 경로 -->
<!-- post 방식은 form 태그가 필요하고 method="post"을 적습니다. -->
<form action="req_get02.jsp">
아이디:<input type = "text" name="id"> <br>
비밀번호:<input type = "password" name="pw"> <br>
<!-- name은 변수, value는 값 -->
동의항목:
<input type = "checkbox" name = "agree" value = "1"> 동의 1
<input type = "checkbox" name = "agree" value = "2"> 동의 2
<input type = "checkbox" name = "agree" value = "3"> 동의 3
<input type = "submit" value = "확인">
</form>
</body>
</html>
<%@page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//리퀘스트 객체에서 관련 정보 얻기
StringBuffer url = request.getRequestURL(); //전체 주소
String uri = request.getRequestURI(); //전체 주소 - ???
String path = request.getContextPath(); //프로젝트 식별 이름
String remoteAddr = request.getRemoteAddr(); //ip 주소
//단일값
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//다중값
String[] agrees = request.getParameterValues("agree");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
url: <%=url %><br>
uri: <%=uri %><br>
컨패스: <%=path %><br>
접속한 주소: <%=remoteAddr %><br>
아이디:<%=id %><br>
pw:<%=pw %><br>
동의 항목: <%=Arrays.toString(agrees) %>
</body>
</html>
- 예제 1
- 예제 2
- 예제 3
1) checkbox, radio, option 모두 value 값이 나와야 함
2) post 방식으로 해야 보안성에 강함
3) 확장자 빼먹지 말 것
4) request.setCharacterEncoding("utf-8") 넣어줘야 한글이 깨지는 것을 방지할 수 있음
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--
태그에 필요한 속성을 지정하고 post 방식으로 전달하고, ok 페이지에서는 사용자가 입력한 값을 출력
--%>
<form action = "req_quiz_ok.jsp" method = "post">
<h3>입력 양식</h3>
아이디: <input type = "text" placeholder = "힌트: 8글자" maxlength = "8" size = "10" name = "id"><br>
비밀번호: <input type = "password" placeholder = "힌트: 알면뭐하게" size = "10" name = "pw"><br>
<!-- checkbox, radio 속성은 반드시 name 속성을 통일 시켜서 하나의 그룹으로 묶습니다. -->
관심분야:
<input type = "checkbox" name = "inter" value = "JAVA" > JAVA
<input type = "checkbox" name = "inter" value = "JSP"> JSP
<input type = "checkbox" name = "inter" value = "JS"> JS
<input type = "checkbox" name = "inter" value = "HTML"> HTML
<input type = "checkbox" name = "inter" value = "ORACLE"> ORACLE
<br>
전공분야:
<input type = "radio" name = "major" value = "경영"> 경영
<input type = "radio" name = "major" value = "컴퓨터"> 컴퓨터
<input type = "radio" name = "major" value = "수학"> 수학
<input type = "radio" name = "major" value = "기계공학"> 기계공학
<br>
지역:
<select name = "region">
<option value = "s">서울</option>
<option value = "k">경기</option>
<option value = "b">부산</option>
<option value = "i">인천</option>
</select>
<br>
정보입력:<br>
<textarea rows="5" cols="30" name = "info"></textarea>
<br>
<!-- form 태그의 데이터를 서버로 전송하는 역할 -->
<input type = "submit" value="확인">
<input type = "reset" value="폼초기화">
</form>
</body>
</html>
<%@page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8"); //post 한글 처리
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String[] inter = request.getParameterValues("inter"); //checkbox라서 다중값
String major = request.getParameter("major"); //다중 택 1이라서 그냥 받으면 됨.
String region = request.getParameter("region"); //select
String info = request.getParameter("info"); //textarea
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
아이디: <%=id %> <br>
패스워드: <%=pw %> <br>
관심분야: <%=Arrays.toString(inter) %> <br>
전공: <%=major %> <br>
지역: <%=region %> <br>
정보 입력: <%=info %> <br>
</body>
</html>