実験2(登録・為替レート計算)


ログインウィンドウID、パスワード入力後にサーブレットを送信する実験
login.html
<!DOCTYPE html>
<html>
<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_pw" ><br>
    <input type="submit" value="로그인"> <input type="reset" value="다시입력">
  </form>
</body>
</html>
LoginServlet.java
package sec01.ex01;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init() throws ServletException {
		System.out.println("init 메서드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8"); //전송된 데이터 UTF-8로 인코딩
		String user_id = request.getParameter("user_id");
		// getParameter() 이용해 <input>태그의 name 속성 값으로 전송된 value를 받아온다.
		String user_pw = request.getParameter("user_pw");
		System.out.println("아이디:" + user_id);
		System.out.println("비밀번호:" + user_pw);
	}
	
	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destory 메서드 호출");
	}
}
LoginServlet.Javaで@WebService('/login')
サーブレットのマッピング名はloginです.
login.htmlでaction=「login」は
入力したデータをloginというサーバ側に送信します.


これによりサーブレットを用いてログイン要求処理を実現できる.
シーケンスボードとして1つのnameで複数の値を要求します
input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>여러 가지 input 타입 표시 창</title>
</head>
<body>
  <form name="frmInput" method="get" action="input" encType="UTF-8">
	아이디 :<input type="text" name="user_id"><br>
	비밀번호:<input type="password" name="user_pw" ><br>
    <input type="checkbox" name="subject" value="java" checked>자바
    <input type="checkbox" name="subject" value="C언어" checked>C언어
    <input type="checkbox" name="subject" value="JSP" checked>JSP
    <input type="checkbox" name="subject" value="안드로이드" checked>안드로이드
    <br><br>
    <input type="submit" value="전송">
    <!-- 전송 클릭하면 매핑 이름이 action에 설정한 input 서블릿으로 전송된다. -->
    <input type="reset" value="초기화">
  </form>
</body>
</html>
InputServlet.java
package sec01.ex01;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/input")
public class InputServlet extends HttpServlet {

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init() throws ServletException {
		System.out.println("init 메서드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8"); //전송된 데이터 UTF-8로 인코딩
		String user_id = request.getParameter("user_id");
		// getParameter() 이용해 <input>태그의 name 속성 값으로 전송된 value를 받아온다.
		String user_pw = request.getParameter("user_pw");
		System.out.println("아이디:" + user_id);
		System.out.println("비밀번호:" + user_pw);
		String[] subject = request.getParameterValues("subject");
		// 하나의 name으로 여러 값 전송하는 경우 getParameterValues()를 이용해 배열 형태로 반환한다.
		for (String str : subject) // B에서 차례대로 객체를 꺼내서 A에 넣겠다.
		{
			System.out.println("선택한 과목:" + str);
		}
	}
	
	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destory 메서드 호출");
	}
}


リクエストが成功しました.
@WebServicelet("/input")マッピング名が修復されず、重複エラーが発生していることに注意してください.
マッピング名を繰り返してはいけません.タグに注意してください.
ここに入力htmlでaction=「input」を「input 2」に変更します.
InputServicelet 2クラスの作成:
InputServlet2.java
package sec01.ex01;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/input2")
public class InputServlet2 extends HttpServlet {

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init() throws ServletException {
		System.out.println("init 메서드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8"); //전송된 데이터 UTF-8로 인코딩
		Enumeration enu = request.getParameterNames(); // 전송되어 온 name 속성들만 Enumeration 타입으로 받아온다.
		while (enu.hasMoreElements())
		{
			String name = (String) enu.nextElement();
			String[] values = request.getParameterValues(name);
			for (String value : values)
			{
				System.out.println("name=" + name + ",value=" + value);
			}
		}
	}
	
	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destory 메서드 호출");
	}
}

結果として、getParameterName()を使用して送信されたnameと値
全ての出力を確認できます.
今回は、ユーザーがIDとパスワードを送信すると、ブレードサーバにブラウザに再度応答させてみます.
login.htmlでaction=「login」を「login 2」に変更します.
LoginService 2クラスの作成:
LoginServlet2.java
package sec01.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/login2")
public class LoginServlet2 extends HttpServlet {

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init() throws ServletException {
		System.out.println("init 메서드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8"); // 웹 브라우저에서 전송된 데이터 UTF-8로 인코딩
		response.setContentType("text/html;charset=utf-8"); // 응답할 데이터 종류가 HTML임을 설정
		PrintWriter out = response.getWriter();
		// HttpServletResponse 객체의 getWriter()를 이용해 출력 스트림 PrintWriter 객체를 받아온다.
		String id = request.getParameter("user_id");
		String pw = request.getParameter("user_pw");
		
		String data = "<html>";
		  data += "<body>";
		  data += "아이디 : " + id;
		  data += "<br>";
		  data += "패스워드 : " + pw;
		  data += "</body>";
		  data += "</html>";
		out.print(data);
	}
	
	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destory 메서드 호출");
	}
}


サーバはIDとパスワードを受信し、ブラウザに出力します.