顯示具有 Servlet 標籤的文章。 顯示所有文章
顯示具有 Servlet 標籤的文章。 顯示所有文章

2022年10月31日 星期一

Spring Boot web 專案整合 Servlet 使用 Java class


本文簡單介紹一下,在spring boot 中如何使用Servlet。

本文使用版本:
spring boot 2.7.5
java 11
window 11
IntelliJ IDEA
Maven

一、建立 Spring Boot web 來測試
參考本文:



二、pom.xml  的 dependencies 加入 測試類啟動器

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

三、建立 TestServlet
src\main\java\ (專案package)
路徑如圖1:




四、程式內容
本文程式使用簡單寫法。
package com.example.demo.servlet;

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


	public class TestServlet extends HttpServlet {

		@Override
		protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			super.doGet(req, resp);
			System.out.println(".. test servlet.");
		}
	}



五、加入config類
圖2

package com.example.demo.config;

import com.example.demo.servlet.TestServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ServletConfig {
    @Bean
    public ServletRegistrationBean getServletRegistrationBean(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new TestServlet());
        bean.addUrlMappings("/test2");
        return bean;
    }
}



六、啟動 Application
圖3

七、測試 http://localhost:8080/test
圖4
 


本專案下載:























用LINE傳送分享








其它文章

Spring Boot web 專案整合 Servlet 使用 WebServlet Annotation


本文簡單介紹一下,在spring boot 中如何使用Servlet。

本文使用版本:
spring boot 2.7.5
java 11
window 11
IntelliJ IDEA
Maven

一、建立 Spring Boot web 來測試
參考本文:
Spring Boot web 專案 RestController Annotation



二、pom.xml  的 dependencies 加入 測試類啟動器

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

三、建立 TestServlet
src\main\java\ (專案package)
路徑如圖1:



四、程式內容
本文程式使用簡單寫法。


package com.example.demo.servlet;

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

	@WebServlet(name="TestServlet",urlPatterns = "/test")
	public class TestServlet extends HttpServlet {

		@Override
		protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			super.doGet(req, resp);
			System.out.println(".. test servlet.");
		}
	}




註: 重點
1、 繼承 extends HttpServlet
2、 覆寫 Override doGet
3、 設定 @WebServlet 
圖2



五、main 主程試加入  @ServletComponentScan
圖3


六、啟動 Application
圖4

七、測試 http://localhost:8080/test
圖5
 


本專案下載:














用LINE傳送分享








其它文章

2015年4月13日 星期一

JSP Servlet 專案 手動建立


JSP Servlet 專案

一、進入tomcat資料夾的webapps
路徑: C:\apache-tomcat-7.0.54\webapps
圖1

二、建立專案資料夾
資料夾名稱:TestWebServlet
圖2

三、進入TestWebServlet專案資料夾
建立 WEB-INF 資料夾
圖3

四、進入WEB-INF專案資料夾
建立 classes 資料夾 及 web.xml
圖4 web.xml的內容往下看會說明


