tomcat서버 연동 프로젝트 생성, 프론트엔드 결합

노건우·2023년 8월 17일
0
post-thumbnail

지정한 횟수만큼 반복하는 프로그램

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action = "hello3" method = "post">
		<div>
			<label>"안녕하세요"를 몇 번 듣고 싶으세요?</label>
		</div>
		<div>
			<input type = "text" name = "cnt"/>
			<input type = "submit" value = "출력"/>
			
		</div>
	</form>
	
</body>
</html>

일반적인 html코드다. cnt라는 이름을 가진 텍스트를 만들고 출력을 위해 submit을 만들었다.

package com.codingbox.web.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;

@WebServlet("/hello3")
public class Myservlet3 extends HttpServlet{
 @Override
protected void service(HttpServletRequest arg0, 
		HttpServletResponse arg1) throws ServletException, IOException {
	 //localhost:8081/hello3?cnt = 3	
	//int cnt = Integer.parseInt(arg0.getParameter("cnt"));
	 
	 String paramCnt = arg0.getParameter("cnt");
	 int cnt = 100;
	 
	 if(paramCnt != null && !paramCnt.equals("")) {
		 cnt = Integer.parseInt(paramCnt);
	 }
	 
	 arg1.setCharacterEncoding("UTF-8");
	 	arg1.setContentType("text/html; charset = UTF-8");
	 	PrintWriter out = arg1.getWriter();
	 	for(int i = 0; i <cnt; i++) {
	 		out.println((i+1)+":안녕Servlet<br>");
	 	}
 }
}

다음은 자바 코드다. @WebServlet("/hello3")이 부분을 주목하자. @WebServlet을 이용하면 위에 주석 처리 해 놓은 //localhost:8081/hello3?cnt = 3
//int cnt = Integer.parseInt(arg0.getParameter("cnt"));이러한 코드처럼 길게 쓰지 않아도 서버 주소 지정이 가능하다.

cnt를 지정하여 cnt의 수만큼 출력이 반복되게 코드를 구성했다. 

arg1.setCharacterEncoding("UTF-8");
arg1.setContentType("text/html; charset = UTF-8");
이 부분을 이용하여 한글이 깨지지 않게 했다.

✍️포인트

form action = "hello3" method = "post"
이 부분인데, hello3를 통해 자바의 @WebServlet("/hello3")를 호출하고, method = "post"를 통해 서버의 주소를 숨길 수 있다.

입력한 제목과 내용 출력 프로그램

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action = "regit" method = "post">
		<div>
			<label>제목: </label>
			<input type = "text" name = "title"/>
		</div>
		<div>
			<label>내용 : </label>
			<textarea name = "content"></textarea>
		</div>
		<div><input type = "submit" value = "출력"/></div>
	</form>
</body>
</html>

이것도 평범한 html코드 후에 자바 호출을 regit으로 하고 주소를 가린다.
제목, 내용, 출력 submit을 만들었다.

package com.codingbox.web.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;

@WebServlet("/regit")
public class MyServlet6 extends HttpServlet{
	@Override
	protected void service(HttpServletRequest arg0, 
			HttpServletResponse arg1) throws ServletException, IOException {
			arg0.setCharacterEncoding("UTF-8");
			
		
		 	arg1.setCharacterEncoding("UTF-8");
		 	arg1.setContentType("text/html; charset = UTF-8");
		 	
		 	
		 	PrintWriter out = arg1.getWriter();
		 	
		 	String title = arg0.getParameter("title");
		 	String content = arg0.getParameter("content");
		 	
		 	out.println(title + "<br>");
		 	out.println(content);
	}
}

arg0.setCharacterEncoding("UTF-8"); 이 코드가 조금 주효했는데, 원래는 arg1.setCharacterEncoding("UTF-8");
arg1.setContentType("text/html; charset = UTF-8");면 한글이 잘 나왔는데 이번에는 한글이 깨져서 나왔다. 하지만 arg0을 활용하면 기존의 한글깨짐 문제를 해결 할 수 있었다. String, getParameter를 이용하여 값을 가져왔다.


profile
초보 개발자 이야기

0개의 댓글