주요내용 : 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 |