亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

接著琢磨之前的投票

系統 1550 0

周一

接著半拉子半死不活的投票系統,繼續孤軍奮戰于無人境界。我的PL頭兒就沒見著鬼影,大好的周一,不來上班。誰讓人牛呢。

?

    javax.servlet.ServletException: org/apache/jsp/testjsp_jsp (wrong name: org/apache/jsp/TestJSP_jsp) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:244) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
  
    

root cause

java.lang.NoClassDefFoundError: org/apache/jsp/testjsp_jsp (wrong name: org/apache/jsp/TestJSP_jsp) java.lang.ClassLoader.defineClass1(Native Method)

?這個錯誤,調了一個小時都沒用。服務器Tomcat已經被我關開瘋了。于是,我換了一下思路,開始琢磨servlet起作用的機制。

首先右鍵點我的電腦。打開屬性。然后選擇 高級 里面的 環境變量 ,在新的打開界面中的系統變量里需要設置三個屬性 “java_home” “path” “classpath”, 其中在沒安裝過 jdk 的環境下, path 屬性是本來存在的。而 java_home classpath 是不存在的。
?? ?
首先點 新建 ,然后在變量名寫上 java_home ,顧名其意該變量的含義就是 java 的安裝路徑,呵呵,然后在變量值寫入剛才安裝的路徑 “E:\Java\jdk1.6.0_02”

其次在系統變量里面找到 path ,然后點編輯, path 變量的含義就是系統在任何路徑下都可以識別。打開該變量時,會發現其 變量值 后面的文本框中已經有了內容,我們不要刪除這些內容,而是按 “End” ,定位到該文本框的末尾,如果末尾有一個分號 “;” ,就直接添加 JAVA 命令所在的路徑,如果沒有分號,則需要添加一個分號后再添加 JAVA 命令的路徑 ——java 命令的路徑是 “%java_home%\bin;%java_home%\jre\bin”( 其中 “%java_home%” 的意思為剛才設置 java_home 的值),也可以直接寫上 “E:\Java\jdk1.6.0_02”

最后再點 新建 ,然后在變量名上寫 classpath, 該變量的含義是為 java 加載類 (class or lib) 路徑,只有類在 classpath 中, java 命令才能識別,其值為 “.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar ( 要加 . 表示當前路徑 )” ,與 “%java_home%” 有相同意思。


-----------------------事實證明,貌似沒用-----------------------------------------

???1. Tomcat 的安裝目錄的 webapps 目錄,可以看到 ROOT examples, tomcat-docs 之類 Tomcat 自帶的的目錄; ?
?? ?2. webapps 目錄下新建一個目錄,起名叫 myapp ?
?? ?3.myapp 下新建一個目錄 WEB-INF ,注意,目錄名稱是區分大小寫的; ?
?? ?4.WEB-INF 下新建一個文件 web.xml ,內容如下:

?

<? xml version = "1.0" encoding = "ISO-8859-1"? >

< !DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

< web-app >

< display-name > My Web Application </ display-name >
< description >
?? ?A application for test .
</ description >

</ web-app >

? 在我的電腦 -> 屬性 -> 高級 -> 環境變量 -> 系統變量中添加以下環境變量 ( 假定你的 tomcat 安裝在 e:\tomcat ):
CATALINA_HOME c:\tomcat
CATALINA_BASE c:\tomcat
TOMCAT_HOME:? c:\tomcat??? ?????????
????
如果是第一次設置 tomcat 的環境變量,上面的這三個變量都是沒有的,因此都需要 新建 ,以第一個變量為例:點擊 新建 ”, 輸入變量名為 CATALINA_HOME ,輸入變量值為 c:\tomcat

????? 然后修改環境變量中的 classpath (這一步與上面 jdk 相關聯,這里的 classpath 變量便是上面在安裝 jdk 時所創建的環境變量):把 tomat 安裝目錄下的 common\lib 下的 servlet.jar 追加到 classpath 中去,修改后的 classpath 下: classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib \tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar (注意:末尾最好別加分號) 注意:雙擊打開 classpath 變量時,其值為 jdk 的相關值,即:

?? ?.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar ,現在要追加 tomcat 的該變量值,需要先 在末尾添加一個分號 ( 如果末尾有分號,就不必添加了 ) ,然后再添加 tomcat 的值: ?? ??? ??? ??? ??? ?????? ??? ??%CATALINA_HOME%\common\lib\servlet-api.jar

?

--------------------------------依然沒用!!--------------------------------------

?

?

?? ?5. myapp 下新建一個測試的 jsp 頁面,文件名為 index.jsp ,文件內容如下: ?

?

< html >

< body >

< center >
?? ?Now time is: <%= new java . util . Date ()%>
</ center >

