<!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를 이용하여 값을 가져왔다.