JSP(Java) ==와 .equals

Java에서와 마찬가지로 String형에 대해 ‘같음’을 정의하려면

.equals로 접근하는 것이 우리가 흔히 생각하는 ‘같음’으로 될 것이다.

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
  자바 코드<br> 
  <% if(request.getParameter("id") != null) { %> 
    == 연산자 사용 결과 : <%=request.getParameter("id")=="pinksung" %> <br> 
    equals() 사용 결과 : <%=request.getParameter("id").equals("pinksung") %><br> 
  <% }else { 
      out.print("id를 전달해 주세요."); 
      } 
     %> 
</body> 
</html>

get방식으로 id를 pinksung으로 줄 경우 결과

자바 코드 
== 연산자 사용 결과 : false 
equals() 사용 결과 : true

 

Java 생성자와 오버로딩 예제 – 5

public class Student { 
    private int number; 
    private String name; 
    private int age; 
 
    Student() { 
        this(4,"hello",10); 
    } 
 
    Student(int number, String name, int age) { 
        this.number = number; this.name = name; this.age = age; 
    } 
 
    public void print(){ 
        System.out.println("number = " + number + " name = " + name + " age = " + age); 
    } 
} 

 

public class StudentTest { 
    public static void main(String[] args) { 
        Student std = new Student(); 
        Student std2 = new Student(1,"name",2); 
 
        std.print(); 
        std2.print(); 
    } 
} 

 

Java 생성자와 오버로딩 예제 – 4

public class Time { 
    private int hour; 
    private int minute; 
    private int second; 
 
    //첫 번째 생성자 
    public Time(){ 
        this(0,0,0); 
    } 
 
    //두 번째 생성자 
    public Time(int h, int m, int s){ 
        hour = ((h>=0 && h < 24) ? h:0); //삼항연산자로, (h >= 0 과 h < 24)를 만족하지 않으면 0을, 만족하면 h를 hour에 대입 
        minute = ((m >= 0 && m < 60) ? m : 0); //각각 인수에 올바르지 않은 값이 있다면 이를 0으로 치환 
        second = ((s>= 0 && s < 60) ? s : 0); 
    } 
 
    // 시:분:초의 형식으로 출력 
    public String toString(){ 
        return String.format("%02d:%02d:%02d", hour, minute, second); 
        //String.format은 printf와 유사한것으로 보임. 
    } 
} 

 

public class TimeTest { 
    public static void main(String args[]) { 
        Time time = new Time(); 
        System.out.println("기본 생성자 호출 후 시간 : " + time.toString()); //기본 생성자 호출시 
 
        Time time2 = new Time(13,27,6); 
        System.out.println("두 번째 생성자 호출 후 시간 : " + time2.toString()); //제대로된 값을 입력했을 시 
 
        Time time3 = new Time(99,66,77); 
        System.out.println("올바르지 않은 시간 설정 후 시간 : " + time3.toString()); //올바르지 않은 값을 입력했을 시 
    } 
} 

 

Java 생성자와 오버로딩 예제 – 3

public class Box { 
    private int width; // -width:int == private int width 
    private int length; // 마찬가지 
    private int height; 
    private int volume; 
 
    public int getVolume() { // +getVolume():int == public int getVolume() 
        return volume; 
    } 
 
    Box(int w, int l, int h) { 
        width = w; 
        length = l; 
        height = h; 
 
        volume = width * length * height; 
    } 
 
} 

 

public class BoxTest { 
    public static void main(String[] args) { 
        Box box = new Box(20,20,30); //Box 클래스 생성 
 
        System.out.println("상자의 부피는 " + box.getVolume() + "입니다."); 
        //부피값은 getVolume에서 받아온다 
    } 
} 

 

Java 생성자와 오버로딩 예제 – 2

public class Date { 
    private int year; 
    private String month; 
    private int day; 
 
    public Date() { 
        this(1900,"1월",1); //여기서 this는 19번째줄을 의미. 
        //아무것도 입력치 않을경우 
    } 
 