</ body >

</ html >

?? ?6. 重啟 Tomcat?
?? ?7. 打開瀏覽器,輸入 http://localhost:8080/myapp/index.jsp 看到當前時間的話說明就成功了。

?? ?8. 如果在這一步出現如下錯誤:

??? ?exception
?? ?javax.servlet.ServletException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver

就檢查一下 Tomcat/lib 下是否已經有 el-api.jar? el-ri.jar 兩個 jar 文件,沒有則拷貝到此目錄下。重啟 Eclipse 測試;同時,如果機器上已經有 Eclipse ,又安裝 MyEclipse MyEclipse 會自動查找 jre, 他首先檢測到的是 C:\Program Files\Java jdk 安裝目錄)中的 jre ,而不是 C:\Program Files\Java\jdk1.5.0_06 中的 jre ,原先的 Eclipse jre 也隨之改動(解決方法 (Eclipse 為例, MyEclipse 類似 )window->preferences->Java->Installed JRES->Edit-> 更改 jre home C:\Program Files\Java\jdk1.5.0_06 );如果還不行,就將 el-api.jar 包也添加到 classpath 環境變量中去。 果這樣還不行,就再參考一下這一段:原 因:在 Eclipse Windows -->> Preference? -->>Tomcat 設置 Tomcat Home 路徑后,又在 Tomcat Advanced 選中設置了相同的 Tomcat Base 路徑,關鍵一步是 Advanced 下有項: Add Java projects to tomcat classpath ,勾上所選項目之后,才可以正常的引起 javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver?

解決辦法:從哪里勾上的,就從哪里勾回去,把 Add Java projects to tomcat classpath 勾掉。 果上面的方法都不行,那就只好出一個必殺招了 —— 卸載安裝好的 jdk tomcat eclipse ,并清除 jdk tomcat 的環境變量,然后重新安 裝一遍 jdk tomcat eclipse ,并設置 jdk tomcat 的環境變量。可能是我這個人比較搓,我每次將我在公司做好的項目拷回來研究時, 總是會出現這樣的錯誤,并且每次無論怎樣搞, tomcat 依然會報 java.lang.NoClassDefFoundError: javax/el/ELResolver 的錯誤,最后終于恨下心來,專門花了一個星期的時間來研究解決之道,最后才想出了這個 先毀滅再重建 的不是辦法的辦法,并且每一次都屢試不爽!

?

這是另一個高手寫的,可這并不是我的問題,我原來投票系統致命的問題是,不能喚醒和調用httpservice服務,所以我就在tomcat環境下,配合jdk1.5,看這個javax.servlet.ServletException是否運作,可是問題卻僵持在了永久的http404?? ***.jsp不是可調用的問題上,服務器找不到文件!!這么簡單,可是就是沒調出來。

----------------害的我差點沖動要重裝所有軟件,還好,我挺住了所有沖動\!!!!----------

5 第四步——建立自己的 Servlet
???
緊接上面第三節中的第三步“建立自己的 jsp app 目錄 ”,接下來寫入你的第一個 Servlet: 在你新建的 Application myapp/WEB-INF/classes /test 目錄下新建 HelloWorld.java

?

package test;

import java . io .*;
? import javax . servlet .*;
? import javax . servlet . http .*;
? public class HelloWorld extends HttpServlet
?? {
???? public void doGet ( HttpServletRequest request , HttpServletResponse response ) th
rows ServletException , IOException
??? {
????response . setContentType ( "text/html" );
???? PrintWriter out = response . getWriter ();
????out . println ( "<html><head><title>" );
????out . println ( "This is my first Servlet" );
????out . println ( "</title></head><body>" );
????out . println ( "<h1>Hello,World!</h1>" );
????out . println ( "</body></html>" );
???
??? }
??? }

?? 然后照樣用 javac HelloWorld.java 來編譯這個文件,如果出現無法 import javax.servlet.*
??
那么就是應該把 C:\Tomcat\common\lib 里面的 servlet-api.jar 文件拷貝到 C:\JDK\jre\lib\ext 中,再次編譯,就沒有問題了!
??
然后在 Tomcat 目錄里面的 C:\Tomcat\webapps\myapp 里面按如下的文件結構:
?? myapp\index.jsp
?? myapp\WEB-INF\classes\ test \HelloWorld.class(
把上面生成的 HelloWorld.class 文件放在這個里面 )


????Servlet
必須使用 C:\Tomcat\webapps\myapp\WEB-INF 這個目錄下面的 web.xml 文件進行注冊,
?? ?
EditPlus 打開這個 web.xml 文件,
?? ?
<web-app></web-app> 添加下面這段程序 :

?

