๋ชฉ์ฐจ
1. 2023.12.20(์)
โ โ โ Servlet(์๋ธ๋ฆฟ) โ โ โ
0. ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๊ธฐ ์ํ ์น ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ์ธ์ด์ ํ ์ข
๋ฅ.
(JAVA ๊ธฐ๋ฐ)
1. JSP ์์ ์ ์ ์ธ ๋ถ๋ถ์ ๋ด๋นํ๊ณ , Servlet ์์๋ ๋์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ถ๋ถ์ผ๋ก ์ฌ์ฉ๋์ด ๋ณด๋ค ํจ์จ์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋ค.
- JSP → ๋จ์ . MVC ํจํด์ ์ ์ฉํ๊ธฐ ํ๋ค๋ค.
- Servlet → ๋จ์ . ์น ํ์ด์ง(view) ์์ฑ์ด ๋ฒ๊ฑฐ๋กญ๊ณ ๋ณต์กํ๋ค. (๋ถํธ)
- Servlet + JSP → MVC ํจํด ์ ์ฉ ๋ฐ ์น ํ์ด์ง(view)๋ฅผ ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์์ฑ.
๋จ์ . ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๊ฒ ๋๋ค.
2. JSP ๋ ๋ด๋ถ์ ์ผ๋ก Web Container ๊ฐ Servlet ์ผ๋ก ๋ณ๊ฒฝ์์ผ์ค๋ค.
3. WEB-INF ๋ ํ๊ฒฝ ์ค์ ํ์ผ์ด ์ ์ฅ๋๋ ๊ณณ
(→ ์ธ๋ถ์์๋ ์ ๊ทผ ๋ถ๊ฐ / ๊ธ์ง) check~!!!
- `lib` : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ ์ ์ฅ(ojdbc.jar, jstil.jar ๋ฑ)
- `J2EE`
- `J2SE`
- `classes` : class ํ์ผ์ด ์ ์ฅ(servlet)
`ใclasses > com > util > MyUtil.classใ`
์๋๋ ์ด๋ ๊ฒ ๋ง๋ค์ด์ผ ํ์ง๋ง ์ดํด๋ฆฝ์ค๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐ
์ค์ ์์น๋
`ใC:\WebStudy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\WebApp20\org\apache\jspใ`
* `.jar` : java
* `.war` : web(ํ๋ก์ ํธ ์๋ ๋ชจ๋ ๊ฒ์ ์์ถํ ๋)
* `.ear` : jar + war
`web.xml` : context path ์ ํ๊ฒฝ ์ค์
4. `ใinit()ใ` ๊ณผ `ใdestory()ใ`๋ ๋จ ํ ๋ฒ ํธ์ถ๋๋ฉฐ
`ใservice()ใ`๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์์ ๋ ๋ง๋ค ํธ์ถ๋๋ค.
์ด์ ๋ JSP๋ฅผ `ใservice()ใ` ๋ฉ์๋ ๋ด๋ถ์ ์ฝ๋ฉํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
5. `ใGenericServletใ` ์ด๋ `ใHttpServletใ`์ ํ์ฉํ๋ค.
6. URL ํจํด์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 3 ๊ฐ์ง ์ด๋ค.
- `ใ/aใ`
- `ใ/*ใ`
- `ใ.doใ`
7. web.xml ์ ์์ ํ๋ฉด ์๋ฒ๋ฅผ ๊ผญ ์ฌ๊ตฌ๋ํ ์ดํ์ ์คํํด์ผ ํ๋ค.
8. ์ง๊ธ๊น์ง๋
JSP(์ ๋ ฅ) → JSP(์ฒ๋ฆฌ, ๊ฒฐ๊ณผ) ์์ผ๋
JSP ์ ํจ๊ป Servelet ์ ๋ค๋ฃจ๊ฒ ๋ ์ดํ์๋
`JPS(์ ๋ ฅ)` → `Servlet(๊ฒฐ๊ณผ๋ฅผ ์ํ ์ฒ๋ฆฌ)` → `JSP(๊ฒฐ๊ณผ)` ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋๋ค.
F_WebApp21
ใด/WebApp21/src/com/svt


