thinking

          one platform thousands thinking

          java需要了解的東西

          1、forward redirect的區別
          答:1.forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然后把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址。
              redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求,所以session,request參數都可以獲取。
          2.redirect  可以跨頁面訪問,而forward, 得根據上下文環境。
          3.forward是服務器內部重定向,程序收到請求后重新定向到另一個程序,客戶機并不知道;redirect則是服務器收到請求后發送一個狀態頭給客戶,客戶將再請求一次,這里多了兩次網絡通信的來往。當然forward也有缺點,就是forward的頁面的路徑如果是相對路徑就會有些問題了。
           
              forward 會將 request state , bean 等等信息帶往下一個 jsp
          redirect 是送到 client 端后再一次 request , 所以資料不被保留.
          使用 forward 你就可以用 getAttribute() 來取的前一個 jsp 所放入的 bean 等等資料

          2、jsp有哪些內置對象?作用分別是什么?
          答:JSP共有以下9種基本內置組件(可與ASP6種內部組件相對應):
           request 對象表示一個HTTP請求

             response
          對象存儲處理結果返回給用戶的響應。
             out 對象用于將內容寫入JSP頁面實例的輸出流中
             pageContext 對象描述某個JSP文檔的運行環境,此外,它還實現將控制權從當前頁面傳輸至其他頁面的方法
             session
          對象在用戶訪問一個Web站點的多個頁面時共享信息

             application 對象存儲運行文檔的環境的有關信息

             config 對象將Servlet配置數據以Servlet的初始化參數形式存儲

             page 對象表示JSP
          網頁本身
          ,更是Servlet類的實例,可以調用由Servlet類定義的任何方法
             exception
          針對錯誤網頁,未捕捉的例外
          ,只適用于JSP錯誤頁面
          3、
          jsp有哪些動作?作用分別是什么?
          :JSP共有以下7種基本動作
             jsp:include
          :在頁面被請求的時候引入一個文件。
             jsp:useBean
          它用來實例化JavaBean,或者定位一個已經存在的Bean實例,并且把它賦給一個變量名(或者id)。并給定一個具體的范圍來確定對象的生命周期。
             jsp:setProperty
          :設置JavaBean的屬性。

             jsp:getProperty
          :輸出某個JavaBean的屬性。

             jsp:forward
          :把請求轉到一個新的頁面。

             jsp:plugin
          :根據瀏覽器類型為Java插件生成OBJECTEMBED標記
            jsp:param:
          為其他標簽提供附加信息。
          4、
          JSP中動態INCLUDE與靜態INCLUDE的區別?
          答:動態INCLUDEjsp:include動作實現
             <jsp:include page="included.jsp" flush="true" />
          它總是會檢查所含文件中的變化,適合用于包含動態頁面,并且可以帶參數
            
          靜態INCLUDEinclude偽碼實現,定不會檢查所含文件的變化,適用于包含靜態頁面
             <%@ include file="included.htm" %>
          5、
          兩種跳轉方式分別是什么?有什么區別?
          答:有兩種,分別為:
            <jsp:include page="included.jsp" flush="true">
            <jsp:forward page= "nextpage.jsp"/>
          前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完后還會回來,相當于函數調用。并且可以帶參數.后者完全轉向新頁面,不會再回來。相當于go to 語句。


          代碼和編程
          1、寫一個Singleton出來
          Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
          一般Singleton模式通常有幾種種形式:
          第一種形式: 定義一個類,它的構造函數為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。

          public class Singleton {
              private Singleton(){}
              //在自己內部定義自己一個實例,是不是很奇怪?
              //注意這是private 只供內部調用
              private static Singleton instance = new Singleton();
              //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問  
              public static Singleton getInstance() {
              return instance;   
              }
              }

              第二種形式:

          public class Singleton {
          private static Singleton instance = null;
          public static synchronized Singleton getInstance() {
          //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     
          //使用時生成實例,提高了效率!

          if (instance==null)
          instance=new Singleton();
                  return instance;   }
          }

          其他形式:
          定義一個類,它的構造函數為private的,所有方法為static的。
          一般認為第一種形式要更加安全些

          2、Java 的通信編程,編程題(或問答),用JAVA SOCKET編程,讀服務器幾個字符,再寫入本地顯示?
          答:Server端程序:

          package test;
          import java.net.*;
          import java.io.*;

          public class Server
          {
           
          private ServerSocket ss;
           
          private Socket socket;
           
          private BufferedReader in;
           
          private PrintWriter out;
           
          public Server()
           {
            
          try
            {
             ss
          =new ServerSocket(10000);
             
          while(true)
             {
              socket 
          = ss.accept();
              String RemoteIP 
          = socket.getInetAddress().getHostAddress();
              String RemotePort 
          = ":"+socket.getLocalPort();
              System.out.println(
          "A client come in!IP:"+RemoteIP+RemotePort);
              in 
          = new BufferedReader(new

          InputStreamReader(socket.getInputStream()));
              String line 
          = in.readLine();
              System.out.println(
          "Cleint send is :" + line);
              out 
          = new PrintWriter(socket.getOutputStream(),true);
              out.println(
          "Your Message Received!");
              out.close();
              in.close();
              socket.close();
             }
            }
          catch (IOException e)
            {
             out.println(
          "wrong");
            }
           }
           
          public static void main(String[] args)
           {
            
          new Server();
           }
          };

          Client端程序:

          package test;

          import java.io.*;

          import java.net.*;

           

          public class Client

          {

          Socket socket;

          BufferedReader in;

          PrintWriter out;

          public Client()

          {

          try

          {

          System.out.println("Try to Connect to 127.0.0.1:10000");

          socket = new Socket("127.0.0.1",10000);

          System.out.println("The Server Connected!");

          System.out.println("Please enter some Character:");

          BufferedReader line = new BufferedReader(new

           

          InputStreamReader(System.in));

          out = new PrintWriter(socket.getOutputStream(),true);

          out.println(line.readLine());

          in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

          System.out.println(in.readLine());

          out.close();

          in.close();

          socket.close();

          }catch(IOException e)

          {

          out.println("Wrong");

          }

          }

          public static void main(String[] args)

          {

          new Client();

          }

          };


          3、JAVA實現一種排序,JAVA類實現序列化的方法(二種) 如在COLLECTION框架中,實現比較要實現什么樣的接口?

          :用插入法進行排序代碼如下

          package test;
          import java.util.*;
          class  InsertSort
          {
           ArrayList al;
           
          public InsertSort(int num,int mod)
           {
            al 
          = new ArrayList(num);
            Random rand 
          = new Random();
            System.out.println(
          "The ArrayList Sort Before:");
            
          for (int i=0;i<num ;i++ )
            {
             al.add(
          new Integer(Math.abs(rand.nextInt()) % mod + 1));
             System.out.println(
          "al["+i+"]="+al.get(i));
            }
           }
           
          public void SortIt()
           {
            Integer tempInt;
            
          int MaxSize=1;
            
          for(int i=1;i<al.size();i++)
            {
                 tempInt 
          = (Integer)al.remove(i);
              
          if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
              {
               al.add(MaxSize,tempInt);
               MaxSize
          ++;
               System.out.println(al.toString());
              } 
          else {
               
          for (int j=0;j<MaxSize ;j++ )
               {
                
          if

          (((Integer)al.get(j)).intValue()
          >=tempInt.intValue())
                {
                 al.add(j,tempInt);
                 MaxSize
          ++;
                 System.out.println(al.toString());
                 
          break;
                }
               }
              }
            }
            System.out.println(
          "The ArrayList Sort After:");
            
          for(int i=0;i<al.size();i++)
            {
             System.out.println(
          "al["+i+"]="+al.get(i));
            }
           }
           
          public static void main(String[] args)
           {
            InsertSort is 
          = new InsertSort(10,100);
            is.SortIt();
           }
          }

          4、編程:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。 但是要保證漢字不被截半個,如ABC”4,應該截為AB”,輸入ABCDEF”6,應該輸出為ABC”而不是ABC+漢的半個

          答:代碼如下:

          package test;

          class  SplitString
          {
           String SplitStr;
           
          int SplitByte;
           
          public SplitString(String str,int bytes)
           {
            SplitStr
          =str;
            SplitByte
          =bytes;
            System.out.println(
          "The String is:'"+SplitStr+"';SplitBytes="+SplitByte);
           }
           
          public void SplitIt()
           {
            
          int loopCount;
            

          loopCount
          =(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split

          Byte
          +1);
            System.out.println(
          "Will Split into "+loopCount);
            
          for (int i=1;i<=loopCount ;i++ )
            {
             
          if (i==loopCount){
              

          System.out.println(SplitStr.substring((i
          -1)*SplitByte,SplitStr.length()));
             } 
          else {
              

          System.out.println(SplitStr.substring((i
          -1)*SplitByte,(i*SplitByte)));
             }
            }
           }
           
          public static void main(String[] args)
           {
            SplitString ss 
          = new SplitString("test中dd文dsaf中男大3443n中國43中國人

          0ewldfls
          =103",4);
            ss.SplitIt();
           }
          }

          5、可能會讓你寫一段JdbcOracle的程序,并實現數據查詢.

          :程序如下:

          package hello.ant;
          import java.sql.*;
          public class  jdbc
          {
           String dbUrl
          ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
           String theUser
          ="admin";
           String thePw
          ="manager";
           Connection c
          =null;
           Statement conn;
           ResultSet rs
          =null;
           
          public jdbc()
           {
            
          try{
              Class.forName(
          "oracle.jdbc.driver.OracleDriver").newInstance();
                    c 
          = DriverManager.getConnection(dbUrl,theUser,thePw);
              conn
          =c.createStatement();
            }
          catch(Exception e){
             e.printStackTrace();
            }
           }
           
          public boolean executeUpdate(String sql)
           {
             
          try
             {
               conn.executeUpdate(sql);
               
          return true;
             }
             
          catch (SQLException e)
             {
               e.printStackTrace();
               
          return false;
             }
           }
           
          public ResultSet executeQuery(String sql)
           {
             rs
          =null;
             
          try
             {
               rs
          =conn.executeQuery(sql);
             }
             
          catch (SQLException e)
             {
               e.printStackTrace();
             }
             
          return rs;
           }
           
          public void close()
           {
             
          try
             {
               conn.close();
               c.close();
             }
             
          catch (Exception e)
             {
               e.printStackTrace();
             }
           }
           
          public static void main(String[] args)
           {
            ResultSet rs;
            jdbc conn 
          = new jdbc();
            rs
          =conn.executeQuery("select * from test");
            
          try{
            
          while (rs.next())
            {
             System.out.println(rs.getString(
          "id"));
             System.out.println(rs.getString(
          "name"));
            }
            }
          catch(Exception e)
            {
             e.printStackTrace();
            }
           }
          }

          6、jdom解析xml文件時如何解決中文問題?如何解析?

          :看如下代碼,用編碼方式加以解決

          package test;
          import java.io.*;
          public class DOMTest
          {
           
          private String inFile = "c:\\people.xml";
           
          private String outFile = "c:\\people.xml"
           
          public static void main(String args[])
           {
               
          new DOMTest();
              }
           
          public DOMTest()
           {
            
          try
               { 
                javax.xml.parsers.DocumentBuilder builder 
          =
                 

          javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
                org.w3c.dom.Document doc 
          = builder.newDocument();
                org.w3c.dom.Element root 
          = doc.createElement("老師");
                org.w3c.dom.Element wang 
          = doc.createElement("");
             org.w3c.dom.Element liu 
          = doc.createElement("");
                wang.appendChild(doc.createTextNode(
          "我是王老師"));
                root.appendChild(wang);
                doc.appendChild(root);
                javax.xml.transform.Transformer transformer 
          =
                 javax.xml.transform.TransformerFactory.newInstance().newTransformer();
                transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, 
          "gb2312");
                transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, 
          "yes");  

             
                transformer.transform(
          new javax.xml.transform.dom.DOMSource(doc),
                      
          new

          javax.xml.transform.stream.StreamResult(outFile));
               }
               
          catch (Exception e)
               {
                System.out.println (e.getMessage());
               }
              }
          }

          7、將一個鍵盤輸入的數字轉化成中文輸出

          (例如:輸入:1234567     輸出:一百二拾三萬四千五百六拾七)
          用java語言實現,,請編一段程序實現!
           

          public class Reader {
            
          private String strNum;
            
          private String strNumChFormat;
            
          private String strNumTemp;
            
          private int intNumLen;
            
          private String strBegin;
            
          public Reader(String strNum) {
              
          this.strNum = strNum;
            }
            
          public boolean check(String strNum) {
              
          boolean valid = false;
              
              
          if (strNum.substring(0,1).equals("0")){
               
          this.strNum = strNum.substring(1);
              }
              
          try {
                
          new Double(strNum);
                valid 
          = true;
              }
              
          catch (NumberFormatException ex) {
                System.out.println(
          "Bad number format!");
              }
              
          return valid;
            }
            
          public void init() {
              strNumChFormat 
          = "";
              intNumLen 
          = strNum.length();
              strNumTemp 
          = strNum;
              strNumTemp 
          = strNumTemp.replace('1''');
              strNumTemp 
          = strNumTemp.replace('2''');
              strNumTemp 
          = strNumTemp.replace('3''');
              strNumTemp 
          = strNumTemp.replace('4''');
              strNumTemp 
          = strNumTemp.replace('5''');
              strNumTemp 
          = strNumTemp.replace('6''');
              strNumTemp 
          = strNumTemp.replace('7''');
              strNumTemp 
          = strNumTemp.replace('8''');
              strNumTemp 
          = strNumTemp.replace('9''');
              strNumTemp 
          = strNumTemp.replace('0''');
              strNumTemp 
          = strNumTemp.replace('.''');
              strBegin 
          = strNumTemp.substring(01);
            }
            
          public String readNum() {
              
          if (check(strNum)) {
                init();
                
          try {
                  
          for (int i = 1, j = 1, k = 1; i < intNumLen; i++) {
                    
          if (strNumTemp.charAt(intNumLen - 1== '' && i == 1) {
                      strNumChFormat 
          = "";
                    }
                    
          else if (strNumTemp.charAt(intNumLen - i) == '' && j == 1) {
                      strNumChFormat 
          = "" + strNumChFormat;
                    }
                    
          else if (strNumTemp.charAt(intNumLen - i) == '') {
                      j 
          = 1;
                      k 
          = 1;
                      strNumChFormat 
          = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
                      
          continue;
                    }
                    
          else {
                      strNumChFormat 
          = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
                    }
                    
          if (strNumTemp.charAt(intNumLen - i - 1!= '' &&
                        strNumTemp.charAt(intNumLen 
          - i - 1!= '') {
                      
          if (j == 1 && i < intNumLen) {
                        strNumChFormat 
          = '' + strNumChFormat;
                      }
                      
          else if (j == 2 && i < intNumLen) {
                        strNumChFormat 
          = '' + strNumChFormat;
                      }
                      
          else if (j == 3 && i < intNumLen) {
                        strNumChFormat 
          = '' + strNumChFormat;
                      }
                    }
                    
          if (j == 4 && i < intNumLen) {
                      j 
          = 0;
                    }
                    
          if (k == 4 && i < intNumLen) {
                      strNumChFormat 
          = '' + strNumChFormat;
                    }
                    
          else if (k == 8 && i < intNumLen) {
                      k 
          = 0;
                      strNumChFormat 
          = '' + strNumChFormat;
                    }
                    j
          ++;
                    k
          ++;
                  }
                  
          while (strNumChFormat.indexOf(""!= -1) {
                    strNumChFormat 
          = strNumChFormat.replaceAll(""" ");
                  }
                  
          if (strNumChFormat.substring(02== "一拾") {
                    strNumChFormat 
          = strNumChFormat.substring(1, strNumChFormat.length());
                  }
                  
          if (strNumChFormat.indexOf("">= 0) {
                    String rebegin 
          = strNumChFormat.substring(0,
                        strNumChFormat.indexOf(
          ""));
                    String relast 
          = strNumChFormat.substring(strNumChFormat.indexOf(""),
                        strNumChFormat.length());
                    
          for (int i = 1; i <= relast.length(); i++) {
                      relast 
          = relast.replaceAll("""");
                      relast 
          = relast.replaceAll("""");
                      relast 
          = relast.replaceAll("""");
                      relast 
          = relast.replaceAll("""");
                      relast 
          = relast.replaceAll("""");
                    }
                    strNumChFormat 
          = rebegin + relast;
                  }
                }
                
          catch (ArrayIndexOutOfBoundsException ex) {
                  ex.printStackTrace();
                }
                
          catch (Exception ex) {
                  ex.printStackTrace();
                }
                
          int off = strNumChFormat.indexOf("");
                strNumChFormat 
          = strBegin + strNumChFormat.substring(0);
              }
              
          else {
                strNumChFormat 
          = "";
              }
              
          return strNumChFormat;
            }
            
          public static void main(String args[]) {
              
          try {
                String number 
          = args[0].toString();
                System.out.println(
          "The number is: " + number);
                Reader reader 
          = new Reader(number);
                System.out.println(
          "Output String: " + reader.readNum());
              }
              
          catch (Exception ex) {
                System.out.println(
          "Please input like that: javac Reader <number>");
              }
            }
          }

          8、如何校驗數字型?

          var re=/^\d{1,8}$|\.\d{1,2}$/;
          var str
          =document.form1.all(i).value;
          var r
          =str.match(re);
          if (r==null)
          {
             sign
          =-4;
             
          break;
          }
          else{
             document.form1.all(i).value
          =parseFloat(str);
          }

          posted on 2009-03-02 14:32 lau 閱讀(241) 評論(0)  編輯  收藏 所屬分類: J2SE

          主站蜘蛛池模板: 云浮市| 普宁市| 桐柏县| 永昌县| 宜都市| 密云县| 西贡区| 青海省| 郯城县| 霍州市| 台安县| 灵寿县| 锦州市| 彰化市| 秭归县| 额尔古纳市| 祁东县| 涿州市| 越西县| 客服| 江北区| 满城县| 池州市| 南川市| 清水河县| 曲靖市| 宁夏| 岳阳县| 隆尧县| 保定市| 武平县| 望城县| 沐川县| 嵩明县| 贞丰县| 美姑县| 漯河市| 潍坊市| 新巴尔虎左旗| 贵溪市| 呼伦贝尔市|