五、classes 放入建立.java檔
檔名TestWebServlet.java
圖5
程式內容:
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestWebServlet extends HttpServlet {
 private static final long serialVersionUID = -9221512797741461336L;

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
  try {
   String carname = request.getParameter("msg");
   ServletContext sc = getServletContext();
   if (carname.length() != 0) {
    sc.getRequestDispatcher("/thanks.html").forward(request, response);
   } else {
    sc.getRequestDispatcher("/error.html").forward(request, response);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}



六、產生.class檔
開啟cmd(命令提示字元)

進入TestWebServlet.java 的資料夾
cd C:\apache-tomcat-7.0.54\webapps\TestWebServlet\WEB-INF\classes

javac -classpath C:\apache-tomcat-7.0.54\lib\servlet-api.jar -d C:\apache-tomcat-7.0.54\webapps\TestWebServlet\WEB-INF\classes TestWebServlet.java
說明:
C:\apache-tomcat-7.0.54\ 是tomcat的資料夾
lib\servlet-api.jar 是servlet api jar
-d C:\apache-tomcat-7.0.54\webapps\TestWebServlet\WEB-INF\classes 是編譯到此資料夾
TestWebServlet.java  要編譯的程式
圖6-1 指令

圖6-2 .class檔

七、設定web.xml
圖7

內容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>TestWebServlet</display-name>
  <welcome-file-list>
    <welcome-file>testWebIndex.html</welcome-file>
  </welcome-file-list>
  
   <servlet>
      <servlet-name>testWebServlet</servlet-name>
      <servlet-class>TestWebServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>testWebServlet</servlet-name>
        <url-pattern>/testWebServlet</url-pattern>
    </servlet-mapping>

</web-app>



八、建立html檔
進入TestWebServlet專案資料夾
圖8 建立三個html檔
testWebIndex.html
error.html
thanks.html


九、建立testWebIndex.html檔
圖9
內容:
<html>
<head>
<title>Servlet範例</title>
</head>
<body>
 <center>
  <h2>
   歡迎進入Servlet範例
   <h2>
    <hr />
    <br />
    <form action="http://localhost:8081/TestWebServlet/testWebServlet"
     method="GET">
     輸入訊息<br /> <input type="text" name="msg" /> <input type="submit"
      value="Send" />
    </form>
 </center>
</body>
</html>


註:servlet 的 URL 如下所示:
http://host:port/專案名稱/ServletName?parameter
http://localhost:8081/TestWebServlet/testWebServlet

十、建立thanks.html檔
圖10

內容:
<html>
<head>
<title>歡迎</title>
</head>
<body>
 <center>
  <h2>
   歡迎
   <h2>
    Thanks<br/>
 </center>
</body>
</html>


十一、建立error.html檔
圖11

內容:
<html>
<head>
<title>資訊</title>
</head>
<body>
 <center>
  <h2>
   資訊
   <h2>
    你沒有輸入任何資訊<br />
 </center>
</body>
</html>



十二、啟tomcat 測試
圖12 啟tomcat

圖13 啟tomcat成功

圖14 通常 servlet 的 URL 如下所示:
http://host:port/專案名稱/ServletName?parameter
例:http://localhost:8080/TestWebServlet/
輸入url: http://localhost:8080/TestWebServlet/

圖15 輸入訊息框 111

圖16 進入 有輸入資料的網頁

圖17 再來不輸入訊息框

圖18 進入 沒有輸入資料的網頁
























其它文章

2014年12月8日 星期一

自動登入簡單範例 Use servlet example

一、建立基本專案參考:
Java建立servlet hello world example (一)

專案名稱:CookieServlet

二、首頁 index.html:
程式
<!DOCTYPE>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>CookieServlet</title>
  </head>
  <body>
    <h1>CookieServlet</h1>
    <table>
      <tr>
        <td colspan="2" style="font-weight:bold;">測試自動登入頁:</td>      
      </tr>
      <tr>
        <td><a href="login.view">登入頁</a></td>
      </tr>
    </table>
  </body>
</html>

三、登入頁 login.html:
程式

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <title>自動登入測試</title>
    </head>
    <body>
        <form action="login.do" method="post">
            帳號:<input type="text" name="user"><br>
            密碼:<input type="password" name="password"><br>
            自動登入:<input type="checkbox" name="login" value="auto"><br>
            <input type="submit" value="送出">
        </form>
        <div>測試 帳號:levin 密碼:123456</div>
    </body>
</html>

三、後端接收資料程式
1、登入程式
登入送出,後端接收資料程式,並判斷是否有設定自動登入。
如有勾選自動登入,將資料存入Cookie裡。

新增 LoginServlet.java :
程式
package com.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
 private String AUTO_USER_KEY = "AUTO_USER_KEY";
 private String TEST_USER = "levin";
 private String TEST_PWD = "123456";

 @Override
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String user = request.getParameter("user");
  String passwd = request.getParameter("password");
  if (TEST_USER.equals(user) && TEST_PWD.equals(passwd)) {
   String login = request.getParameter("login");
   if ("auto".equals(login)) {
    Cookie cookie = new Cookie(AUTO_USER_KEY, TEST_USER + "||" + TEST_PWD);
    cookie.setMaxAge(7 * 24 * 60 * 60);
    response.addCookie(cookie);
   }
   request.setAttribute("user", user);
   request.getRequestDispatcher("user.view").forward(request, response);
  } else {
   response.sendRedirect("login.html");
  }
 }
}




