index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index.html</title>
</head>
<body>
<div class="container">
<h1>인덱스 페이지 입니다.</h1>
<ul>
<!--
1. 아래의 링크를 눌렀을때 오늘의 운세가 이쁘게 나오도록 해 보세요.
2. 1번을 성공 했다면 오늘의 운세를 5개 정도 정해 놓고 그중에서 랜덤하게
하나가 나오도록 프로그래밍 해 보세요
-->
<li><a href="fortune">오늘의 운세보기</a></li>
</ul>
</div>
</body>
</html>
FortuneServlet(필자 코드)
package test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/fortune")
public class FortuneServlet extends HttpServlet{
/*
* FortuneServlet 객체가 언제 생성이 되지?
* 생성이 된다면 여러개가 생성이 될까?
* 아니면 하나만 생성해서 사용이 될까?
*/
public FortuneServlet() {
System.out.println("FortuneServlet 객체 생성됨!");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//랜덤 객체
Random ran=new Random();
int r=ran.nextInt(5);
//배열
String[] fortuneText=new String[5];
fortuneText[0]="<p>빛나는 성과가 기대되는 최고의 하루입니다. <br>추구하는 일의 이상과 포부를 크게 세워도 좋습니다. <br>당신의 수고와 노력에 비례하는 결실을 얻을 수 있을 것입니다. <br>행운이 당신의 계획을 힘껏 밀어주는 오늘 하루 동안의 기회를 최대한 활용하시기 바랍니다. <br>열과 성을 다하십시오. <br>결단을 내리면 즉시 실천하세요.<br>머뭇거리지만 않는다면 모든 일이 좋게 마무리 될 것입니다.</p>";
fortuneText[1]="<p>요행을 기대하지 마십시오. <br>요행을 바라는 그릇된 사행심은 자신을 갉아먹으며 화를 자초할 뿐이지요. <br>어려운 가운데 성실함을 견지한다면 결코 당신을 저버리지 않습니다. 위기로부터 당신을 구해 줄 것입니다. </p>";
fortuneText[2]="<p>지금 당장 경쟁자에게 뒤쳐지는 것을 걱정하지 마세요. <br>사람에 따라 개성과 장단점은 다른 것입니다. <br>일찍부터 당신의 재능을 잘 활용하는 사람은 대부분 자신의 단점을 제대로 알지 못하고 있는 사람이 많습니다.<br> 사람의 가치는 돈으로 환산할 수 없는 무한한 것이죠. </p>";
fortuneText[3]="<p>평탄한 하루의 흐름이 이어지는 가운데에 감당하기 벅찬 어려운 과제가 주어져서 잠시 페이스가 흐트러질 수 있습니다. <br>하지만, 피한다고 피할 수 있는 문제가 아니니, 차근차근 인내심을 가지고 풀어가도록 노력하세요. </p>";
fortuneText[4]="<p>의지를 굽히지 말고 끝까지 최선을 다하시기 바랍니다. <br>과정이 좀 쉽지 않겠지만 달고 풍성한 열매를 기대할 수 있을 것입니다.</p>";
//응답 인코딩 설정
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>운세 페이지 입니다</p>");
pw.println(fortuneText[r]);
pw.println("<a href=\"/Step01_Servlet/\">운세 다시보기</a>");
pw.println("</body>");
pw.println("</html>");
//pw.flush();//방출
pw.close();//닫아주기
}
}
Fortuneteacher (선생님 코드)
package test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
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("/fortune")
public class Fortuneteacher extends HttpServlet{//1.
/*
* FortuneServlet 객체가 언제 생성이 되지?
* 생성이 된다면 여러개가 생성이 될까?
* 아니면 하나만 생성해서 사용이 될까?
*/
public Fortuneteacher() {
//최초 요청시 객체가 생성이 되고 그 이후에는 생성된 객체를 다시 사용한다.
System.out.println("FortuneServlet 객체 생성됨!");
}
//2.
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//오늘의 운세 5개를 미리 준비해 둔다.
String[] list = {"비가 오지만 너무 좋은 날이에요!", "비가와서 슬퍼요",
"내일을 기약해요!", "오늘은 공부가 잘 되는 날!", "오늘은 공부가 잘 안 되는 날!"};
//0~4 사이의 랜덤한 정수를 얻어내기
int ranNum=new Random().nextInt(5);
//응답 인코딩 설정
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>오늘의 운세:"+list[ranNum]+"</p>");
pw.println("</body>");
pw.println("</html>");
//pw.flush();//방출
pw.close();//닫아주기 (auto flush)
}
}
오늘의 운세보기 버튼을 누르면 5개의 운세 중 한개의 운세가 무작위(random)로 나오도록 코드를 작성하였다. 이처럼 Servlet은 java코드와 html코드를 연동해서 작성할 수 있게 만든다는 장점이 있다.
'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_Hello(HttpServlet) (0) | 2022.08.10 |