'04.IT Knowledge/Java'에 해당되는 글 4건

  1. 2010.08.13 HttpURLConnection 을 이용한 html/xml 읽기
  2. 2009.07.02 JavaFX와 JFreeChart
  3. 2009.03.22 JBoss Virtualhost 설정
  4. 2009.01.01 JavaFX Eclipse Plug-in 설치
04.IT Knowledge/Java2010. 8. 13. 18:09

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


public class JHttpURLConnection {
    public static String getHttpResults(String targetUrl, String parameter, String contentType) {
        String result = "";
        URL url;
        BufferedReader in = null;
        InputStreamReader isr = null;
        OutputStream out = null;
        try {
            url = new URL(targetUrl);
            URLConnection connection = url.openConnection();
            HttpURLConnection httpConn = (HttpURLConnection) connection;
            byte[] b = null;
            if(!"".equals(parameter)) {
                b = parameter.getBytes("UTF-8");
                httpConn.setRequestProperty("Content-Length", String.valueOf(b.length));
            }
            String cType = "text/xml; charset=utf-8";
            if(contentType != null && !"".equals(contentType)) {
                cType = contentType;
            }
            httpConn.setRequestProperty("Content-Type", cType);
            httpConn.setRequestMethod("POST");
            httpConn.setDoOutput(true);
            httpConn.setDoInput(true);

            if(!"".equals(parameter)) {
                out = httpConn.getOutputStream();
                out.write(b);
            }
            isr = new InputStreamReader(httpConn.getInputStream(), "utf-8");
            in = new BufferedReader(isr);

            String inputLine = "AA";
            StringBuffer message = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                message.append(inputLine);
            }
            httpConn.disconnect();
            result = message.toString();
        } catch (MalformedURLException e) {
            result = ""
                + e.getMessage()
                + "
";
        } catch (IOException e) {
            result = ""
                + e.getMessage()
                + "
";
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException e) {
                result = ""
                    + e.getMessage()
                    + "
";
            }
            try {
                if (isr != null) {
                    isr.close();
                }
            } catch (IOException e) {
                result = ""
                    + e.getMessage()
                    + "
";
            }
            try {
                if (out != null) {
                    out.close();
                }
            } catch (IOException e) {
                result = ""
                    + e.getMessage()
                    + "
";
            }
        }
        return result;
    }
    
    public static void main(String[] args) {
        System.out.println(getHttpResults("http://www.naver.com", "", "text/html; charset=utf-8"));
    }
}
Posted by 아주 오래된 미래
04.IT Knowledge/Java2009. 7. 2. 22:38
 Java Swing Framework에서 제공하는 Component를 JavaFX에서 가져다 쓰기 위해서는 SwingComponent 클래스를 이용하여 Wrapping을 하는 것이 필요하다.
 이 글에서는 단순한 Swing Component가 아닌 JFreeChart의 Chart를 JavaFX위에 올려보겠다.

 1. NetBeans download
  - http://www.netbeans.org에서 NetBeans IDE를 다운로드 받아 설치한다. 여기에서 설치 방법은 설명하지 않겠다.
   개인적인 경험으로 JavaFX를 프로그래밍 한다면 Eclipse보다 NetBeans를 사용할 것을 권한다. (조금 더 편한듯..)

 2. JFreeChart download
  - 우선 JFreeChart를 http://www.jfree.org/jfreechart/download.html에서 다운로드 받는다.
  다운로드 받은 압축파일을 해제한 후 디렉토리 아래의 lib 폴더의 jar들을 이후에 프로젝트의 값을 설정할 때 클래스 패스로 잡아준다.

 3. Write Sample Swing Class
  - 여기서는 JFreeChart에서 demo로 제공하는 BarChartDemo1 클래스를 변형하여 사용할 것이다. 원래의 소스에서는 ApplicationFrame 클래스를 상속하여 예제가 구성되어 있으나 여기서는 JPanel을 상속하여 JavaFX에서 호출 가능하도록 할 것이다.

다음은 아래의 소스를 구현한 스크린 샷이다.




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// BarChart.java
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package a.wrapper;

import java.awt.Color;
import java.awt.GradientPaint;