< servlet >
???? < servlet - name > HelloWorld </ servlet - name >
???? < servlet - class > test.HelloWorld </ servlet - class >
? </ servlet >
? < servlet - mapping >
???? < servlet - name > HelloWorld </ servlet - name>
???? < url - pattern > /HelloWorld </ url - pattern >
??? </ servlet - mapping >

??? ? 為什么呢? 因為這樣的結構

?? <servlet>
?? <servlet-name>HelloWorld</servlet-name>
?? <servlet-class> test .HelloWorld</servlet-class>// 類的路徑
?? </servlet>

?? ? 表示指定包含的 servlet 類,而以下的結構

?? <servlet-mapping>
?????<servlet-name>HelloWorld</servlet-name>
??? <url-pattern>/HelloWorld</url-pattern>
?? </servlet-mapping>

?? ? 表示指定 HelloServlet 應當映射到哪一種 URL 模式。在修改 web.xml 完畢過后,重新啟動 Server ,然后再輸入 http://localhost:8080/myapp/HelloWorld , ,那么偌大一個 Hello,World! 等著你呢,恭喜你 !

?? ? 第五步 :建立自己 java Bean

?? ?1. 在你新建的 Application myapp/WEB-INF/classes /test 目錄下新建 TestBean.java

?

package test ;
public class TestBean
{
???? private String name = null ;
???? public TestBean ( String nameInit ){
???????? this . name = nameInit ;
???? }
???? public void setName ( String newName ){
???????? this . name = newName ;
???? }
???? public String getName (){
???????? return this . name ;
???? }
}

?? ? 然后照樣用 javac TestBean.java 來編譯這個文件。

?? ?2. 然后在你新建的應用程序目錄 myapp 下新建一個新的 jsp 文件: testBean.jsp

?

<%@ page import = "test.TestBean" %>
< html >
< head >
< title > Test Bean </ title >
</ head >
< body >
< center >
<%
???TestBean testBean = new TestBean ( "Http://yexin218.cublog.cn" );
? %>
Java Bean Test:
??? The author's blog address is <%=testBean.getName()%>
</center>
</body>
</html>

?? ? 好了,確定各個文件的位置:

?

myapp\index . jsp
myapp\testBean . jsp
myapp\WEB - INF\web . xml
myapp\WEB - INF\classes\test\HelloWorld . class
myapp\WEB - INF\classes\test\TestBean . class

?? ?3. 重啟 Tomcat 如果需要的話,在瀏覽器輸入 : http://localhost:8080/myapp/testBean.jsp ? 幸運的話就會看到 :

?? ?Java Bean Test: The author's blog address isHttp://yexin218.cublog.cn

?? ? 這樣就完成了整個 Tomcat 下的 jsp servlet javabean 的配置。

?

?如果路徑沒有問題的話你看下你的目錄下是不是有這個文件:/WEB-INF/web.xml
如果沒有的話去到別的目錄中拷一個過來,比如webdav目錄下就有一個。
這時重新起動TOMCAT,就OK了。我也是在網上搞了半天,說這說那個都沒不實用,我就發這個最有用。你試試看。我懶人只會懶方法!

我看了這句,于是,在web.xml里附加了這句話

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>My Web Application</display-name> <description> A application for test. </description> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>test.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> </web-app>

?

?

  

??

?重新啟動了一下服務器,然后,不可思議的是,全好了!!!!!!!!!!!!!!!!!!!!

?

要servlet有servlet的反應,要目標地址**.jsp有那個文件的反應。

?

---------------------------------我問題最終解決的方法居然是-------------------------------------------------------

我組長從隔壁拉來一個高手,啟動服務器又關閉服務器,,若干類似,程序級錯誤,其實是后來又導進去的el-api.jar包放在tomcat/common/lib下即可,而我又再次附加在了eclipse/windows/properties/installed jres/,我這樣一來,就給程序duplicate,多重載了一次。然后就刪掉了,刪掉以后,就好了。。。

?

很不服氣啊。原本差不多了已經。

?

但是高手也教給我一點東西:編譯JSP,java的包,放在tomcat下的包中。因為這個時候,才能編譯通過,而不是放在eclipse下面的包。eclipse下面,又服務器servers這一個關鍵的項目,就放的是你要用來編譯的服務器tomcat!!!!

?

而弄好的原因,我琢磨:

少放了el-api.jar,servlet-api.jar包在服務器上,所以,它當然沒法調用httpservice嘍。。

?

所以高手一進門就預言的的確是對的:

這個錯誤,就是httpservice錯誤,應該是配置錯誤,缺少相應的jar 包!!

?

唉,我服了,心服口服。

?

---------------------------------------------------問題遠遠沒有結束-----------------------------------------------------------

