3일차

|

주요내용 : get/post전송방식, 자바스크립트로 서블릿에 요청, 서블릿의 데이터베이스 연동, preparedStatement

package sec02.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 CalcServlet2
 */
@WebServlet("/calc2")
public class CalcServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final float USD_RATE = 1188.80F;
	private static final float JPY_RATE = 1089.24F;
	private static final float CNY_RATE = 172.07F;
	private static final float GBP_RATE = 1441.00F;
	private static final float EUR_RATE = 1312.38F;

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

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destroy 메소드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw = response.getWriter();
		
		String command = request.getParameter("command");
		String won = request.getParameter("won");
		String operator = request.getParameter("operator");
		
		if(command != null && command.equals("calculate"))
		{
			String result = calculate(Float.parseFloat(won), operator);
			pw.print("<html><font size=10>변환 결과</font><br>");
			pw.print("<html><font size=10>" + result + "</font><br>");
			pw.print("<a href='/pro06/calc'>환율 계산기</a>"); // 다른 페이지로 이동
			return;
		}
	}
	
	private String calculate(float won, String operator) {
		String result = null;
		if(operator.equals("dollar")) {
			result = String.format("%.6f", won / USD_RATE);
		} else if(operator.equals("en")) {
			result = String.format("%.6f", won / JPY_RATE);
		} else if(operator.equals("wian")) {
			result = String.format("%.6f", won / CNY_RATE);
		} else if(operator.equals("pound")) {
			result = String.format("%.6f", won / GBP_RATE);
		} else if(operator.equals("euro")) {
			result = String.format("%.6f", won / EUR_RATE);
		}
		return result;
	}

}
--------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>환율계산기</title>
</head>
<body>
	<form name="frmCalc" method="get" action ="calc2">
		원화 : <input type="text" name="won" size= 10>
		<select name="operator">
		<option value="dollar">달러</option>
		<option value="en">엔화</option>
		<option value="wian">위안</option>
		<option value="pound">파운드</option>
		<option value="euro">유로</option>
		</select>
		<input type="hidden" name="command" value="calculate">
		<input type="submit" value="변환">
	</form>
</body>
</html>
--------------------------------------------------------------------------

package sec02.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 practice0803
 */
@WebServlet("/practice0803")
public class practice0802 extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destroy 메소드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw = response.getWriter();
		
		String command = request.getParameter("command");
		String first = request.getParameter("first");
		String operator = request.getParameter("operator");
		String second = request.getParameter("second");
		
		if(command != null && command.equals("calculate"))
		{
			String result = calculate(Float.parseFloat(first), operator, Float.parseFloat(second));
			pw.print("<html><font size=10>계산 결과</font><br>");
			pw.print("<html><font size=10>" + result + "</font><br>");
			pw.print("<a href='/pro06/practice0803'>다시 계산해볼께요^^</a>"); // 다른 페이지로 이동
			return;
		}
		
		pw.print("<html><title>계산기</title>");
		pw.print("<font size=5>계산기</font><br>");
		pw.print("<form name='frmCalc' method='get' action = '/pro06/practice0803'/>");
		pw.print("첫번째 수 : <input type='text' name='first' size= 10 />");
		pw.print("<select name='operator'>");
		pw.print("<option value='+'>+</option>");
		pw.print("<option value='-'>-</option>");
		pw.print("<option value='*'>*</option>");
		pw.print("<option value='/'>/</option>");
		pw.print("</select>");
		pw.print("두번째 수 : <input type='text' name='second' size= 10 />");
		pw.print("<input type='hidden' name='command' value='calculate' />"); // hidden -> 서버로 전송하는 부분.
		pw.println("<input type='submit' value='변환' />");
		pw.println("</form>");
		pw.print("</html>");
		pw.close();
	}
	
	private String calculate(float first, String operator, float second) {
		String result = null;
		if(operator.equals("+")) {
			result = String.format("%.6f", first + second);
		} else if(operator.equals("-")) {
			result = String.format("%.6f", first - second);
		} else if(operator.equals("*")) {
			result = String.format("%.6f", first * second);
		} else if(operator.equals("/")) {
			result = String.format("%.6f", first / second);
		} 
		return result;
	}

}
--------------------------------------------------------------------------
package sec03.ex02;

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 LoginServlet4
 */
@WebServlet("/login4")
public class LoginServlet4 extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destroy 메소드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet 메소드 호출");
		doHandle(request, response); // get방식으로 요청시 다시 dohandle을 호출
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost 메소드 호출");
		doHandle(request, response); // post방식으로 요청시 다시 dohandle을 호출
	}
	
	protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 모든 호출 방식에 대해 처리 가능.
		request.setCharacterEncoding("UTF-8");
		String user_id = request.getParameter("user_id");
		System.out.println("doHandle 메소드 호출");
		String user_pw = request.getParameter("user_pw");
		System.out.println("아이디 : " + user_id);
		System.out.println("비밀번호 : " + user_pw);
	}

}

--------------------------------------------------------------

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<script type="text/javascript"> // 자바스크립트 영역
		function fn_validate(){ // document : html 객체에 접근할 수 있는 자바스크립트 객체
			var frmLogin = document.frmLogin; // form 정보를 가져온다,
			var user_id = frmLogin.user_id.value;
			var user_pw = frmLogin.user_pw.value;
			
			if((user_id.length == 0 || user_id == "") || (user_pw.length == 0 || user_pw == "")){
				alert("아이디와 비밀번호는 필수입니다.");
			} else {
				frmLogin.method = "post";
				frmLogin.action = "login5";
				frmLogin.submit(); // submit 버튼을 대신한다.
			}
		}
	</script>
	<title>로그인창</title>
</head>