    public Date(int year) { 
        this(year,"1월",1); //마찬가지로 this는 19번째줄을 의미 
        //year만 입력했을 경우 
    } 
 
    public Date(int year, String month, int day) { 
        this.year = year; // this.year의 this의 의미는 현재 객체의 year, 즉 7번째 줄을 의미. 
        this.month = month; 
        this.day = day; 
    } 
 
    @Override 
    public String toString() { 
        return "Date [year = "+ year + ",month = " + month + ",day = " + day + "]"; 
    } //toString 오버라이딩. to String이 호출될 경우 오버라이드된 값을 리턴함. 
} 

 

public class DateTest { 
    public static void main(String[] args) { 
        Date date1 = new Date(2015,"8월",10); //첫번째 Date는 모든 값을 넣음 
        Date date2 = new Date(2020); //두번째 Date는 연도만 
        Date date3 = new Date(); //세번째 Date는 디폴트값 
 
        System.out.println(date1); //하나씩 출력 
        System.out.println(date2); 
        System.out.println(date3); 
    } 
} 

 

Java 생성자와 오버로딩 기본 예제

public class Television { 
    private int channel; 
    private int volume; 
    private boolean onOff; 
 
    Television(int channel, int volume, boolean onOff) { 
        this.channel = channel; 
        this.volume = volume; 
        this.onOff = onOff; 
    } 
 
    void print() { 
        System.out.println("채널은 " + channel + "이고 볼륨은" + volume + "입니다."); 
    } 
} 

 

public class TelevisionTest { 
    public static void main(String[] args) { 
        Television tv = new Television(4,5,true); 
        Television tv2 = new Television(5,7,false); 
 
        tv.print(); 
        tv2.print(); 
 
    } 
 
} 

 

Java 인터페이스

인터페이스(interface)란 추상클래스와 흡사하지만 약간씩 다른데. 차이점은

  • 인터페이스는 추상메소드와 상수만 가질 수 있다.
  • 인터페이스 내의 메소드는 모두 public abstract로 선언된다.
  • 인터페이스 내의 변수는 모두 public static final로 선언된다.

이런 차이점이 있다.

인터페이스는 일종의 규격을 정해주는 거라고 생각하면 될 것 같다.

또 인터페이스는 추상클래스와 마찬가지로 몸체는 없는 추상 메소드만 정의된다.

package study; 
 
/** 
 * Created by capta on 2016-05-10. 
 */ 
public class testMain { 
    public static void main(String[] args) { 
        Television t = new Television(); 
        t.turnOn(); 
        t.turnOff(); 
    } 
} 
 
class Television implements RemoteControl { 
    public void turnOn() { 
        System.out.println("tv를 켠다"); 
    } 
    public void turnOff() { 
        System.out.println("tv를 끈다"); 
    } 
} 
 
interface RemoteControl { 
    public void turnOn(); 
    public void turnOff(); 
}

실행결과

tv를 켠다 
tv를 끈다

Java JButton과 JPanel을 이용한 GUI

package Study; 
 
import javax.swing.*; 
 
/** 
 * Created by cryne on 2016-05-03. 
 */ 
public class FrameTest2 extends JFrame{ 
    FrameTest2() { 
        setSize(400,200); 
 
        JPanel p1 = new JPanel(); 
        JPanel p2 = new JPanel(); 
 
        JPanel p3 = new JPanel(); 
 
        JLabel label = new JLabel("자바 호텔에 오신 것을 환영합니다. 숙박일수를 입력하세요."); 
        JButton b1 = new JButton("1명"); 
        JButton b2 = new JButton("2명"); 
        JButton b3 = new JButton("3명"); 
        JButton b4 = new JButton("4명"); 
        JButton b5 = new JButton("5명"); 
 
        p1.add(label); 
        p2.add(b1); 
        p2.add(b2); 
        p2.add(b3); 
        p2.add(b4); 
        p2.add(b5); 
 
        p3.add(p1); 
        p3.add(p2); 
 
        add(p3); 
 
        setVisible(true); 
    } 
} 

 

결성! 카르텔 지옥파티 업데이트

