티스토리 뷰
그동안은 서블릿 클래스를 만들거나 web.xml에 작성을 했었다.
서블릿 클래스는 자바 코딩은 간편하지만 html을 문자열로 일일이 넣었기 때문에 불편했었다.
jsp는 이러한 단점을 보완하여 java 코드와 html 코드를 모두 편리하게 작성할 수 있다.
예제를 통해 jsp 작성법을 알아보자.
jsp와 서블릿의 차이점 알아보기
예제 1 - DB의 member 테이블 활용하기
1. DB 사용을 위해 WebContent - WEB-INF - lib 폴더에 ojdbc6.jar 파일 넣기
2. Java Resources - src에 DBConnect 클래스, MemberDao 클래스, MemberDto 클래스 넣기
MemberDao
https://live-for-myself.tistory.com/108
[Java] JDBC #2 DAO
DAO는 Data Access Object로 데이터베이스의 데이터에 접근하기 위한 객체이다. 저번 게시물에서 DTO(Data Transfer Object)를 활용해보았는데 이번 게시물에서는 CRUD 작업을 수행하는 DAO 클래스를 활용해볼
live-for-myself.tistory.com
MemberDto
https://live-for-myself.tistory.com/101
[Java] DTO(Data Transfer Object) or VO(Value Object) /getter(), setter()
DTO는 Data Transfer Object의 약어로 Value Object, 즉 VO라고도 불린다. 오로지 정보를 보관, 전달을 위해 생성된 클래스로, 매개변수를 정리할 수 있고 코드를 간결하게 만드는데 도움이 된다. 전에, 리모
live-for-myself.tistory.com
3. index.html 작성
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index.html</title>
<link rel="stylesheet" href="/Step01_Example/css/bootstrap.css" />
<script src="/Step01_Example/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container">
<h1>인덱스 페이지입니다.</h1>
<ul>
<li><a href="/Step01_Example/member/insertform.html">회원 추가하러 가기</a></li>
<li><a href="/Step01_Example/member/deleteform.html">회원 삭제하러 가기</a></li>
<li><a href="/Step01_Example/member/updateform.html">회원 정보 수정하러 가기</a></li>
<li><a href="/Step01_Example/member/list">회원목록 보기</a></li>
</ul>
</div>
</body>
</html>
회원 추가, 삭제 정보 수정 폼, 회원목록 페이지로 이동하도록 작성
결과
4. Servlet으로 작성
MemberInsertServlet.java
package test.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;
import test.dao.MemberDao;
import test.dto.MemberDto;
@WebServlet("/member/insert")
public class MemberInsertServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//비즈니스 로직
//요청 파라미터 추출
String name = req.getParameter("name");
String addr = req.getParameter("addr");
//DB에 저장
MemberDto dto = new MemberDto();
dto.setName(name);
dto.setAddr(addr);
new MemberDao().insert(dto);
// 응답 인코딩 설정
resp.setCharacterEncoding("utf-8");
// 응답 컨텐츠type 설정(웹브라우저에 어떤 컨텐츠를 응답할 것인지 알려서 준비를 시킨다.)
resp.setContentType("text/html;charset-utf-8");
// 요청을 한 클라이언트에게 응답할 수 있는 객체의 참조값 얻어오기
PrintWriter pw = resp.getWriter();
pw.println("<!DOCTYPE html>");
pw.println("<html>");
pw.println("<head>");
pw.println("<meta charset= \"UTF-8\">");
pw.println("<title>회원 추가 결과 페이지</title>");
pw.println("</head>");
pw.println("<body>");
pw.println(name + "의 정보가 DB에 저장되었습니다.");
pw.println("<a href='/Step01_Example/member/list'>목록보기</a>");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
}
회원 추가 폼1 : /Step01_Example/member/list 에 get 방식으로 폼의 내용 전달.
결과
5. MemberInsertServlet의 내용을 jsp 파일로 만들어보기
- JSP는 클라이언트가 동적페이지를 요청 했을 경우 웹서버에서 WAS에게 제어권을 넘기고 WAS가 서블릿 소스코드로 변환되고 서블리스 클래스로 컴파일 되어 응답하는 구조로 이루어져 있다.
- <%%> 에 자바 코드를 작성할 수 있다.
- <%%>내부는 서블릿의 service() 메소드 안으로 볼 수 있다.
- <%= %>의 '=' 뒤에는 웹에 바로 출력할 내용을 작성하면 된다.
member 폴더에 insert.jsp 파일 생성
<%@page import="test.dao.MemberDao"%>
<%@page import="test.dto.MemberDto"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
String addr = request.getParameter("addr");
MemberDto dto = new MemberDto();
dto.setName(name);
dto.setAddr(addr);
new MemberDao().insert(dto);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/insert.jsp</title>
</head>
<body>
<p>회원정보를 추가했습니다.</p>
<a href="/Step01_Example/member/list.jsp">목록보기</a>
</body>
</html>
jsp는 html 안에 java, 서블릿은 그 반대이므로 jsp에서는 html을 더 편리하게 작성할 수 있는 모습을 확인할 수 있다.
servlet은 논리 경로를 매핑하는 방식이었다면, jsp는 물리주소 그대로, member 폴더안에 작성하면된다.
자바 코딩이 필요없는 파일도 jsp로 만드는 것이 일반적이다.
'WEB > Java BackEnd' 카테고리의 다른 글
[WEB-jsp/servlet] jsp에 jsp 삽입하기 (0) | 2021.11.24 |
---|---|
[WEB] DBcpBean(DataBase Connection Pool Bean) (0) | 2021.11.24 |
[WEB] Get, Post (0) | 2021.11.23 |
[WEB-jsp/servlet] 서블릿 Servlet / Get, web.xml, servlet.java (0) | 2021.11.23 |
[Java] Generic Class / 일괄 import 단축키 (0) | 2021.11.08 |
- Total
- Today
- Yesterday
- 스프링
- web
- jsp
- bootstrap
- 고득점 키트
- Java
- baekjoon
- Case When
- 문자열
- 큐
- 파이썬
- Oracle
- 브루트 포스
- javascript
- 덱
- Django
- 프로그래머스
- jQuery
- 단계별로풀어보기
- 장고
- brute force
- 자바
- 정렬
- R
- python
- append
- 백준
- 자바스크립트
- html
- CSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |