끄적끄적

[Servlet Programing] 웹 서버 구축하기 (5) 본문

Development/JSP

[Servlet Programing] 웹 서버 구축하기 (5)

Go0G 2021. 11. 22. 15:29

개요

서블릿 프로그래밍 연습

  • GET 요청 및 쿼리 스트링
  • 쿼리 스트링 기본 값 설정

환경

  • WAS Server: CentOS Linux release 7.9 - Tomcat 7.0 - JDK 1.8.0_312

관련 경로

servlet-api 라이브러리 /[Tomcat Directory]/java/tomcat-servlet-api.jar
ROOT Directory /[Tomcat Directory]/tomcat/webapps/ROOT/

실습

예제코드 작성

"cnt"라는 매개변수에 값을 받고 해당 횟수만큼 문자열을 출력

import javax.servlet.annotation.WebServlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

@WebServlet("/hi")
public class nana extends HttpServlet
{
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();

        int cnt = Integer.parseInt(request.getParameter("cnt"));
        for(int i=0; i<cnt;i++)
            out.println((i+1)+": 안녕 Servlet!!<br>");
    }
}

컴파일: 반복적인 컴파일이 번거롭다면 sh파일 만들기

Make.sh 파일 생성

#!/bin/bash
javac -classpath /[Tomcat Directory]/java/tomcat-servlet-api.jar nana.java
mv ./nana.class ./WEB-INF/classes
systemctl restart tomcat
#./Make.sh

Request 테스트(1)

[Server IP]/hi?cnt=3

결과: "안녕 Servlet!!<br>" 값이 3회 출력

 

Request 테스트(2)

[Server IP]/hi?cnt=
[Server IP]/hi

결과: 500번 에러 출력


쿼리스트링 기본 값 설정

조건문(if)를 통해 인자 할당 여부 확인

import javax.servlet.annotation.WebServlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

@WebServlet("/hi")
public class nana extends HttpServlet
{
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();

        String temp = request.getParameter("cnt");
    
        int cnt = 3;
        if(temp != null && !temp.equals(""))
            cnt = Integer.parseInt(temp);
        for(int i=0; i<cnt;i++)
            out.println((i+1)+"안녕 Servlet!! <br>");
    }
}

index.jsp 수정

테스트 페이지와 로그인 Form 페이지 분리

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- 브라우저에서 인코딩 방식 설정 --%>
<html>
<head>
<title>Redirection</title>
<meta charset="UTF-8">

</head>
<body>
  <a href="hi">테스트 페이지</a><br>
  <a href="login.jsp">로그인 페이지 화면</a><br>
</body>
</html>

Reference

Comments