Chap 1. 서블릿과 JSP는 어디에 쓰는 물건인고?
GET 는 서버로부터 뭔가를 돌려 받는다고 생각하시면 됩니다.
GET 메소드는 폼 데이터를 URL 뒤에 추가합니다.
POST는 서버에게 자원을 요청할 때 필요한 정보를 함께 넘겨줍니다.
POST 메소드는 요청의 몸체(body)에 폼 데이터를 포함합니다.
MINE 타입은 브라우저에게 어떤 종류의 데이터를 받을 것이라는 정보를 미리 알려주어, 브라우저가 데이터를 어떻게 다룰지 준비하도록 합니다.
'수업 > Head First Servlets & JSP' 카테고리의 다른 글
로그인, 회원가입, 정보수정, 탈퇴 (2) | 2008.09.26 |
---|---|
[0923]jspBean, forward, include (0) | 2008.09.23 |
[기타] 성적 처리 프로그램 - 포스팅 중
학생의 번호, 이름, 국어, 영어, 수학 점수를 입력 받아 총점, 평균, 등급(A~F), 랭킹을 구하시오.
설계 과정
1. 기본값 출력 테스트
각 필드의 변수명을 정하고 출력 되는지 확인한다.
2. 변수 입력 받은 후 출력
입력 받은 변수명을 연산하고 출력한다.
3. 유효성 검사
유효하지 않은 값과 입력 시, 에러를 해결한다.
4. (1~3까지의 1명의 성적을 처리했다면) 여러 명의 점수를 입력 받아서 처리한다.
5. Swing로 대체한다.
===========1. 기본값 출력 테스트 ===================================================
===============================
Score.java
package scorecalc;
public class Score {
protected int num;
protected String name;
protected int kor;
protected int eng;
protected int math;
protected int total;
protected double avg;
protected char grade='*';
protected int rank;
public void outPut(){
System.out.println(num+" "+name+" "+kor+" "+eng+" "+math+" "+total+" "+avg+" "+grade+" "+rank);
}
public void titlePrint(){
System.out.println("번호"+" "+"이름"+" "+"국어"+" "+"영어"+" "+"수학"+" "+"총점"+" "+"평균"+" "+"등급"+" "+"랭킹");
}
}
===========================================
ScoreMain.java
package scorecalc;
public class ScoreMain {
public static void main(String[] args) {
Score sc = new Score();
sc.titlePrint();
sc.outPut();
}
}
===========2. 변수를 입력 받은 후 출력 ==============================================
=======================
Score.java
package scorecalc;
public class Score {
protected int num;
protected String name;
protected int kor;
protected int eng;
protected int math;
protected int total;
protected double avg;
protected char grade='*';
protected int rank;
}
=======================
ScoreIO.java
package scorecalc;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ScoreIO extends Score{
public void outPut(){
System.out.println(num+" "+name+" "+kor+" "+eng+" "+math+" "+total+" "+avg+" "+grade+" "+rank);
}
public void titlePrint(){
System.out.println("성적처리를 시작합니다.");
System.out.println("번호"+" "+"이름"+" "+"국어"+" "+"영어"+" "+"수학"+" "+"총점"+" "+"평균"+" "+"등급"+" "+"랭킹");
}
public void standInput() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("번호를 입력하세요.");
num = Integer.parseInt(br.readLine().trim());
System.out.println("이름을 입력하세요.");
name = br.readLine().trim();
System.out.println("국어점수를 입력하세요.");
kor = Integer.parseInt(br.readLine().trim());
System.out.println("영어점수를 입력하세요.");
eng = Integer.parseInt(br.readLine().trim());
System.out.println("수학점수를 입력하세요.");
math = Integer.parseInt(br.readLine().trim());
calc();
}
public void calc(){
total = kor + eng + math;
avg = (double)total/3.;
if(avg>100 || avg <0)grade='*';
else if(avg>=90)grade='A';
else if(avg>=80)grade='B';
else if(avg>=70)grade='C';
else if(avg>=60)grade='D';
else grade='F';
}
}
=======================
ScoreMain.java
package scorecalc;
import java.io.IOException;
public class ScoreMain {
public static void main(String[] args) throws IOException {
ScoreIO sc = new ScoreIO();
sc.standInput();
sc.titlePrint();
sc.outPut();
}
}
============ 3. 유효성 검사 ========================================================
유효성 검사를 위해서 별도의 메서드(inputCheck)를 만들어 ScoreIO.java 파일의 standInput() 메서드를 다시 기술한다.
파일명 ScoreIO.java
protected void standInput() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
num = inputCheck("번호?", br);
System.out.println("이름을 입력하세요."); // 이름은 String형이므로 inputCheck에서 제외
name = br.readLine().trim();
kor = inputCheck("국어?",br);
eng = inputCheck("영어",br);
math = inputCheck("수학?", br);
calc();
}
private int inputCheck(String str, BufferedReader br) throws IOException{
System.out.println(str);
int temp=-1;
try {
temp=Integer.parseInt(br.readLine().trim());
if(str.startsWith("번호")) return temp;
else if (temp>=0 && temp<=100) return temp;
} catch (NumberFormatException e) {
System.out.println("숫자를 다시 입력 해 보세요");
}
temp=inputCheck(str,br);
return temp;
}
=============== 4. 여러명 처리 =====================================================
여러명의 데이터를 입력 받아 처리하기 위해 ArrayList로 처리한다.
파일명 ScoreArray.java
package scorecalc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class ScoreArray {
private ArrayList<Score> stus = new ArrayList<Score>();
public void init(){
stus.add(new Score());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("추가로 입력? y/n");
try {
String yn=br.readLine().trim();
if(yn.equalsIgnoreCase("y")) init();
else {
Collections.sort(stus);
output();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void output(){
if(stus==null || stus.size()==0){
System.out.println("출력할 자료가 없음");
return;
}
for(Score s:stus)
s.output();
/*for(int i=0;i<stus.size();i++){ // for문 해석문
stus.get(i).outPut();
}*/
}
}
==========================
파일명 ScoreArrayUse.java
package scorecalc;
public class ScoreArrayUse {
public static void main(String[] args) {
ScoreArray stus=new ScoreArray();
stus.init();
}
}
============ 5. Swing으로 화면 연결 ================================================
===================================================================================
===================================================================================
===================================================================================
===================================================================================
===================================================================================
===================================================================================
===================================================================================
'수업 > 자바2JDK입문' 카테고리의 다른 글
Part 6. AWT - IV 입력관련 이벤트 처리 (5) | 2008.08.28 |
---|---|
Part 6. AWT - III 윈도우창에 메뉴바와 메뉴 만들기 (0) | 2008.08.27 |
Part 6. AWT - II 컴포넌트의 이벤트 처리(2) (0) | 2008.08.27 |
Part 6. AWT - II 컴포넌트의 이벤트 처리(1) (0) | 2008.08.23 |
Part 6. AWT - I AWT를 이용한 GUI 작성 (0) | 2008.08.21 |
Part 7. Applet과 스레드 I - Applet
애플릿(Applet)이란?
보통 애플리케이션은 main 함수가 꼭 포함되어 있지만
자바 애플릿은 HTML 페이지에 포함되어 웹 브라우저에 의해 실행되는 자바 프로그램입니다.
애플릿은 Applet 클래스를 상속 받아야 합니다.
import java.applet.Applet;
주의 사항 : 애플릿을 상속받는 클래스는 public로 선언되어야 웹 브라우져에서 실행이 가능합니다.
ex : public class AppletTest extends Applet{}
애플릿의 주기
위에서 보셨듯 애플리케이션은 main 메서드를 시작점으로 하지만 애플릿은 main 메서드를 제공하지 않으므로 5가지의 메서드가 웹 브라우저의 상태에 따라 호출됩니다.
메소드 |
설명 |
init() |
애플릿이 웹 브라우저에 로드될 때 호출 |
start() |
해당 페이지를 사용자가 잠시 떠났다가 다시 돌아왔을 때마다 실행 |
paint() |
애플릿 화면을 다시 그려야 하는 경우에 호출 |
stop() |
페이지를 떠날 때 호출 |
destroy() |
웹 브라우저를 종료하게 되면 호출 |
메서드의 실행결과를 애플릿 프로그램을 실행중인 웹 브라우저에서 살펴보려면
[도구] - [Sun Java 콘솔] 메뉴를 선택하면 됩니다.
repaint() : paint() 메서드가 다시 호출이 되어야 할때 사용하는 메서드로서
repaint() 메서드를 호출하면 paint() 메서드가 웹브라우저에 의해서 자동으로 호출됩니다.
애플릿 이벤트 처리
애플릿에서 마우스와 관련된 이벤트는 MouseEvent(클래스 : MouseAdapter, 인터페이스 : MouseListener)가 있습니다.
아래는 MouseEvent와 관련된 메서드 입니다.
주요 메소드 |
설명 |
public void mousePressed(MouseEvent e) |
마우스 버튼이 눌렸을 때 |
public void mouseReleased(MouseEvent e) |
마우스 버튼이 눌려졌다가 떼어졌을 때 |
public void mouseEntered(MouseEvent e) |
마우스가 영역 안으로 들어 왔을 때 |
public void mouseExited(MouseEvent e) |
마우스가 영역 밖으로 나갈 때 |
public void mouseClicked(MouseEvent e) |
마우스가 클릭되었을 때 |
============== 애플릿에서 마우스가 클릭된 위치에 점 출력 ============================
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class AppletExam03 extends Applet{
int x,y;
public void init(){
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
x=e.getX();
y=e.getY();
repaint();
}
}
);
}
public void start(){
x=-1; y=-1;
repaint();
}
public void paint(Graphics g){
if(x!=-1 || y!=-1){
g.fillOval(x, y, 10, 10);
}
}
}
========================== 애플릿 불러오는 html ====================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Applet fillOval </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<applet code="AppletExam03.class" width="300" height="300"></applet>
</BODY>
</HTML>
===================================================================================