<body>
	<form name = "frmLogin" method = "post" action="login" encType="UTF-8">
		아이디 : <input type = "text" name = "user_id"><br>
		비밀번호 : <input type = "password" name = "user_pw"><br>
		<input type = "button" onClick="fn_validate()" value = "로그인">
		<input type = "reset" value = "다시 입력">
		<input type = "hidden" name="user_address" value = "서울시 성북구"/>
	</form>
</body>
</html>

--------------------------------------------------------------------------

package sec03.ex03;

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

import javax.servlet.Servlet;
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 LoginServlet5
 */
@WebServlet("/login5")
public class LoginServlet5 extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destroy 메소드 호출");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String id = request.getParameter("user_id");
		String pw = request.getParameter("user_pw");
		String address = request.getParameter("user_address");
		System.out.println("아이디 : " + id);
		System.out.println("비밀번호 : " + pw);
		
		String data = "<html>";
		data+= "<body>";
		data+= "아이디 : " + id;
		data+= "<br>";
		data+= "패스워드 : " + pw;
		data+= "<br>";
		data+= "주소 : " + address;
		data+= "</html>";
		data+= "</body>";
		out.print(data); // 브라우저로 쏨
		
	}

}

--------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>단수 입력창</title>
</head>
<body>
	<h1>출력할 구구단의 수를 지정해 주세요.</h1>
	<form method="get" action="/pro06/guguTest">
		출력할 구구단 : <input type=text name="dan" /><br>
		<input type="submit" value="구구단 출력">
	</form>
</body>
</html>
--------------------------------------------------------------------------
package sec04.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 GuguTest
 */
@WebServlet("/guguTest")
public class GuguTest extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destroy 메소드 호출");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		int dan = Integer.parseInt(request.getParameter("dan"));
		out.print("<table border=1 width=800 align=center>");
		out.print("<tr align=center bgcolor='#FFFF66'>");
		out.print("<td colspan=4>" + dan + "단 출력 </td>");
		out.print("</tr>");
		for(int i = 1 ; i < 10; i++)
		{
        // if문을 이용해 행을 나타내는 <tr>태그에 대해 교대로 다른 배경색을 적용합니다.
			if(i % 2 == 0)
			{
				out.print("<tr align = center bgcolor='#ACFA58'>");
			} else
			{
				out.print("<tr align = center bgcolor='#81BEF7'>");
			}
			out.print("<td width=200>");
			out.print("<input type='radio' name='first' />" + i); // radio버튼(name값 써줘야 다중선택 방지됨.)
			out.print("</td>");
			out.print("<td width=200>");
			out.print("<input type='checkbox' />" + i);
			out.print("</td>");
			out.print("<td width=400>");
			out.print(dan + "* " + i);
			out.print("</td>");
			out.print("<td width=400>");
			out.print(i * dan);
			out.print("</td>");
			out.print("</tr>");
		}
		out.print("</table>");
	}

}

--------------------------------------------------------------------------

package sec01.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

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 MemberServlet
 */
@WebServlet("/member")
public class MemberServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		MemberDAO dao = new MemberDAO();
		List list = dao.listMembers(); // listMembers메소드로 회원정보를 조회
		
		out.print("<html><body>");
		out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
		out.print("<td>아이디</td><td>비밀번호</td><td>이름</td><td>이메일</td><td>가입일</td><td>");
		
		for(int i = 0; i<list.size(); i++)
		{
			MemberVO memberVO = (MemberVO) list.get(i);
			String id = memberVO.getId();
			String pwd = memberVO.getPwd();
			String name = memberVO.getName();
			String email = memberVO.getEmail();
			Date joinDate = memberVO.getJoinDate();
			out.print("<tr><td>" + id + "</td><td>" + pwd + "</td><td>" + name + "</td><td>" + email + "</td><td>" + joinDate + "</td></tr>");
		}
		out.print("</table></body></html>");
	}

}

------------------------------

package sec01.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class MemberDAO {
	private static final String driver= "oracle.jdbc.driver.OracleDriver";
	private static final String url = "jdbc:oracle:thin:@localhost:1521:XE";
	private static final String user ="scott";
	private static final String pwd = "tiger";
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	
	public List listMembers()
	{
		List list = new ArrayList();
		try
		{
			connDB(); // 네가지 정보로 데이터베이스를 연결
			String query = "select * from t_member ";
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // 파생된 SQL 재사용. preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			ResultSet rs = pstmt.executeQuery(); // sql문으로 회원 정보를 조회
			while(rs.next())
			{
				// 조회한 레코드의 각 컬럼 값을 받아옴.
				String id = rs.getString("id");
				String pwd = rs.getString("pwd");
				String name = rs.getString("name");
				String email = rs.getString("email");
				Date joinDate = rs.getDate("joinDate");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				MemberVO vo = new MemberVO();
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				list.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return list; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}

	private void connDB()
	{
		try
		{
			Class.forName(driver);
			System.out.println("Oracle 드라이버 로딩 성공");
			con = DriverManager.getConnection(url, user, pwd);
			System.out.println("Connection 생성 성공");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

--------------------------------------------

package sec01.ex01;

import java.sql.Date;

public class MemberVO {
	private String id;
	private String pwd;
	private String name;
	private String email;
	private Date joinDate;
	
	public MemberVO()
	{
		System.out.println("MeberVO 생성자 호출");
	}
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getJoinDate() {
		return joinDate;
	}
	public void setJoinDate(Date joinDate) {
		this.joinDate = joinDate;
	}
}







'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

5일차  (0) 2019.08.06
4일차  (0) 2019.08.05
JSP(Java Server Page)  (0) 2019.08.02
2일차 - 서블릿  (0) 2019.08.01
2일차 - HTML  (0) 2019.08.01
And