2、是否需要自動登入
取出Cookie後,判斷是否有符合的帳號及密碼

新增程式 LoginCookieServlet.java :
程式
package com.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginCookieServlet extends HttpServlet {

 private String AUTO_USER_KEY = "AUTO_USER_KEY";
 private String TEST_USER = "levin";
 private String TEST_PWD = "123456";

 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  Cookie[] cookies = request.getCookies();
  if (cookies != null) {
   for (Cookie cookie : cookies) {
    if (null != cookie.getName() && null != cookie.getValue()) {
     String name = cookie.getName();
     String value = cookie.getValue();
     if (AUTO_USER_KEY.equals(name) && (TEST_USER + "||"+TEST_PWD).equals(value)) {
      // 有取得user
      request.setAttribute("user", value.toString().split("||")[0]);
      request.getRequestDispatcher("/user.view").forward(request, response);
      return;
     }
    }
   }
  }
  response.sendRedirect("login.html");
 }

 @Override
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  processRequest(request, response);
 }

 @Override
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  processRequest(request, response);
 }
}



3、登入成功顯示程式
新增程式 UserServlet.java:
程式
package com.test;

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 UserServlet extends HttpServlet {
 private String AUTO_USER_KEY = "AUTO_USER_KEY";
 private String TEST_USER = "levin";
 private String TEST_PWD = "123456";

 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html;charset=UTF-8");

  if (request.getAttribute("user") == null) {
   response.sendRedirect("login.view");
  } else {
   PrintWriter out = response.getWriter();
   out.println("");
   out.println("");
   out.println("Servlet User Login");
   out.println("");
   out.println("");
   out.println("

" + request.getAttribute("user") + "已登入

"); out.println("

回首頁

"); out.println(""); out.println(""); out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }


4、設定web.xml :

LoginServlet mapping : /login.do
LoginCookieServlet  mapping : /login.view
UserServlet  mapping : /user.view

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>CookieServlet</display-name>


  <servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.test.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.test.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/user.view</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>LoginCookieServlet</servlet-name>
<servlet-class>com.test.LoginCookieServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginCookieServlet</servlet-name>
<url-pattern>/login.view</url-pattern>
</servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

5、使用到相關的lib
Java jdk 1.6
Apache Tomcat 6.0
圖1


6、測試:
http://localhost:8081/CookieServlet/index.html
圖1 首頁 -> 按下 登入頁


圖2 登入頁


圖3 進入登入 -> 輸入帳號及密碼 -> 送出(第一次先不勾選自動登入)


圖4 登入成功頁 -> 回首頁 -> 再依 圖1~ 圖3


圖5  進入登入 -> 輸入帳號及密碼 -> 送出 (選自動登入)

圖6 登入成功頁 -> 回首頁

圖7 直接 登入成功頁



設定有效Cookie時間,這行:

cookie.setMaxAge(7 * 24 * 60 * 60);

此為 設定7天有效。


結束,
感謝~


















其它文章

Java建立servlet hello world example (二) 匯出war檔執行

Java建立servlet hello world example (二)  匯出war檔執行

上一頁:
Java建立servlet hello world example (一)

本例專案名稱: TestServlet
如無此專案請參考: 上一頁


圖1 - 在專案上按右鍵 -> Export


圖2 - Web -> WAR file -> Next


圖3
基本預定設定
Web project : TestServlet
選擇: tomcat ,依你本機的tomcat。
 ->
 選擇Browse..


圖4 選擇tomcat 的webapps資料夾。
-> 檔名: TestServlet.war


圖5 基本設定 完成 -> Finish



圖6 啟動 Tomcat -> startup.bat



圖7 執行 Tomcat


圖8 執行 網頁 localhost:8081/TestServlet/helloWorldServlet


沒有裝Tomcat參考:
[Apache_Tomcat] Tomcat 安裝教學


Eclipse 設定 Tomcat 參考:

[Apache_Tomcat] Eclipse 裡Tomcat 安裝教學

Eclipse 設定非內建Tomcat

















其它文章

2014年8月14日 星期四

Java建立Servlet Hello World Example

Java建立Servlet Hello World Example
使用相關工具:
作業系統:WIN 7
開發工具:eclipse win32 Version: Juno Service Release 2
JDK: jdk 1.6.0_25
Server: apache-tomcat-6.0.26

本例專案名稱: TestServlet
Servlet名稱:HelloWorldServlet.java

一、建立web專案
1、開啟eclipce -> File ->New ->Dynamic Web Project
如圖:


二、輸入及選擇基本資料
    1、輸入Project name : TestServlet
    2、選擇使用何種server來啟動:Apache Tomcat v6.0
    3、Next
如圖:


三、選擇專案building位置 ,使用預設定
    1、Next
如圖:

四、設定root名稱及web資料夾,使用預設定
1、Finish
    注意:Generate web.xml deployment descriptor
     這是否要建立web.xml
     如果沒有勾選測不會產出web.xml ,到時後你要自己再建立。
 因為web.xml是必須的web專案初值及相關設定檔,沒有web.xml就不用玩了。
 
如圖:


五、專案初始資料檔
   
如圖:


六、建立Servlet
    1、TestServlet專案->New->Servlet
如圖:


七、Servlet基本資料之一
如圖:預設資料

1、輸入 Java Package : com.test
2、輸入 Class name : HelloWorldServlet
3、Next
如圖:


八、Servlet基本資料之二
    1、Name (預設) : HelloWorldServlet
    2、點選 URL mappings -> /HelloWorldServlet -> 按Edit
如圖:


    3、改URL mappings : 改為你想要的URL名稱,這是網頁對應程式的名稱
  本例小改一下,原大寫H改為小寫h
如圖:

    4、ok
    5、Finish
如圖:


八、Servlet基本資料之三
    1、選擇初始方法: 本例 預設資料
本例主要此doGet方法 一定要有。如果沒選就到時後再自己寫入。
2、Finish
如圖:


九、產出初始Servlet
如圖:

十、修改初始資料web.xml
刪除這二行 ,可刪也可不刪。 這裡沒用到就刪了吧。
 <description></description>
 <display-name>HelloWorldServlet</display-name>
如圖:
1、修改web.xml

改為:
<servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>com.test.HelloWorldServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/helloWorldServlet</url-pattern>
  </servlet-mapping>

如圖:


十一、修改初始資料 HelloWorldServlet.java
如圖:


1、修改HelloWorldServlet的doGet

response.setContentType("text/html");
response.getWriter().println("<h1>Hello World.</h1>");

如圖:


十二、啟動server 測試專案

1、專案右鍵-> Run As -> Run on Server
如圖:


2、選擇server -> Tomcat -> Finish
如圖:


3、啟動成功
如圖:

4、啟動成功後的畫面,(http://localhost:8081/)
如圖:


5、進入TestServlet的畫面(http://localhost:8081/TestServlet/)
如圖:



本篇相關文
[JAVA_IDE] Eclipse Downloads 

如果沒有裝Tomcat:
參考:
[Apache_Tomcat] Tomcat 安裝教學

[Apache_Tomcat] Eclipse 裡Tomcat 安裝教學




















其它文章

標籤

Oracle (150) Oracle DB (144) Oracle_DB (143) Oracle SQL (135) JAVA (84) css-基本類 (65) MySQL (59) CSS Selector (58) jQuery (49) JavaScript-基本類 (39) Spring Boot (38) JavaScript (37) JavaScript HTML DOM (37) JavaScript-HTML_DOM (36) CSS3 (30) JAVA-基本類 (28) jQuery UI (27) Apache (23) Oracle GROUP BY (20) datepicker (20) Android (18) Oracle Date (17) c (17) JAVA-lang套件 (16) Linux (16) Oracle Sub Query (16) Spring-基本類 (16) jQuery-基本類 (16) MySQL-進階系列教學 (15) Android基本類 (14) Grails (14) Oracle join (14) SQLite (13) Spring (13) WIN7-基本類 (13) grails-基本類 (13) linux cent os (13) CKEditor (12) JAVA-流程控制類 (12) JAVA_Spring (12) PHP (11) Spring MVC (11) MySQL-基本系列教學 (10) Notepad (10) Notepad++ (10) SQLite for java (10) Windows (10) c/c++ (10) eclipse (9) jQuery-Selector (9) sqldeveloper (9) DB_Toad (8) JAVA_IDE_Eclipse (8) JavaScript-String類 (8) MySQL DB Toad (8) MySQL-DATE相關 (8) MySQL-函式相關 (8) Spring Bean (8) Android Studio (7) HTML5 (7) Hibernate (7) JAVA-OCWCD (7) JavaScript-陣列類 (7) Docker (6) JAVA-程式分享 (6) JAVA.util套件 (6) JavaScript-數學類 (6) MinGw (6) MySQL-其它類 (6) Servlet (6) centos (6) Apache_Tomcat (5) Apache套件_POI (5) CSS (5) JavaScript-Date物件 (5) JavaScript-其它類 (5) PostgreSQL (5) httpd (5) log4j (5) 基本資訊 (5) 開發工具 (5) CSS Properties (4) Dev-C++ (4) IntelliJ IDEA (4) Oracle DDL (4) Sublime (4) TortoiseSVN (4) apache_Maven (4) Android NDK (3) Eclipse IDE for C/C++ (3) Hibernate-基本類 (3) JAVA-問題 (3) JAVA-綀習分享 (3) JVM (3) Linux 指令 (3) Proxy Server (3) Spring Mobile (3) Spring web (3) Squid (3) VirtualBox (3) maven (3) zk (3) 生活其它 (3) Bootstrap (2) Filter (2) JAVA_IO (2) JAVA_其它_itext套件 (2) JBoss-問題 (2) JSP (2) Jboss (2) Listener (2) MySQL-語法快速查詢 (2) Spring AOP (2) Spring Batch (2) Spring Boot Actuator (2) Spring i18n (2) Subversive (2) Tomcat 8 (2) UML (2) WebJars (2) WinMerge (2) c++ (2) c語言綀習題 (2) jQuery Mobile (2) jQuery-事件處理 (2) jQuery-套件類 (2) putty (2) svn (2) weblogic (2) Apache_JMeter (1) Apache套件_BeanUtils (1) Apache套件_StringUtils (1) Base64 (1) Google API (1) HTML5-基本類 (1) Heap (1) JAVA 7 (1) JAVA SE 、JAVA EE、JAVA ME (1) JAVA 日期 (1) JAVA-OCJP (1) JAVA-WEB (1) JAVA_IDE (1) JAVA其它 (1) JBoss Server (1) JDK (1) JMX (1) JRE (1) Java RMI (1) Java String (1) Joda Time (1) Linux_其它 (1) MySQL教學 (1) Oracle_VirtualBox (1) SQL Server (1) SWT (1) Session (1) Stack (1) Struts 2 (1) Tool (1) ZK Studio (1) csv (1) grails-其它類 (1) jQuery-進階 (1) java mail (1) java web (1) java8 (1) jsoup (1) mockmvc (1) modules (1) tomcat (1) win10 (1) 其它類 (1) 圖片工具 (1) 模擬器 (1) 讀書分享 (1) 開發資訊 (1)

精選文章

初學 Java 的 HelloWorld 程式

撰寫一個JAVA程式 public class HelloWorld{ public static void main(String[ ] args){ System.out.println("我第一支Java程式!!"); } } ...