Frame.java

각 버튼/패널 변수명 :

추가 : InsertButton
삭제 : DeleteButton
업데이트 : UpdateButton
검색 : SearchButton
오름차순 : SortUpButton
내림차순:  SortDownButton

추가 시 들어가는 패널 명 : panel1
검색 시 들어가는 패널 명 : panel2

 

반드시 JFrame 클래스의 extends javax.swing.JFrame 뒤에 implements ActionListener 를 추가해야함!!

CustomButton selected = null; 
private void InsertButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here: 
        panel2.removeAll();//패널2 (검색 표시 패널)의 내용을 다 지움. 
        panel2.updateUI(); 
         
        CustomButton btn = new CustomButton(new Student(tf1.getText(),tf2.getText())); //버튼 생성 
        btn.addActionListener(this); //버튼 이벤트 걸기. 이 버튼 이벤트는 저기 밑에있음 
         
        panel1.add(btn); 
        panel1.updateUI(); 
         
        clearTf(); //텍스트필드의 내용을 다 지워버림 
         
}                                             
 
private void DeleteButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here: 
        if(selected == null) { 
            return; 
        } 
        panel1.remove(selected); 
        panel1.updateUI(); 
        selected = null; 
         
        //clearTf(); 
         
}                                             
 
private void UpdateButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here: 
        if(selected == null) { 
            return; 
        } 
         
        Student std = new Student(tf1.getText(),tf2.getText()); 
        selected.setStd(std); //버튼의 Student를 다시 설정함 
        selected.refreshName(); //버튼에 적힌 글씨 새로고침 
        clearTf(); 
}                                             
 
private void SearchButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here: 
        panel2.removeAll(); 
         
        if(tf1.getText().equals("") && tf2.getText().equals("")) { 
            return; 
        } 
         
        CustomButton[] cb = getAllButtons(panel1.getComponents()); 
        int size = cb.length; 
        for(int i = 0; i < size; i++) { 
            if(cb[i].getStd().getName().contains(tf1.getText()) && cb[i].getStd().getTel().contains(tf2.getText())) { 
                CustomButton btn = new CustomButton(cb[i].getStd()); 
                btn.addActionListener(this); 
                panel2.add(btn); 
            } 
        } 
         
        clearTf(); 
        panel2.updateUI(); 
         
}                                             
 
private void SortUpButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here: 
        selectionSort(this.getAllButtons(panel1.getComponents()),1); 
        clearTf(); 
}                                             
 
private void SortDownButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
        // TODO add your handling code here: 
        selectionSort(this.getAllButtons(panel1.getComponents()),0); 
        clearTf(); 
}                                               
     
    private void clearTf() { 
        tf1.setText(""); 
        tf2.setText(""); 
} 
     
private void selectionSort(CustomButton[] btn, int select) { 
        int size = btn.length; 
         
        int maxOrMin; 
        Student iStd, mStd; 
        for(int i = 0; i < size-1; i++) { 
            maxOrMin = i; 
            for(int j = i+1; j < size; j++) { 
                if((select == 0 && btn[maxOrMin].compareTo(btn[j]) < 0) || (select == 1 && btn[maxOrMin].compareTo(btn[j]) > 0)) { 
                    maxOrMin = j; 
                } 
            } 
            iStd = btn[i].getStd(); 
            mStd = btn[maxOrMin].getStd(); 
             
            btn[i].setStd(mStd); 
            btn[maxOrMin].setStd(iStd); 
        } 
        for(int i = 0; i < size; i++) { 
            btn[i].refreshName(); 
        } 
} 
     
private CustomButton[] getAllButtons(Component[] cpt) { 
        int size = cpt.length; 
        CustomButton[] cb = new CustomButton[size]; 
         
        for(int i = 0; i < size; i++) { 
            cb[i] = (CustomButton) cpt[i]; 
        } 
         
        return cb; 
} 
 
@Override 
public void actionPerformed(ActionEvent e) { 
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
        selected = (CustomButton) e.getSource(); 
        tf1.setText(selected.getStd().getName()); 
        tf2.setText(selected.getStd().getTel()); 
}

