2013年2月24日 星期日

開啟Eclipse 出現 Fail to create the Java Virtual Machine





開啟Eclipse 出現 Fail to create the Java Virtual Machine。



爬文之後發現問題出現在Eclipse.ini 檔中的


-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms40m
-Xmx512m

將256 M改為128 M 即可正常啟動

2013年2月19日 星期二

Web 伺服器和Tomcat

一般所謂的Web 伺服器,是指一種軟體。管理Servlet /JSP 並不屬於Web 伺服器的權責,而是交由Web 容器(亦稱為Servlet/JSP )容器。當Web 伺服器收到用戶端瀏覽器的請求時,將其轉發給Web 容器,Web 容器呼叫對應的Servlet 回應請求,Web伺服器再將Web 容器的回應發送給用戶端瀏覽器。

2013年2月2日 星期六

Web 控制項 避免重複觸發 Button



1.
屬性中 OnClientClick 設定 disabled=true;this.form1.submit();
UseSubmitBehavious=false,將產生下列的_doPostBack











執行結果


2.或者可以在Code Behind 程式碼中加上


/* Sensor 代表觸動事件來源物件,e為傳遞給該事件的額外描述
在畫面上的點選動作,可用e來擷取

*/
 protected void Button1_Click(object sender, EventArgs e)
    {
        Button1.Enabled = false;
    }


ASP .NET Web 控制項(TextView)



在工具列拉一個TextBox 的控制元件,放到HTML 中








修改屬性中的AutoPostBack 設為true,當滑鼠移到其他控制項時,會自動執行送出的動作。




選擇屬性中的事件(閃電符號),選取TextChanged 事件 TextBox1_TextChange



TextBox.aspx






<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TextBox.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <!-- 控制項一定要放在FORM 內
    
    -->
    <form id="form1" runat="server">
    <div>
    
       欄位1: 
        <asp:TextBox ID="TextBox1" runat="server" 
        AutoPostBack="True" ontextchanged="TextBox1_TextChanged" 
            ></asp:TextBox>
            <!-- 設定AutoPostBack="True",當滑鼠移到其他控制項時,
            會自動執行送出的動作
            -->
        <br />
       欄位2: <asp:TextBox ID="TextBox2" runat="server" 
            ontextchanged="TextBox2_TextChanged1"></asp:TextBox>
    
    </div>
    </form>
</body>
</html>



=================================================================
後置程式碼的部分


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    //ASP.NET 程式中最早被執行的 
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("Page_Load");
    }
    protected void TextBox2_TextChanged(object sender, EventArgs e)
    {

    }
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        Response.Write("TextChanged 被觸發");
    }
    protected void TextBox2_TextChanged1(object sender, EventArgs e)
    {

    }
}



執行結果

Key 上aaa 滑鼠移到其他地方時




2013年1月31日 星期四

MyFirstServlet


這個Servlet 擴充了HttpServlet 類別,並改寫繼承的doGet()方法,當伺服器收到送往這Servlet的Get Request 時,伺服器便會呼叫 doGet(),並傳入一個HttpServletRequest 物件和HttpServletResponse物件。

HttpServletRequest 物件代表client提出的申請,讓servlet 得到client的資訊
request的參數。HttpServletResponse 物件代表Servlet 要回傳給client的回覆
,內容可以是各種型態,但必須在response中註明是何種type。在此程式中先用setContenType 方法將內容型態定義為"text/html"

在NetBeans中的使用方式如下


=============================================================


import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class HelloWorld extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet HelloWorld</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet HelloWorld at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request
            , HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();
        out.println("<HTML>");
        out.println("<HEAD><TITLE>hello World</TITLE></HEAD>");
        out.println("<BODY>");
        out.println("<Big>Hello World11</Big>");
        out.println("</BODY></html>");
//        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

2013年1月29日 星期二

淺談setDefaultCloseOperation() 的四個參數


java Swing 開發視窗 , 當你在點下視窗上 X 按鍵時 ,





會關閉視覺化的視窗 ,但如未設定視窗跳出的方法(system.exit) ,所關閉的程序還是會一直存在記憶体中無法消去

此時可以使用此方法 setDefaultCloseOperation(int operation)

在參數(int operation) 中 有四個參數可以選擇, 也可填入相對應的數字 


1.將X退出鍵 設為失效 , 也就是使點擊後無效 , 不起作用。
  setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
 =setDefaultCloseOperation(0);



2.點擊退出時,只是將視覺化的介面(HIDE),實際程序還是在後台執行(記憶体未釋放)
setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE );
 =setDefaultCloseOperation(1);


3.先退出介面等待處理后再釋放記憶体
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOS);
 =setDefaultCloseOperation(2);

4.直接退出介面並釋放記憶体
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 =setDefaultCloseOperation(3);

NetBean 的第一隻程式





  1. 開啟NetBeans
  2. 在IDE環境中選擇FILE> New Project (Ctrl-Shift-N),如下圖所示
  1. 在新專案精靈中,展開JAVA的分類,並選擇Java Application,並選Next,如下圖所示。

  1. 在Name and Location 的精靈頁中,輸入以下設定
  • 在Project Name欄位中,輸入HelloWorldApp
  • 取消Use Dedicated Folder for Storing Libraries的打勾部分
  • 勾選Create Main Class的部分並輸入   helloworldapp.HelloWorldApp.
  • 勾選 Set as Main Project 的部分
  1. 選擇Finish
專案將自動建立並在IDE環境中自動被開啟,您可以參考下面的元件
在Projects 視窗中,可以看到Project的元件的樹狀結構包含source files,您寫程式時會參考到的libraries等。
HelloWorldApp  會在Source 編輯器的視窗中自動被開啟。
在Navigator視窗中,您可以快速的瀏覽所選的類別中的元素
在 Tasks 視窗中列出編譯錯誤,以及關鍵字

Adding Code to the Generated Source File
因您在新專案精靈中將Create Main Class checkbox勾選,IDE將自動幫您產生一個main 類別的骨架,您可以在骨架中藉由下面的程式加入Hello World的訊息
           // TODO code application logic here
           System.out.println("Hello World!");

由File>Save中選擇存檔
檔案看起來會長的如下面的樣子
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package helloworldapp;

/**
*
* @author <your name>
*/
public class HelloWorldApp {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
           System.out.println("Hello World!");
   }

}

Adding Code to the Generated Source File
IDE會在您存檔時自動compile,您不需要為了執行您的程式而再手動編譯您的專案,要執行程式時您可以選擇Run>Run Main Project(F6)