- 톰캣과 같은 WAS(Web Aplication Server, 웹 애플리케이션 서버)가 처음 나왔을때 웹 브라우저 요청을 스레드 방식으로 처리하는 기술이 Servlet이였다.
- 서블릿 기본 기능 수행 과정
- 클라이언트로 부터 요청 -> 톰캣 컨테이너(Servlet) -> DB
- 서블릿 응답과 요청 수행 API 가능
- 요청 관련 API
- javax.servlet.http.HttpServletRequest 클래스
- 응답 관련 API
- javax.servlet.http.HttpServletResponce 클래스
- 요청 관련 API
- Servlet 에서 Client의 요청을 얻는방법
- 요청을 받아오는 메서드
- String getParameter(String name)
- 요청된 name의 값을 알고있을때 그리고 name에 대한 전송된 값을 받아올때 사용
- String getParameterValues(String name)
- 요청된 같은 name에 대해 여러개의 값을 전송받았을때 배열 형태로 값을 얻은 후 사용
- Enumeration getParameterNames()
- 요청된 name의 값을 모를때 사용
- String getParameter(String name)
- 한개의 name을 가진 form 요청 처리방법
- login.html
- <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
<form name="frmLogin" method="get" action="login" enctype="UTF-8">
아이디 : <input type="text" name="user_id"></br>
비밀번호 : <input type="password" name="user_password"></br>
<input type="submit" value="로그인">
<input type="reset" value="다시입력">
</form>
</body>
</html> - LoginServlet.java
- @WebServlet(value = "/login")
public class LoginServlet extends HttpServlet {
@Override
public void init() throws ServletException{
System.out.println("init call");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String user_id = request.getParameter("user_id");
String user_password = request.getParameter("user_password");
System.out.println("유저 아이디 : " + user_id);
System.out.println("유저 비밀번호 : " + user_password);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
public void destroy(){
System.out.println("server destroy");
}
}
- @WebServlet(value = "/login")
- 다중의 name을 가진 Servlet 요청방법
- input.html
- <html lang="en">
<head>
<meta charset="UTF-8">
<title>다중 input</title>
</head>
<body>
<form name="frmInput" action="input" method="get">
아이디 : <input type="text" name="user_id"></br>
비밀번호 : <input type="password" name="user_password">
<input type="checkbox" name="subject" value="java" checked> 자바
<input type="checkbox" name="subject" value="php" checked> php
<input type="checkbox" name="subject" value="jsp" checked> jsp
<input type="checkbox" name="subject" value="c" checked> c++
<input type="checkbox" name="subject" value="android" checked> 안드로이드 </br>
<input type="submit" value="전송">
<input type="reset" value="초기화">
</form>
</body>
</html>
- <html lang="en">
- InputServlet.java
- @WebServlet(value = "/input")
public class InputServlet extends HttpServlet {
@Override
public void init() throws ServletException{
System.out.println("init call");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String user_id = request.getParameter("user_id");
String user_password = request.getParameter("user_password");
System.out.println("유저 아이디 : " + user_id);
System.out.println("유저 비밀번호 : " + user_password);
String [] subject = request.getParameterValues("subject"); // getParameterValues 메서드 통한 다중 name에 대한 배열 저장
for(String str : subject) //foreach문 통한 선택된 checkbox 요소 수량 출력
{
System.out.println("선택 과목 : " + str);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
public void destroy(){
System.out.println("server destroy");
}
- @WebServlet(value = "/input")
- getParameterNames()메서드를 이용한 요청 처리
- input2.html
- <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>다중 input</title>
</head>
<body>
<form name="frmInput" action="input2" method="get">
아이디 : <input type="text" name="user_id"></br>
비밀번호 : <input type="password" name="user_password">
<input type="checkbox" name="subject" value="java" checked> 자바
<input type="checkbox" name="subject" value="php" checked> php
<input type="checkbox" name="subject" value="jsp" checked> jsp
<input type="checkbox" name="subject" value="c" checked> c++
<input type="checkbox" name="subject" value="android" checked> 안드로이드 </br>
<input type="submit" value="전송">
<input type="reset" value="초기화">
</form>
</body>
</html>
</body>
</html>
- <!DOCTYPE html>
- InputServlet2.java
- @WebServlet(value = "/input2")
public class InputServlet2 extends HttpServlet {
@Override
public void init() throws ServletException{
System.out.println("init call");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
Enumeration enu = request.getParameterNames(); // 전송된 다수의 name 속성을 Enumeration 타입으로 받아온다.
while (enu.hasMoreElements())
{
String name = (String) enu.nextElement(); //enu 객체를 통한 요소 값들을 저장
String [] subject = request.getParameterValues(name); //name 내 저장된 값들을 배열로 저장
for(String str : subject)
{
System.out.println("선택 과목 : " + name + ",values : " + str);
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
public void destroy(){
System.out.println("server destroy");
}
}
- @WebServlet(value = "/input2")
- input2.html
- input.html
- <!DOCTYPE html>
- login.html
- 요청을 받아오는 메서드
'JAVA' 카테고리의 다른 글
javaScript를 이용한 Servlet 요청 (0) | 2021.07.26 |
---|---|
Servlet의 응답 처리방법 (0) | 2021.07.23 |
서블릿의 생명주기 메서드 (0) | 2021.07.21 |
Servlet 특징 정리 (0) | 2021.07.21 |
DAO, DTO (0) | 2021.07.17 |