나머지는 같음.  ㅎ

결성! 카르텔

Frame.java

MyJButton selected; 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here: 
        panel2.removeAll(); 
        panel2.updateUI(); 
        MyJButton btn = new MyJButton(new Visitor(tf1.getText(),tf2.getText())); 
        btn.addActionListener(new ActionListener() { 
            @Override 
            public void actionPerformed(ActionEvent e) { 
                //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
                selected = (MyJButton) e.getSource(); 
                tf1.setText(selected.getVs().getName()); 
                tf2.setText(selected.getVs().getTel()); 
            } 
    }); 
        clearTf(); 
        panel1.add(btn); 
        panel1.updateUI(); 
}                                         
 
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here: 
        panel2.removeAll(); 
        panel2.updateUI(); 
        if(selected == null) { 
            return; 
        } 
        panel1.remove(selected); 
        selected = null; 
        panel1.updateUI(); 
        clearTf(); 
}                                         
 
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here: 
        panel2.removeAll(); 
        panel2.updateUI(); 
        if(selected == null) { 
            return; 
        } 
        Visitor vs = new Visitor(tf1.getText(),tf2.getText()); 
        selected.setVs(vs); 
        selected.refreshName(); 
         
        clearTf(); 
}                                         
 
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here: 
        panel2.removeAll(); 
         
        Component[] cpt = panel1.getComponents(); 
        int size = cpt.length; 
        MyJButton[] btn = new MyJButton[size]; 
        for(int i = 0; i < size; i++) { 
            btn[i] = (MyJButton) cpt[i]; 
        } 
         
        //MyJButton temp; 
        for(int i = 0; i < size; i++) { 
            if(btn[i].getVs().getName().contains(tf1.getText()) || btn[i].getVs().getTel().contains(tf2.getText())) { 
                panel2.add(new MyJButton(btn[i].getVs())); 
            } 
           
        } 
         
         
        panel1.updateUI(); 
        panel2.updateUI(); 
}                                         
private void clearTf() { 
        tf1.setText(""); 
        tf2.setText(""); 
}

MyJButton.java

/* 
 * To change this license header, choose License Headers in Project Properties. 
 * To change this template file, choose Tools | Templates 
 * and open the template in the editor. 
 */ 
package kr.razberry; 
 
import javax.swing.JButton; 
 
/** 
 * 
 * @author capta 
 */ 
public class MyJButton extends JButton { 
    Visitor vs; 
 
    public MyJButton(Visitor vs) { 
        super(vs.getText()); 
        this.vs = vs; 
    } 
 
    public Visitor getVs() { 
        return vs; 
    } 
 
    public void setVs(Visitor vs) { 
        this.vs = vs; 
    } 
     
    public void refreshName() { 
        this.setText(vs.getText()); 
    } 
     
} 

Visitor.java

/* 
 * To change this license header, choose License Headers in Project Properties. 
 * To change this template file, choose Tools | Templates 
 * and open the template in the editor. 
 */ 
package kr.razberry; 
 
/** 
 * 
 * @author capta 
 */ 
public class Visitor { 
     
    private String name; 
     
    private String tel; 
 
    public Visitor(String name, String tel) { 
        this.name = name; 
        this.tel = tel; 
    } 
     
 
    /** 
     * Get the value of tel 
     * 
     * @return the value of tel 
     */ 
    public String getTel() { 
        return tel; 
    } 
 
    /** 
     * Set the value of tel 
     * 
     * @param tel new value of tel 
     */ 
    public void setTel(String tel) { 
        this.tel = tel; 
    } 
 
 
    /** 
     * Get the value of name 
     * 
     * @return the value of name 
     */ 
    public String getName() { 
        return name; 
    } 
 
    /** 
     * Set the value of name 
     * 
     * @param name new value of name 
     */ 
    public void setName(String name) { 
        this.name = name; 
    } 
     
    public String getText() { 
        return name + "/" + tel; 
    } 
 
}