«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

장미의 개발일기

서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제 본문

개발일기/JSP 프로그래밍 (Java 웹프로그래밍)

서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제

민장미 2023. 6. 4. 19:17

셋팅 : 본인은 아파치 톰캣 9.0  설치 /  이클립스 ee / 실행브라우저는 크롬으로 설정 

 

*톰캣 에러 무진장 많음...초보자는 절대 여러 프로젝트를 번갈아가면서 실행 시키지 말 것!!

(본인은 지웠다 깔고 혈압이 폭팔한 에러를  여러 번 겪고서야 적응 됌) 

 

*프로젝트 생성시 다이나믹 프로젝트로 생성해야하며, xml 옵션에 체크 필수 

 

 

 

-서블릿 = 웹 자바 

-서블릿에는 2가지 클래스가 있는데, 웹 관련해서는 httpServelet 만 쓴다

httpServelet 클래스를 상속한 클래스가 서블릿이 된다고 생각하면 될 듯 

package ex1;

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;


@WebServlet("/myinfo")
public class MyInfoServlet extends HttpServlet{

	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		//전송시 한글 처리
		req.setCharacterEncoding("euc-kr");
		//응답시 한글처리 
		resp.setContentType("text/html;charset=euc_kr");
		
		String bloodType = req.getParameter("blood");
		String gender = req.getParameter("gender");
		String[] cls = req.getParameterValues("cls");
		
		PrintWriter pw = resp.getWriter();
		String res = "";
		String col = "";
		
		switch (bloodType) {
		case "A": 
			res="A형은 대체로 자기에게서 발견할 수 없는 성격의 소유자에게 관심을 가지고 때로는 동경 합니다. 판에 박은 듯한 사람 ,뻔뻔스러운 사람,사람의 기분을 개의치 않는 신경 둔한 사람을 싫어 합니다. 음성적인 사람을 싫어 하고,명랑하고 화제가 많고, 농담을 잘하는 사람을 좋아 합니다.";
			col ="pink";
			break;
			
		case "B":
			res="B형의 성격은 밝고 쾌활하고 적극적이며 행동은 화려하고 수다스럽고 말솜씨는 능란하고 환경에 빠른 속도로 순응하고 싹싹한 대인관계, 침착하고 온화한 동작과 남을 만나기를 좋아한다.";
			col ="blue";
			break;
			
		case "AB":
			res="AB형은 적응력의 경우, 적응이 느리면서도 갑자기 적응이 빠라지고 다시 갑자기 적응이 느려진다. 그리고, 표현억제의 정도에서는 억제를 잘 하면서도, 또한 때로는 잘 못하기도 한다. 이는 수시로 변하므로 어느 한 쪽으로 단정지을 수 없다.";
			col ="yellow";
			break;
			
		case "O":
			res="O형의 성격상의 장점은 의지가 강하고 자신감에 넘치며 이지적이고 강한 정신력을 가지고 있으며, 냉정하며 실행력이 있고 객관적이며 논리적이고 현실적이라는 점이다. 결점은 완고하며 융화성이 모자라고 겸양심이 적고 냉담하여 개인주의에 쏠리기 쉽다는 점이다.";
			col ="green";
			break;
			
		default:
			res="";
			col="black";
		}
		
		StringBuilder sb = new StringBuilder();
		sb.append("<div style=\"background-color:"+col+"\">");
		sb.append("<ul>");
		sb.append("<li>혈액형:").append(res).append("</li>");
		sb.append("<li>gender:").append(gender).append("</li>");
		sb.append("<li>선택한 과목:");
		for(String chk: cls) {
			sb.append(chk).append(" ");
		}
		sb.append("</li>");
		sb.append("</ul>");
		sb.append("</div>");
		pw.println(sb);
	}
	

}

 

-form의 action:  "myinfo" 는 이동한 뒤의 url 주소 뒷부분을 의미한다. 위의 자바클래스의 @WebServlet("/myinfo")

이부분과 반드시 일치해야 한다. 

-폼 만들때 에딧플러스 사용하면 폼 코드를 복사해올 수 있음 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>ex7_form</title>
</head>
<body>
  <form method="post" action="myinfo">
	아이디 : <input type="text" name="id"> <br>
	비밀번호 : <input type="password" name="pwd"><br>
	이름 : <input type="text" name="name"> <br>
	혈액형 : <select name="blood">
		   <option value="A">A형
		   <option value="B">B형
		   <option value="AB">AB형
		   <option value="O">O형
		  </select>
	<br>
	성별 : <input type="radio" name="gender" value="남자">남자
	      <input type="radio" name="gender" value="여자">여자<br>
	과목 : <input type="checkbox" name="cls" value="java"> 자바
	<input type="checkbox" name="cls" value="oracle"> 오라클
	<input type="checkbox" name="cls" value="html"> HTML <br>
	이메일 : <input type="email" name="email">  <br>
    생년월일 : <input type="date" name="birthday"> <br>
    <input type="submit" value="send">
  </form>
</body>
</html>

결과물:

폼에 정보를 입력하면, 자바에서 설정한 조건식에 따라 브라우저 창에 출력이 된다.