import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class BarChart extends JPanel {

    private static String series1 = "First";
    private static String series2 = "Second";
    private static String series3 = "Third";

    private static String category1 = "Category 1";
    private static String category2 = "Category 2";
    private static String category3 = "Category 3";
    private static String category4 = "Category 4";
    private static String category5 = "Category 5";

    private static DefaultCategoryDataset dataset;

    public BarChart() {
        CategoryDataset datasetResult = createDataset();
        JFreeChart chart = createChart(datasetResult);
        ChartPanel panel = new ChartPanel(chart);
        this.add(panel);
    }

    public void changeDataset(double val) {
        dataset.setValue(1.0 + 2 * val, series1, category1);
        dataset.setValue(2.0 + 2 * val, series1, category2);
        dataset.setValue(3.0 + 2 * val, series1, category3);
        dataset.setValue(4.0 + 2 * val, series1, category4);
        dataset.setValue(5.0 + 2 * val, series1, category5);

        dataset.setValue(1.0 + 3 * val, series2, category1);
        dataset.setValue(2.0 + 3 * val, series2, category2);
        dataset.setValue(3.0 + 3 * val, series2, category3);
        dataset.setValue(4.0 + 3 * val, series2, category4);
        dataset.setValue(5.0 + 3 * val, series2, category5);

        dataset.setValue(1.0 + 4 * val, series3, category1);
        dataset.setValue(2.0 + 4 * val, series3, category2);
        dataset.setValue(3.0 + 4 * val, series3, category3);
        dataset.setValue(4.0 + 4 * val, series3, category4);
        dataset.setValue(5.0 + 4 * val, series3, category5);
    }

    private static CategoryDataset createDataset() {
        dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, series1, category1);
        dataset.addValue(4.0, series1, category2);
        dataset.addValue(3.0, series1, category3);
        dataset.addValue(5.0, series1, category4);
        dataset.addValue(5.0, series1, category5);

        dataset.addValue(5.0, series2, category1);
        dataset.addValue(7.0, series2, category2);
        dataset.addValue(6.0, series2, category3);
        dataset.addValue(8.0, series2, category4);
        dataset.addValue(4.0, series2, category5);

        dataset.addValue(4.0, series3, category1);
        dataset.addValue(3.0, series3, category2);
        dataset.addValue(2.0, series3, category3);
        dataset.addValue(3.0, series3, category4);
        dataset.addValue(6.0, series3, category5);
        return dataset;
    }

    private static JFreeChart createChart(CategoryDataset dataset) {

        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Demo",         // chart title
                "Category",               // domain axis label
                "Value",                  // range axis label
                dataset,                  // data
                PlotOrientation.VERTICAL, // orientation
                true,                     // include legend
                true,                     // tooltips?
                false                     // URLs?
                );

        chart.setBackgroundPaint(Color.white);
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(false);

        GradientPaint gp0 = new GradientPaint(0.0f,0.0f,Color.blue,0.0f,0.0f,new Color(0, 0, 64));
        GradientPaint gp1 = new GradientPaint(0.0f,0.0f,Color.green,0.0f,0.0f,new Color(0, 64, 0));
        GradientPaint gp2 = new GradientPaint(0.0f,0.0f,Color.red,0.0f,0.0f,new Color(64, 0, 0));

        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);
        renderer.setSeriesPaint(2, gp2);

        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setCategoryLabelPositions(
                         CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)
                                             );

        return chart;
    }
}

 4. Write Wrapper Class
  - JavaFX 실행파일에서 호출할 Wrapper 클래스를 정의한다.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// BarChartWrapper.fx
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package a.wrapper;

import javafx.ext.swing.SwingComponent;
import javax.swing.JPanel;
import java.awt.BorderLayout;

import org.jfree.data.category.CategoryDataset;

public class BarChartWrapper extends SwingComponent{

    var panel: JPanel;
    var centerPanel: JPanel;
    var northPanel: JPanel;

    var dataset: CategoryDataset;
    var chart: BarChart;

    public var top: SwingComponent on replace{
        northPanel.add( top.getJComponent(), BorderLayout.CENTER);
        panel.add(northPanel, BorderLayout.NORTH);
    }

    public var initValue: Double on replace{
        chart.changeDataset(initValue);
    }

    public override function createJComponent(){
        panel = new JPanel(new BorderLayout());
        centerPanel = new JPanel(new BorderLayout());
        northPanel = new JPanel(new BorderLayout());
        chart = new BarChart();
        centerPanel.add(chart, BorderLayout.CENTER);
        panel.add(centerPanel, BorderLayout.CENTER);
        return panel;
    }
}

 5. Write Main Class
  - JavaFX 실행파일을 작성한다.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Main.fx
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package a.main;

import javafx.stage.Stage;
import javafx.scene.Scene;

import a.wrapper.BarChartWrapper;
import javafx.ext.swing.SwingButton;

var initVal = 1.0;

Stage {
    title: "JavaFX에서 JFreeChart를 사용해 보자.."
    scene: Scene {
        content: BarChartWrapper {
            width: 600
            height: 450
            initValue: bind {initVal}
            top: SwingButton{
                text: "차트 데이터 변경하기"
                action: function() {
                    initVal *= 2
                }
            }
        }
    }
}

// 누구든 언제든 궁금한 사항이 있으면 질문하시라..
// 당장 답글이 달리지는 않겠지만, 일주일 이내에 반드시 답글을 달아드리겠삼~~

Posted by 아주 오래된 미래
04.IT Knowledge/Java2009. 3. 22. 09:34
server.xml

<!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    +
    + javarang.net
    +
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
        <Host name="javarang.test" autoDeploy="true" deployOnStartup="true"
            configClass="org.jboss.web.tomcat.security.config.JBossContextConfig"
            deployXML="false">
            <Context path="" docBase="D:\\workspaces\\javarang.test" reloadable="true"/>
            <Alias>www.javarang.test</Alias>
            <Alias>javarang.test</Alias>
            <Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve"
                cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"
                transactionManagerObjectName="jboss:service=TransactionManager" />
            <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="access" suffix=".log"
                fileDateFormat="yyyy-MM-dd"
                pattern="%t [%a] [%l] [%m] [%U] [%H] [%q] [%s] [%b] [%{User-Agent}i] [%{Referer}i]"
                directory="D:\\workspaces\\javarang.test\\logs"/>
        </Host>

jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
  <security-domain flushOnSessionInvalidation="false"/>
  <context-root>/</context-root>
  <virtual-host>javarang.test</virtual-host>
</jboss-web>
Posted by 아주 오래된 미래
04.IT Knowledge/Java2009. 1. 1. 18:56
Posted by 아주 오래된 미래