ใดใดTest1.java
/* ==================
Test1.java
=================== */
package com.svt;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test1 extends HttpServlet
{
private static final long serialVersionUID = 1L;
// ์ฌ์ฉ์์ http ํ๋กํ ์ฝ ์์ฒญ์ด GET ๋ฐฉ์์ผ ๊ฒฝ์ฐ ํธ์ถ๋๋ ๋ฉ์๋
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request, response);
}
// ์ฌ์ฉ์์ http ํ๋กํ ์ฝ ์์ฒญ์ด POST ๋ฐฉ์์ ๊ฒฝ์ฐ ํธ์ถ๋๋ ๋ฉ์๋
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request, response);
}
// ์ฌ์ฉ์ ์ ์ ๋ฉ์๋
protected void doGetPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//*** ํธ์ถํ๋ ์ฃผ์ฒด์ ์ฅ์ → ์๋ธ๋ฆฟ์ปจํ
์ด๋.
//*** ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ฉด ์ฒ๋ฆฌํ๋ ๊ณณ → web.xml
// GET ๋ฐฉ์์ด๋ POST ๋ฐฉ์์ด๋
// ์ด๋ค ๋ฐฉ์์ ์์ฒญ์๋ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์๋ ์ฌ์ฉ์ ์ ์ ๋ฉ์๋
// โ
/*
response.setContentType("text/html; charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>" + "Test1.java"+ "</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<div>");
pw.println("<h1>name: "+ "ํ๊ธธ๋" + "</h1>");
pw.println("<h1>age: "+ 19 + "</h1>");
pw.println("</div>");
pw.println("</body>");
pw.println("</html>");
*/
// โก // **๊ฐ์ ์๋จ์์ ๋ณ์ ์ฒ๋ฆฌ**
/*
String name = "๊ธธํ์ฑ";
int age = 21;
response.setContentType("text/html; charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>" + "Test1.java"+ "</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<div>");
pw.println("<h1>name: "+ name + "</h1>");
pw.println("<h1>age: "+ age + "</h1>");
pw.println("</div>");
pw.println("</body>");
pw.println("</html>");
*/
// โข
/*
์ด์ ์ ์ฒ๋ฆฌ๋,
๋์๊ฐ๊ณ ์๋ ๊ตฌ์กฐ๋ผ๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ์ด๋(์ ์ง๋ณด์) ๋ค์ ๋น๋ํ๊ณ ํจํค์ง-๋ฐฐํฌํด์ผํจ
ํ์ง๋ง 3๋ฒ์ ์ฒ๋ฆฌ๋ java ํ์ผ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ค์ ๋น๋ํ ํ์๊ฐ ์๊ณ xml์ ๊ทธ์ ํ
์คํธ๋ก ๋ ํ์ผ์ด๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์
*/
// ใServletConfigใ
//-- ์ปจํ
์ด๋๊ฐ ์๋ธ๋ฆฟ์ ์ด๊ธฐํํ ๋
// ์๋ธ๋ฆฟ ๋น ํ๋์ฉ ServletConfig ์ ์์ฑํ๊ฒ ๋๋ค.
ServletConfig config = getServletConfig();
// ใweb.xmlใ ์ ใ<init-param>ใ
String name = config.getInitParameter("name");
String age = config.getInitParameter("age");
/*
response.setContentType("text/html; charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>" + "Test1.java"+ "</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<div>");
pw.println("<h1>name: "+ name + "</h1>");
pw.println("<h1>age: "+ age + "</h1>");
pw.println("</div>");
pw.println("</body>");
pw.println("</html>");
*/
// โฃ
// ใServletContextใ
//-- ServletConfig ๋ ์๋ธ๋ฆฟ์ ๋ํ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ณผ์ ์์
// ํ์ํ ๊ฐ๋ค์ ์ ๋ฌํ๋ ํํ๋ก ์ฃผ๋ก ์ฌ์ฉ๋๋ค๋ฉด..
// ServletContext ๋ ์๋ธ๋ฆฟ์์ ์ฌ์ฉ๋๋ ์ปจํ
์คํธ๋ฅผ
// ๊ตฌ์ฑํ๋ ํํ๋ก ํ์ฉ๋๋ค.
ServletContext context = getServletContext();
String type = context.getInitParameter("type");
response.setContentType("text/html; charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>" + "Test1.java"+ "</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<div>");
pw.println("<h1>name: "+ name + "</h1>");
pw.println("<h1>age: "+ age + "</h1>");
pw.println("<h1>age: "+ type + "</h1>"); // ์ถ๊ฐ
pw.println("</div>");
pw.println("</body>");
pw.println("</html>");
}
}
ใด/WebApp21/WebContent/WEB-INF/lib
ใดใดweb.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_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>WebApp00</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>
<!-- Test1 ํด๋์ค → Servlet ๊ตฌ์ฑ โ -->
<!--
<servlet>
<servlet-name>lys</servlet-name>
<servlet-class>com.svt.Test1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>lys</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
-->
<!-- Test1 ํด๋์ค → Servlet ๊ตฌ์ฑ โก -->
<!--
<servlet>
<servlet-name>lys</servlet-name>
<servlet-class>com.svt.Test1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>lys</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
-->
<!-- Test1 ํด๋์ค → Servlet ๊ตฌ์ฑ โข -->
<servlet>
<servlet-name>lys</servlet-name>
<servlet-class>com.svt.Test1</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>์ตํ์ธ</param-value>
</init-param>
<init-param>
<param-name>age</param-name>
<param-value>21</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>lys</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
<!-- Test1 ํด๋์ค → Servlet ๊ตฌ์ฑ โฃ ์ถ๊ฐ -->
<context-param>
<param-name>type</param-name>
<param-value>์ ๋จธ๋ฌ์ค</param-value>
</context-param>
<!-- ****************************************************************** -->
<!-- Test2 ํด๋์ค → Servlet ๊ตฌ์ฑ -->
<servlet>
<servlet-name>test2servlet</servlet-name>
<servlet-class>com.svt.Test2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test2servlet</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
</web-app>

