728x90
Servlet이란?
웹 서비스를 위한 자바 클래스
javax.servlet.http.HttpServlet클래스를 extends를 통해 인터페이스 상속 받아 사용
web.xml : 설정, 매핑,연결
index.html : 화면단
java class : extends HttpServlet 기능단
체크박스, 텍스트박스 등 사용자 데이터 받는 html 페이지
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_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>0_Practice_Servlet</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>
<!-- 위의 welcom-file태그는 시작 시 실행시키는 파일들을 명명하는 곳임 -->
<servlet>
<servlet-name>pracServlet1_get</servlet-name>
<servlet-class>tryto.pracServlet1_get</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>pracServlet1_get</servlet-name>
<url-pattern>/pracServlet1_get.do</url-pattern>
</servlet-mapping>
</web-app>
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Jumbotron Template for Bootstrap</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<a class="navbar-brand" href="#">Navbar</a>
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu" aria-labelledby="dropdown01">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"
aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
<div class="jumbotron">
<div class="container">
<h1 class="display-3">Hello, Servlet world!</h1>
<p>
서블릿이란, 웹 서비스를 위한 자바 클래스를 말하며 자바를 사용해 웹을 만들기 위해 필요한 기술로
javax.servlet.http.HttpServle클래스를 상속받는다.<br>
다시 말해 기존의 java파일에 웹 페이지 구현을 위한 html이 들어간 구조라고 볼 수 있다.<br>
클라이언트의 요청을 처리하고 그 결과를 HTML을 사용하여 요청에 대한 응답을 다시 클라이언트에 전송하는 구현 규칙이 있다.<br>
단, HTML변경 시 servlet을 재컴파일 해야한다는 단점이 있다.
</p>
<p>
<a class="btn btn-primary btn-lg" href="#" role="button">Learn
more »</a>
</p>
</div>
</div>
<div class="container">
<!-- Example row of columns -->
<div class="row">
<div class="col-md-4">
<h2>Servlet-1</h2>
<p>
<!-- get방식 헤더에 첨부되어 전송됨 -->
GET방식은 URL에 변수(데이터)를 포함시켜 요청하는 것으로 보안 유지가 불가능하다.
따라서 로그인 같은 경우 get방식은 부적합하다. GET방식에서 데이터를 header에 포함하여 전송하는데
Body는 보통 빈 상태로 전송되며 header내용 중 body의 데이터를 설명하는 content-type헤더필드도 듣어가지 않는다.
header에 데이터가 들어가기 때문에 전송하는 길이에 제한이 있으며 초과 데이터는 절단된다. 캐싱이 가능하다.
</p>
<p>
<a class="btn btn-secondary" href="servlet/pracServlet1_get.html" role="button">View
details »</a>
</p>
</div>
<div class="col-md-4">
<h2>Servlet-2</h2>
<p>
<!-- post방식 바디에 첨부되어 전송됨 -->
POST방식은 URL에 변수(데이터)를 노출하지 않고 요청하는 것으로 보안 유지가 가능하다.
데이터를 Body에 포함하여 전송하므로 Body의 데이터를 설명하는 content-type헤더 필드가 들어가고 어떤 타입인지 명시해줘야 한다.
body에 데이터가 들어가 전송 길이는 제한이 없지만 최대 요청 받는 시간이 존재해 페이지 요청, 기다리는 시간이 있다.
URL에 데이터가 노출되지 않아 즐겨찾기나 캐싱이 불가능하다.
</p>
<p>
<a class="btn btn-secondary" href="#.html" role="button">View
details »</a>
</p>
</div>
<div class="col-md-4">
<h2>Servlet-3</h2>
<p>
서블릿은 화면에 표현될 html코드를 프로그램적으로 작성한다.
이것으로 생기는 단점은 비즈니스 로직과 화면 구현 디자인이 같이 있어 가독성이 떨어지고 개발이 어렵다.
이러한 구조는 협업을 중요시 하는 개발자들의 입장에서는 좋지 않은 코드로 비즈니스 로직과 디자인은 분리되는 것이 좋다.
또한 html파일 수정 시 서버를 재시동해야하고 htm1에는 서버에서 얻어온 정보를 동적으로 반영하기 힘들다.
</p>
<p>
<a class="btn btn-secondary" href="#" role="button">View
details »</a>
</p>
</div>
</div>
<hr>
</div>
<footer class="container">
<p>© Company 2017-2018</p>
</footer>
</body>
</html>
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][HTML,CSS,JS] 로그인 만들어보기1 (0) | 2022.04.21 |
---|---|
[1일1코딩][Servlet] 서버 연결 - java class, html (0) | 2022.04.20 |
[1일1코딩][jQuery] mouseenter & mouserout + attr (0) | 2022.04.19 |
[1일1코딩][SQL][Oracle] 계정 등록 및 권한 부여 (0) | 2022.04.18 |
[1일1코딩][JS] 선언적 함수, 익명함수, 함수 전달인자와 매개변수 여러 방법 (0) | 2022.04.17 |