路徑問題,jquery小常識,ajax傳值(表單),常見數據庫使用

這兩天做項目遇到的一些問題的總結:
一,各種路徑問題
JSP,Servlet,文件,web,相對,絕對。。。。醉了
jsp中獲得文件路徑
1、根目錄所對應的絕對路徑:request.getRequestURI();

2、文件的絕對路徑:application.getRealPath(request.getRequestURI())

3、當前web應用的絕對路徑:application.getRealPath(“/”)

4、取得請求文件的上層目錄:

newFile(application.getRealPath(request.getRequestURI())).getParent()

servlet中獲得文件路徑
1、根目錄所對應的絕對路徑:request.getServletPath()

2、文件的絕對路徑:

request.getSession().getServletContext().getRealPath(request.getRequestURI())

3、當前web應用的絕對路徑:servletConfig.getServletContext().getRealPath(“/”)

注:ServletContext對象獲得幾種方式:

javax.servlet.http.HttpSession.getServletContext()

javax.servlet.jsp.PageContext.getServletContext()

javax.servlet.ServletConfig.getServletContext()

java中獲得文件路徑
1、Thread.currentThread().getContextClassLoader().getResource(“”).toURI().getPath()

2、
ClassLoader 提供了兩個方法用於從裝載的類路徑中取得資源:
public URL getResource (String name);
public InputStream getResourceAsStream (String name);

這裏name是資源的類路徑,它是相對與“/”根路徑下的位置。getResource得到的是一個URL對象來定位資源,而getResourceAsStream取得該資源輸入流的引用保證程序可以從正確的位置抽取數據。
但是真正使用的不是ClassLoader的這兩個方法,而是Class的 getResource和getResourceAsStream方法,因爲Class對象可以從你的類得到(如YourClass.class或 YourClass.getClass()),而ClassLoader則需要再調用一次YourClass.getClassLoader()方法,不過根據JDK文檔的說法,Class對象的這兩個方法其實是“委託”(delegate)給裝載它的ClassLoader來做的,所以只需要使用 Class對象的這兩個方法就可以了。

下面是一些得到classpath和當前類的絕對路徑的一些方法。你可能需要使用其中的一些方法來得到你需要的資源的絕對路徑。

1.this.getClass().getResource(”“)
得到的是當前類class文件的URI目錄。不包括自己!
如:file:/D:/workspace/jbpmtest3/bin/com/test/

2.this.getClass().getResource(”/”)
得到的是當前的classpath的絕對URI路徑 。
如:file:/D:/workspace/jbpmtest3/bin/

3.this.getClass() .getClassLoader().getResource(”“)
得到的也是當前ClassPath的絕對URI路徑 。
如:file:/D:/workspace/jbpmtest3/bin/

4.ClassLoader.getSystemResource(”“)
得到的也是當前ClassPath的絕對URI路徑 。
如:file:/D:/workspace/jbpmtest3/bin/

5.Thread.currentThread().getContextClassLoader ().getResource(”“)
得到的也是當前ClassPath的絕對URI路徑 。
如:file:/D:/workspace/jbpmtest3/bin/

6.ServletActionContext.getServletContext().getRealPath(“/”)
Web應用程序 中,得到Web應用程序的根目錄的絕對路徑。這樣,我們只需要提供相對於Web應用程序根目錄的路徑,就可以構建出定位資源的絕對路徑。
如:file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebProject

總之,我自己使用會選擇如下:
path 不以’/’開頭時默認是從此類所在的包下取資源,以’/’開頭則是從ClassPath根下獲取。
當前類的加載路徑使用相對路徑來獲取資源地址
MyClass.class.getResource(FILE_NAME).getPath()
使用絕對運行時路徑
MyClass.class.getResource(File.separator + FILE_NAME).getPath();

二.表單使用jquery+ajax提交
要想使用form的submit還要下載Jquery.form插件
我用的是普通的click 方法

<input id="submit" type="button" value="Submit" onclick="checkAndSub();"  >
                function checkAndSub(){
                         var flag=0;
                         if($("#driver").val()==""){
                          // alert("請輸入driver!");
                            $('#span_driver').text("請輸入driver!");
                             flag=1;
                         }
                         if($("#url").val()==""){
                          // alert("請輸入url!");
                           $('#span_url').text("請輸入url!");
                           flag=1;
                         }
                         if($("#user").val()==""){
                          // alert("請輸入user!");
                           $('#span_user').text("請輸入user!");
                           flag=1;
                         }
                         if($.trim($("#password").val())==""){
                            //alert("請輸入password!");
                            $('#span_password').text("請輸入password!");
                            flag=1;
                         }
                         if($.trim($("#tableName").val())==""){
                            //alert("請輸入password!");
                            $('#span_tableName').text("請輸入tableName!");
                            flag=1;
                         }
                         if(flag==1){
                           //alert("沒提交");
                         }else{
 var param                                     ="listId="+listId+"&"+$('#DBForm').serialize()+"&"+"classification="+$("select option:selected").text();
                         alert(param);
                         $("#Composition").load("fillReport.do","listId="+listId+"&"+$('#DBForm').serialize()+"&"+"classification="+$("select option:selected").text());     
                         }

使用Form提交數據
<script type ="text/javascript" src ="../js/jquery.js"></script> //必須要引用
<script type ="text/javascript" src ="../js/jquery.form.js"></script> //必須要引用

三JQuery
(1)jQuery (necessary for Bootstrap’s JavaScript plugins
(2)jquery.js和jquery.min.js的區別介紹
query2.js裏的代碼是沒有進行處理的原代碼,適合於人們閱讀與研究.
jquery.min.js裏的代碼進行過特殊的處理,如變量的名稱基本都寫成一個字母,而且格式縮進都被刪除了.
所以文件容量比較小(min),一般在網頁中調用這個文件

(3)級聯菜單,select ajax傳值重要部分

  $("#privince").change(function(){
       $.ajax({type:"post",url:"select.do",dataType:"json",
           data:{"privinceId" : $("#privince option:selected").val()},
           success:function(data){
              $("#city").html("");
              $.each(data,function(i,item){
                  $("#city").append("<option value="+item.id+">"+item.name+"</option>");
              });
           }
       });
    });

四.數據庫相關複習
JDBC:
Class.forName(DRIVER); //註冊驅動
//獲取連接字符串
Connection conn = DriverManager.getConnection(URL,NAME,PASS);
Statement s= conn.createStatement();
String query=”create table gubiao(date datatime,open float,high float,low float,close float,amount integer,money float)”;//創建數據庫屬性
s.executeUpdate(query);
s.close();
conn.close();
mysql命令行查看錶結構,字段等信息
desc 表名;
show columns from 表名;
describe 表名;
show create table 表名;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章