mjeongriver
article thumbnail
Published 2022. 11. 29. 15:49
day40-jsp TIL/JSP

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

 

클래스로 만들 땐 override에서 저 2개 선택 할 것

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 설정 파일 수정

 

누르고 - generate deployment descriptor stub
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>

콘솔창에는 헬로라고 뜨고 url 이름값이 변동됨

2. 2

* GET/ POST 방식 브라우저 한글처리

get 방식
post 방식-중요한건 post로 처리

3.1 

* 내장 객체

request getparameter

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

 

'TIL > JSP' 카테고리의 다른 글

day44-jsp  (0) 2022.12.05
day43-jsp  (1) 2022.12.02
day42-jsp  (0) 2022.12.01
day41-jsp  (2) 2022.11.30
day39-jsp  (2) 2022.11.28
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그