最后提交,寥寥幾個字,我的心:提交錯誤,一遍又一遍的提交錯誤!!

折騰了一天沒找到錯誤,還去琢磨斷點怎么設置,后來的后來的后來,我無意中發現了,在run on server的時候,下面有輸出的所有信息,原來,作者就怕像我這樣的 小輩弄不懂,所以,故意,搞了一系列最關鍵的類似于:

System.out.println(strSql);

的檢查語句,可以檢測程序的運行程度。我的菜真讓自己見笑,昨個還忙活著要去弄什么斷點,全都寫好了已經。

拿到NAVICAT上直接調試,發現,在插入時候,問題四的字段varchar(11),白天(上午9:00至下午16:00),根本不止。我猜測應該是提取什么吧,否則,怎么會這么點長度,接著研究,反正我改成50就好了,可是插進去的全是??(??18:30???21:00),亂碼。。但最起碼,圖形已經弄出來了,看著自動生成的所有餅狀圖,心里還是著實安慰了不少。。

解決方法:

url = "jdbc:mysql://localhost/flexvote?autoReconnect=true&UseUnicode=true&characterEncoding=UTF-8";

在數據庫連接的時候采用的這個utf-8方法

插入數據的時候:

<%@ page contentType="text/html; charset=utf-8" import="java.sql.*"%>

contronldb.SetVote_Question4(new String(request.getParameter("Question4").getBytes("ISO8859-1"), "UTF-8"));

這是我隨便換著調試做出來的正確結果。仔細一看,是這樣的:

四、數據庫連接方式使用UTF-8編碼

JSP中要把網頁輸入的中文存入數據庫,通常有一個提交(Submit)的過程,是用str=request.getParameter("username"),然后執行update或者insert語句來存入數據庫。如何賦值給str很重要,而且這里中文輸入與網頁所使用的字體編碼有關。

1、 網頁使用UTF-8,使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8")或者str= new String(request.getParameter("username").getBytes(),"UTF-8"),都可以使得存到數據庫里的數據是UTF-8編碼。

2. 網頁使用GBK,使用str= new String(request.getParameter("username").getBytes(),"GBK"),那么存入數據庫的是UTF-8編碼。

3. 值得注意的是使用UTF-8的數據庫連接方式不能存得GBK。

相關:

一、數據庫連接方式使用UTF-8

在連接數據庫的驅動后面加上這句參數useUnicode=true&characterEncoding=

UTF-8,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode=

true&characterEncoding=UTF-8,從數據庫里讀出中文顯示在使用GBK的JSP的網頁里,如果數據庫里存放的字體編碼是UTF-8,在JSP中使用 str=new String(rs.getBytes(1),"UTF-8")或者str=rs.getString(1),可以正確顯示中文。如果數據庫里存放的是GBK數據,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK")來顯示正確的中文。值得注意的是如果頁面使用UTF-8,數據庫里存放的是UTF-8,也可以用str=new String(rs.getBytes(1),"GBK")正確顯示中文。如果網頁是UTF-8,而數據庫里存放的是GBK,無法直接顯示中文,需要2步轉換, str=new String(rs.getBytes(1),"GBK"); 再str=new String(str.getBytes("UTF-8"),"GBK"),才可以正確顯示中文。

?

?

?

接著琢磨之前的投票


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费福利在线 | 国产成人综合高清在线观看 | 国产色婷婷视频在线观看 | 深夜福利国产福利视频 | 国产日产久久高清欧美一区 | 一级一级一级毛片 | 韩国美女高清爽快一级毛片 | 久久精品国产久金国产思思 | 欧美草草| 亚洲一区二区三区高清不卡 | 一级女性全黄生活片看看 | 国产亚洲美女精品久久久久狼 | 美女被羞羞产奶视频网站 | 久久久亚洲欧美综合 | 黄色片网站在线免费观看 | 亚洲精品播放 | 婷婷色综合久久 | 午夜不卡影院 | 亚州不卡 | 亚洲精品一区二区三区在 | 97玖玖| 久久国产精品男女热播 | 欧美日韩激情在线一区 | 日韩一级大毛片欧美一级 | 香蕉成人在线视频 | 亚洲在线网站 | 欧美另类网 | 久久久精| 天天天天天天干 | 久久成人永久免费播放 | a一级毛片视频免费看 | 全免费午夜一级毛片真人 | 久久9966精品国产免费 | 狠狠色综合色综合网络 | 亚洲欧美日韩高清一区二区三区 | 国产精品一区二区四区 | 美女黄www视频| 亚洲国产一区在线精选 | 亚洲精品国产福利一区二区三区 | 婷婷亚洲综合一区二区 | 久久国产精品老女人 |