HttpServlet
HttpServletRequest
HttpServletResponse
PrintWriter
현 게시글은 이전 게시글을 연장하였다.
2022.08.10 - [시작하기] - eclipse로 웹서비스 준비하기(tomcat과 경로 설정)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- bootstrap css 로딩 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" />
</head>
<body>
<div class="container">
<h1>인덱스 페이지 입니다</h1>
<ul>
<li><a href="play.html">놀러가기</a></li>
<li><a href="./play.html">놀러가기</a></li>
<li><a href="http://localhost:8888/Hello/play.html">놀러가기</a></li>
<li><a href="/Hello/play.html">놀러가기</a></li>
<li><a href="sub/study.html">공부하기</a></li>
</ul>
<form action="/Hello/send" method="post">
<input type="text" name="msg" placeholder="서버에 할말 입력..."/>
<button type="submit">전송</button>
</form>
<p>
김구라 이미지를 보고 싶으면 주소창에 <br>
http://localhost:8888/Hello/images/kim1.png<br>
를 입력해 보세요
</p>
<!-- 웹에서의 절대경로와 상대경로 -->
<img src="http://localhost:8888/Hello/images/kim1.png">
<img src="images/kim1.png">
<img src="./images/kim1.png">
<!-- Tomcat 서버가(현재서버) 서비스하는 서비스 중에서 절대 경로로 이미지 로딩하기 -->
<img src="/Hello/images/kim1.png">
</div>
</body>
</html>
input type의 폼태그와 버튼을 만들었을때 send 요청을 처리할 수 있는 코드를 작성하고자 한다.


1. HttpServlet 상속(extends)받는다.
2. service 메소드를 오버라이드한다(ctrl+space)

3. 요청 맵핑 (처리할 요청 경로를 작성한다) 반드시 /로 시작을 해야 하고 프로젝트명은 쓰지 않는다.

HttpServletRequest - 요청객체, HttpServletResponse - 응답객체
HttpServletResponse (응답객체)의 getWriter() 메소드를 활용하여 웹브라우저에 원하는 글을 출력할 수 있다.
System.out.println 이 콘솔창에 출력하는 것과 비교할 수 있다.
String a=req.getParameter("msg");
msg 라는 파라미터명으로 전송되는 문자열 읽어온다.
한글이 깨지지 않도록 하려면 아래의 코드를 작성해야한다.
req.setCharacterEncoding("utf-8");
파라미터에서 글을 읽어올때 한글이 깨지지 않도록 해준다.
resp.setCharacterEncoding("utf-8");
응답 인코딩시 한글을 호환해준다.
resp.setContentType("text/html; charset=utf-8");
응답 컨텐츠 설정시 한글을 호환해준다.

ipconfig - 가상 ip 주소를 확인할 수 있다.
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;
//3. 요청 맵핑 (처리할 요청 경로를 작성한다) 반드시 / 로 시작을 해야 하고 프로젝트명은 쓰지 않는다.
@WebServlet("/send")
public class SendServlet extends HttpServlet{//1. HttpServlet 클래스를 상속 받는다.
//2. service() 메소드 오버라이드
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("요청이 오네?");
//한글 깨지지 않도록
req.setCharacterEncoding("utf-8");
// msg 라는 파라미터명으로 전송되는 문자열 읽어오기
String a=req.getParameter("msg");
System.out.println("msg:"+a);
//응답 인코딩 설정
resp.setCharacterEncoding("utf-8");
//응답 컨텐츠 설정
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("<p>oh</p>");
pw.println("<p>who are you?</p>");
pw.println("<p>안녕하세요</p>");
pw.println("<img src='images/kim1.png'>");
pw.println("<img src=\"images/kim1.png\">");
pw.println("<br>");
pw.println("<a href=\"/Hello/index.html\">인덱스로</a>");
pw.println("</body>");
pw.println("</html>");
pw.flush();//방출
pw.close();//닫아주기
}
}
사실 resp.setContentType("text/html; charset=utf-8");에서 응답 컨텐츠 형식을 html 형식으로 지정해놓았기 때문에 당장은 텍스트만 입력해도 작동하지만 정석은 html 형식으로 입력하는 것이다.
img를 첨부할때 ""는 java에서 텍스트로 인식하기 때문에 ''로 대신하거나 앞뒤에 \\로 감싸줘서 표시하는 방법이 있다.
'Servlet&JSP' 카테고리의 다른 글
| Step01_Servlet(form연결하기, get post 비교, Servlet jsp 비교) (0) | 2022.08.12 |
|---|---|
| Step01_Servlet(표 만들기) (0) | 2022.08.12 |
| Step01_Servlet(jsp영역, 주석, 친구목록, ArrayList, 반복문) (0) | 2022.08.11 |
| Step01_Servlet(오늘의 운세2, bootstrap 사용, jsp) (0) | 2022.08.11 |
| Step01_Servlet(HttpServlet 활용 예제(오늘의 운세 만들기)) (0) | 2022.08.10 |