ใดใดTest2.jsp
/* ==================
Test1.java(Test2_ok.jsp)
=================== */
package com.svt;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test2 extends HttpServlet
{
private static final long serialVersionUID = 1L;
// ์ฌ์ฉ์์ http ํ๋กํ ์ฝ ์์ฒญ์ด GET ๋ฐฉ์์ผ ๊ฒฝ์ฐ ํธ์ถ๋๋ ๋ฉ์๋
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request, response);
}
// ์ฌ์ฉ์์ http ํ๋กํ ์ฝ ์์ฒญ์ด POST ๋ฐฉ์์ ๊ฒฝ์ฐ ํธ์ถ๋๋ ๋ฉ์๋
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request, response);
}
// ์ฌ์ฉ์ ์ ์ ๋ฉ์๋
protected void doGetPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// GET ๋ฐฉ์์ด๋ POST ๋ฐฉ์์ด๋
// ์ด๋ค ๋ฐฉ์์ ์์ฒญ์๋ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์๋ ์ฌ์ฉ์ ์ ์ ๋ฉ์๋
// ์๋ธ๋ฆฟ ๊ด๋ จ ์ฝ๋ฉ
// ์ด์ ํ์ด์ง(Test2.jsp)๋ก ๋ถํฐ ๋์ด์จ ๋ฐ์ดํฐ ์์
// → name, age
// ํ๊ธ ๊นจ์ง ๋ฐฉ์ง ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ
request.setCharacterEncoding("UTF-8");
// ๋ฐ์ดํฐ ์์
String name = request.getParameter("name");
String age = request.getParameter("age");
// ์
๋ฌด ์ฒ๋ฆฌ
String str = "์ด๋ฆ์ [" + name + "]์ด๋ฉฐ, ๋์ด๋ [" + age + "]์ธ ์
๋๋ค.";
// ์ฒ๋ฆฌํ ์
๋ฌด ๋๊ธฐ๊ธฐ
request.setAttribute("result", str);
//-- ํฌ์๋ฉํ๋ ํ์ด์ง์ ๊ฐ์ ๋๊ธฐ๊ธฐ ์ํ ์ค๋น(์ค์ )
// ์ฆ, str ๊ฐ์ result ๋ผ๋ ์ด๋ฆ์ผ๋ก Test2_result.jsp ํ์ด์ง๋ก
// ๋๊ธฐ๊ธฐ ์ํ ์ค๋น
// ํฌ์๋ฉ
RequestDispatcher dispatcher = request.getRequestDispatcher("/Test2_result.jsp");
dispatcher.forward(request, response);
}
}
ใดใดTest2.java(Test2_ok.jsp)
ใด/WebApp21/WebContent
ใดใดTest2_result.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String cp = request.getContextPath();
%>
<%
String result = (String)request.getAttribute("result");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test2_result.jsp</title>
<!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div>
<h1>์ต์ข
๊ฒฐ๊ณผ๊ฐ ์์ </h1>
<hr />
</div>
<div>
<!-- <h2>๊ฒฐ๊ณผ ์ฒ๋ฆฌ</h2> -->
<h2><%=result %></h2>
</div>
</body>
</html>
ใดใดTest2.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test2.jsp</title>
<!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body class="section">
<div>
<h1>์๋ธ๋ฆฟ์์ ๋ฐ์ดํฐ ํ๋ฆ</h1>
<hr />
</div>
<div class="layout">
<form action="<%=cp%>/abc" method="post">
<ul class="input_box">
<li>
์ด๋ฆ<input type="text" name="name" class="txt" /><br />
</li>
<li>
๋์ด<input type="text" name="age" class="txt" /><br />
</li>
</ul>
<div class="btn_box">
<button type="submit" class="btn">ํ์ธ</button>
</div>
</form>
</div>
</body>
</html>