jsp란?
JSP 란 JavaServer Pages 의 약자이며
HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.
JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고
그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.
Servlet : java안에 html 코드 넣어놓은것 (복잡)
jsp : html코드 안에 java 넣어놓은것 (더 쉬움)
참조: https://javacpro.tistory.com/43
scriptlet
java 코드영역을 일컬어 scriptlet이라고 한다.
jsp의 스크립트
scriptlet은 3가지 영역으로 나눠진다.
1. 선언부 : 변수 선언, 메서드 선언 <%! %>
전역(global)변수, 함수, 클래스
2. 코드부 : 자바 코드를 실행
변수 선언, 함수 호출, 객체 생성, 연산, 제어문 사용, 출력 등 <% %>
3. 값 : 연산, 출력(변수의 값, 메서드의 결과값)<%= %>
https://javacpro.tistory.com/43 참조
sendRedirect 와 setAttribute의 차이
sendRedirect : 짐 안가지고 감
setAttribute : 짐 가지고 감
내장객체(암시객체)
* 동적으로 할당(객체 생성)하지 않고 (언제든지 바로)사용할 수 있는 객체
request | javax.servlet.http.httpServletRequest 또는 javax.servlet.ServletRequest |
웹 브라우저의 요청 정보를 저장하고 있는 객체 1) parameter 값을 취득 2) session에 접근 3) object 전송 4) encoding 설정 |
response | javax.servlet.http.httpServletResponse 또는 javax.servlet.ServletResponse |
웹 브라우저의 요청에 대한 응답 정보를 저장하는 객체 이동 시 사용 |
out | javax.servlet.jsp.JspWriter | JSP 페이지의 출력할 내용을 가지고 있는 웹출력 스트림 객체 |
session | javax.servlet.http.HttpSession | 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체 짐을 보관하고 나중에 찾는 개념 |
application | javax.servlet.ServletContext | 웹 애플리케이션 Context의 정보를 담고 있는 객체 |
pageContext | javax.servlet.jsp.PageContext | JSP 페이지에 대한 정보를 저장하고 있는 객체 |
page | java.lang.Object | JSP 페이지를 구현한 자바 클래스 객체 |
config | javax.servlet.ServletConfig | JSP 페이지에 대한 설정 정보를 담고 있는 객체 |
exception | java.lang.Throwable | JSP 페이지에서 예외가 발생한 경우 사용하는 객체 |
참조: https://pathas.tistory.com/184
<out 예제>
<!-- out : 웹출력 - JSP 페이지의 출력할 내용을 가지고 있는 출력 스트림 객체 -->
<h3>out</h3>
<%
String title = "hello jsp";
out.println("<p>" + title + "</p>"); // = servlet java(html)
%>
<!-- out과 같은 웹출력 기능 -->
<p><%=title %></p>
<request 예제>
<!-- request : 1) parameter 값을 취득 2) session에 접근 3) object 전송 4) encoding 설정 -->
<h3>request</h3>
<%
// HttpServletRequest // 원본 이름
// 4)encoding 설정
request.setCharacterEncoding("utf-8"); //setCharacterEncoding : servlet에서 한글 깨질때 사용했음
// 1)parameter 값을 취득
String name = request.getParameter("name"); // "name"값을 받아옴
%>
<p><%=name %></p> <!-- %웹에 보이게 하기% -->
<%
String hobby[] = request.getParameterValues("hobby");
//Parameter의 자료형은 string이다, getParameterValues은 여러개 받을 수 있다.
for(int i = 0;i < hobby.length; i++){
%>
<p><%= hobby[i] %></p>
<%
}
%>
session에 접근 : request를 통해 접근하는 방법
<%
// session에 접근
request.getSession().setAttribute("visited", "1");
// session에 저장된게 뭔지 모르니까 Object에 저장
Object obj = request.getSession().getAttribute("visited");
// object에 저장된 것을 다시 string으로 변환
String str = (String)obj;
// 내장객체 out 이용
out.println("<h5>" + str + "</h5>");
%>
<!-- out문장 이렇게 써도됨-->
<h5><%=str %></h5>
<response 예제>
index1.jsp
<!-- response : 이동 -->
<h3>response</h3>
//변수 선언 가능
String name = "Tom";
//단순이동
response.sendRedirect("default.jsp?name=" + name + "&age=" + 15);
default.jsp
<h1>default.jsp</h1>
String name = request.getParameter("name");
<p>이름:<%=name %></p>
<pageContext 예제>
* Human.java
package sample02;
import java.io.Serializable;
// Serializable : 직렬화 (dto에는 붙이자)
public class Human implements Serializable{
String name;
int age;
// 기본생성자
public Human() {
}
// 매개변수가 있는 생성자
public Human(String name, int age) {
super();
this.name = name;
this.age = age;
}
// setter, getter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
* index1.jsp
<!-- pageContext : 이동 -->
<h3>pageContext</h3>
<%
String name = "성춘향";
int age = 16;
// response.sendRedirect("default.jsp?name=" + name + "&age=" + age);
// 짐싸! (sendRedirect는 짐 안가지고감, setAttribute는 가지고감)
// human 객체 생성
Human human = new Human(name, age); // Human 객체 생성시 import문도 추가됨
request.setAttribute("lady", human);
// 잘가! = getRequestDispatcher
pageContext.forward("default.jsp"); // pageContext : 이동
%>
* default.jsp
<%
Human human = (Human)request.getAttribute("lady");
// lady로 받는다 : index1에서 request.setAttribute("lady", human); 라고 썼으니까
%>
<p>이름:<%=human.getName() %></p>
<p>나이:<%=human.getAge() %></p>
<session 예제>
*Human.java (생략 : 위 예제와 동일)
*index1.jsp
<!-- session : 저장소에 저장 -->
<h3>session</h3>
<%
Human human = new Human("홍두께", 25);
// 짐을 보관해(나중에 찾을꺼임)!
session.setAttribute("man", human); // 이름을 man으로 해서 보관
// 잘가! :이동
response.sendRedirect("default.jsp");
//이동은 pageContext.forward 써도되고 sendRedirect 써도된다.
%>
*default.jsp
<%
// session에 짐 보관해놓은걸 다시 찾는 과정
Human human = (Human)session.getAttribute("man");
%>
<p>이름:<%=human.getName() %></p>
<p>나이:<%=human.getAge() %></p>
'front-end' 카테고리의 다른 글
[JDBC] JDBC란? (0) | 2023.02.09 |
---|---|
[Ajax] Ajax 비동기방식 개념 (0) | 2023.02.08 |
[servlet] servlet 개념 알기, GET/POST, Session (0) | 2023.02.06 |
[Jquery] Jquery 사용하기, 함수 호출 방법, radio / checkbox / select 알아보기 (0) | 2023.02.03 |
[json] json 개념과 json 데이터를 이용하여 테이블 만들기 (0) | 2023.02.02 |
댓글