java啟動執行
A. java Web 啟動時自動執行代碼的幾種方式
Web容器啟動後執行代碼的幾種方式
其執行順序為:
4===>5===>1===>2===>3
即指定init-method的Bean開始執行
接著實現spring的Bean後置處理器開始執行
然後是Servlet的監聽器執行
再接下來是Servlet的過濾器執行
最後才是Servlet執行
1、實現Servlet監聽器介面ServletContextListener
[java] view plain
public class InitListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent context) {
}
@Override
public void contextInitialized(ServletContextEvent context) {
// 上下文初始化執行
System.out.println("================>[ServletContextListener]自動載入啟動開始.");
SpringUtil.getInstance().setContext(
<span style="white-space:pre"> </span>WebApplicationContextUtils.getWebApplicationContext(arg0.getServletContext())
<span style="white-space:pre"> </span>);
}
}
然後在web.xml文件配置該監聽器
[html] view plain
<listener>
<listener-class>com.test.init.InitListener</listener-class>
</listener>
2、實現Servlet的過濾器Filter
[html] view plain
public class InitFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
ServletException {
}
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("================>[Filter]自動載入啟動開始.");
// 讀取Spring容器中的Bean[此時Bean已載入,可以使用]
//寫啟動需要執行的代碼
System.out.println("================>[Filter]自動載入啟動結束.");
}
}
然後在web.xml文件配置過濾器即可
[html] view plain
<filter>
<filter-name>InitFilter</filter-name>
<filter-class>com.test.init.InitFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>InitFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
3、編寫一個Servlet,在web.xml裡面配置容器啟動後執行即可
[html] view plain
public class InitServlet extends HttpServlet {
/**
*/
private static final long serialVersionUID = 1L;
@Override
public void init(ServletConfig config) {
try {
super.init();
} catch (ServletException e) {
e.printStackTrace();
}
System.out.println("================>[Servlet]自動載入啟動開始.");
// 讀取Spring容器中的Bean[此時Bean已載入,可以使用]
//執行想要的代碼
System.out.println("================>[Servlet]自動載入啟動結束.");
}
}
然後在web.xml文件配置該Servlet的啟動方式為:容器啟動後執行
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.test.init.InitServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>test</param-value>
</init-param>
<!-- 此處指定載入順序為2,表明還有優先順序更高的Servlet要先執行 -->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>InitServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
關於啟動後執行,由load-on-startup指定:
(1)當值為0或者大於0時,表示容器在應用啟動時就載入這個servlet。值越小,啟動優先順序越高;
(2)當是一個負數時或者沒有指定時,表示該servlet被調用時才載入。
4、如果你使用Spring IOC作為Bean管理容器,那麼可以指定init-method其中init-method表示bean載入成功後,立即執行某個方法。配置如下:start為要執行的方法名稱
[html] view plain
<!-- service -->
<bean id="shopService" class="com.test.teach.service.ShopService" <span style="color:#33ffff;">init-method="start"</span>>
<property name="shopDao" ref="shopDao" />
</bean>
B. java文件怎麼運行
最簡單的方法就是在CMD里運行
舉一個例子來說你的問題吧:比如說你所要運行的java源文件名字為myfirst.java,它位於我的電腦E:\應用軟體\學習\JAVA\myfirst.java的路徑之下。
第一步:我的電腦開始,運行輸入「cmd」,此時進入DOS命令窗口。
第二步:「輸入 e:」,回車,此時進入E盤目錄之下。
第三步:「輸入 cd E:\應用軟體\學習\JAVA」,回車,此時進入myfirst.java所在的目錄之下。
第四步:「輸入 javac myfirst.java」,回車,此時為程序的編譯過程。
第五步:「輸入 java myfirst」,回車,此時為程序的運行階段,假如程序編寫的沒有問題,即可看到你想要的運行結果。
C. 怎樣運行java應用程序
運行java應用程序的步驟:
1、在D盤根目錄上創建名為HelloWorld.java的文件,並編寫相應java代碼
2、打開附件--->命令提示符,會彈出dos窗口
3、輸入d:,然後回車,會跳轉到d盤根目錄
4、輸入javac
HelloWorld.java,如果不提示任何信息,則表示該文件沒有語法錯誤,位置正確,並會在d盤上生成HelloWorld.class文件
5、輸入
java
HelloWorld,就可以在dos界面上看到運行結果了
D. java程序運行的五個步驟
1、Java程序從源文件創建到程序運行要經過兩大步驟:1、源文件由編譯器編譯成位元組碼(ByteCode) 2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言("semi-interpreted" language)。
第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點像make。如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。
編譯後的位元組碼文件格式主要分為兩部分:常量池和方法位元組碼。常量池記錄的是代碼出現過的所有token(類名,成員變數名等等)以及符號引用(方法引用,成員變數引用等等);方法位元組碼放的是類中各個方法的位元組碼。
第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。
2、下面是程序運行的詳細步驟:
在編譯好java程序得到Main.class文件後,在命令行上敲java Main。系統就會啟動一個jvm進程,jvm進程從classpath路徑中找到一個名為Main.class的二進制文件,將Main的類信息載入到運行時數據區的方法區內,這個過程叫做Main類的載入。
然後JVM找到Main的主函數入口,開始執行main函數。
main函數的第一條命令是Animal animal = new Animal("Puppy");就是讓JVM創建一個Animal對象,但是這時候方法區中沒有Animal類的信息,所以JVM馬上載入Animal類,把Animal類的類型信息放到方法區中。
載入完Animal類之後,Java虛擬機做的第一件事情就是在堆區中為一個新的Animal實例分配內存, 然後調用構造函數初始化Animal實例,這個Animal實例持有著指向方法區的Animal類的類型信息(其中包含有方法表,java動態綁定的底層實現)的引用。
當使用animal.printName()的時候,JVM根據animal引用找到Animal對象,然後根據Animal對象持有的引用定位到方法區中Animal類的類型信息的方法表,獲得printName()函數的位元組碼的地址。
開始運行printName()函數。
E. java程序如何運行
java程序分為兩個階段,編譯期和運行期
首先寫好源代碼文件(如果你位元組碼文件請看怎樣運行它),在確保本機已經安裝有JDK的情況下,並配置好環境變數的情況下,打開DOS窗口(也可以用win+r,輸入cmd),輸入javac 路徑 命令,路徑 為需要編譯的源代碼文件,如果代碼沒有錯誤,則會生成一個或多個位元組碼文件。
在有位元組碼文件的情況下,確保本機有JRE,已經配置環境變數的情況下,打開DOS窗口,輸入命令 java 類名 來運行java程序
F. 怎麼啟動java的運行環境
沒有任何IDE的話,就使用windows或者linux的命令行進行吧。
不管你用任何方式啟動java環境,首要任務是要設置classpath。
java和其他語言有點不一樣,是需要先編譯成claa文件才能執行的,所以classpath不設置好,後續事情都是扯淡。
配置方法很簡單,在系統環境中classpath後面追加就行了。
當然也可以不固定配置在執行cmd行的時候
直接使用javac -classpath進行編譯 然後java -cp進行執行
如果使用IDE,則需要在環境變數中再追加一個JAVAHOME變數。
路徑設置到你jdk的bin下面。
G. java怎麼逐句運行
生成class文件可以在命令控制台下用java文件名進行運行。
1、去網上下載jdk(jdk是一個編譯器就是解釋執行java代碼的)。
2、配置path和classpath的環境變數。去我的電腦屬性高級裡面的系統變數那配置你的path和classpath的環境變數。
3.測試。打開dos界面輸入javac按enter如果出現很多的英文就說明你的環境變數配置好了。到了這一步也就說明你的java環境弄好了。
4、編寫一個簡單的java程序編譯執行看看能不能用。做完這些就可以了。
H. 如何運行JAVA
第一步:下載並安裝JDK 6.0,安裝路勁為: C:\java\jdk1.6 .
第二步:對「我的電腦」按右鍵,選「屬性」,在「系統屬性」窗口中選「高級」標簽,再按「環境變數」按鈕,彈出一個「環境變數」的窗口,在系統變數中新建一個變數,變數名為「JAVA_HOME「,變數值為"C:\java\jdk1.6";如果存在"PATH"變數名,按編輯,在變數值最前面輸入"C:\java\jdk1.6\bin;".(注意以分號結尾,沒有引號.如果沒有"PATH",點擊新建一個"PATH"變數名,變數值一樣).
第三步:單擊Windows xp的「開始」->「運行」,在彈出的運行窗口中輸入cmd,按回車,打開一個命令行窗口,輸入javac,將會看見一系列javac常用參數選項. 恭喜你java環境安裝成功了.
第四步:開始編程(注意先雙擊打開"我的電腦",在"工具" ->"文件夾選項" -> 點擊"查看"選項 ->在"高級設置"中找到"隱藏已知文件類型的擴展名"前面的小勾去掉)。在C盤的根目錄中新建一個子目錄,名為"JavaTest」,以作為存放 Java源代碼的地方。在JavaTest文件夾中,新建文本文檔, 把「新建 文本文檔.txt」改為"HelloWorld.java"。用記事本打開"HelloWorld.java", 輸入:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
System.out.println("恭喜你成功運行了第一個java應用程序!");
}
}
注意源文件名必須與類名相同,且類修飾符為public,文件名後綴為".java".保存文件.
第五步:在命令行窗口中輸入 cd C:\JavaTest,將當前路徑轉入JavaTest目錄中。然後,輸入 javac HelloWorld.java,JDK就在JavaTest文件夾中編譯生成一個HelloWorld.class的類文件。
第六步:在命令行窗口中輸入 java HelloWorld,(注意沒有.class後綴)屏幕出現了
Hello world!
恭喜你成功運行了第一個java應用程序!
表示成功了,也就順利地編譯及運行了第一個Java應用程序。
I. 怎麼運行java程序
比如說保存為"D:\java\test.java",然後轉換目錄到那裡"cd
D:\java",編譯這個.java文件"javac
test.java"這個javac的命令一定要記住,這是jdk裡面最為常用的之一,是個java的編譯器,具體參數你自己研究吧,很多,配合使用會得到意想不到的結果。這時候應該在"D:\java\"目錄下面生成了一個test.class文件,這個就是一個二進制文件,就像windows下面常見的exe文件一樣,只不過這個二進制文件是java虛擬機的(具體java的運行機制書上都會講,自己研究吧)。這樣就可以運行了,"java
test",java是jdk的另一個最為常用的命令,啟動java虛擬機,後面的參數書你的程序編譯出來的.class文件,但是千萬別再後面加上".class",java命令也還是有很多的參數,還是自己看吧
J. java文件是怎麼執行的
首先:使用javac命令把.java文件編譯成.class文件(位元組碼文件)
然後:JVM(java虛擬機)裝載.class文件並翻譯成機器碼後運行java程序;
共同學習-----請參考:
我們手工執行java程序是這樣的:
1 在記事本中或者是UE的文本編輯器中,寫好源程序;
2 使用javac命令把源程序編譯成.class文件;
編譯後的.class(類位元組碼)文件中會包含以下內容:
ConstantPool:符號表;
FieldInfo:類中的成員變數信息;
MethodInfo:類中的方法描述;
Attribute:可選的附加節點。
FieldInfo節點包含成員變數的名稱,諸如public,private,static等的標志。ConstantValue屬性用來存儲靜態的不變的成員變數的值。Deprecated和Synthetic被用來標記一個成員變數是不被推薦的或由編譯器生成的。
3 有了.class文件,我們執行 java 解釋命令就可以運行java程序了。
現在我們主要討論一下,當執行 java這個命令後,會發生什麼事情呢?
首先,JVM裝載.class,也就是類裝載器裝載類位元組碼。一個類裝載器本身也是一個java類,所以,類裝載器自身也需要被另外一個類裝載器裝載,這就出現了類似先有蛋,還是先有雞的問題。但JAVA中的類裝載器的這個問題卻很容易解決。JAVA的虛擬機(JVM)中內嵌了一個稱為Bootstrap類裝載器,它是用特定於操作系統的本地代碼實現的,屬於JAVA虛擬機的內核,Bootstrap類不用專門的類裝載器去進行裝載。Bootstrap類負責載入JAVA核心包中的類(即rt.jar文件中的類),這些類的Class.getClassLoader()方法返回值為null,即表示是Bootstrap類裝載器。JAVA核心包中有另外兩個類裝載器:ExtClassLoader和AppClassLoader,它們都是用JAVA語言編寫的JAVA類,其中ExtClassLoader類裝載負責載入存放在<JAVA_HOME>/jre/lib/ext目錄下的jar包中的類,AppClassLoader負責載入應用程序的啟動執行類,即當使用java命令去啟動執行一個類時,JAVA虛擬機使用AppClassLoader載入這個類。在編譯和運行JAVA程序時,都會通過ExtClassLoader類裝載器去<JAVA_HOME>/jre/lib/ext目錄下的JAR包中搜索要載入的類,所以,如果將包含例如Servlet API的jar包或者是javamail.jar包復制到該目錄下,在編譯Servlet或JavaMail程序時,就不必在CLASSPATH環境變數中增加包含Servlet API的jar包或者是javamail.jar包文件。
以上,就是一個JAVA程序執行的大致過程。