JSP代碼運(yùn)行錯(cuò)誤的問(wèn)題及解決方法

字號(hào):


    avax.naming.NameNotFoundException: Name jdbc is not bound in this Context
    解決方案:META-INF 下context.xml文件的配置出錯(cuò)或名字引用不到.名字如標(biāo)簽,只能是context.
    java.lang.IllegalStateException/Attempt to clear a buffer that’s already been flushed
    嚴(yán)重: Servlet.service() for servlet jsp threw exception
    java.lang.IllegalStateException
    解決方案:可以在response.sendRedirec(a.jsp)之后加return或者把路徑變?yōu)?/a.jsp。不過(guò),都不管用。解決方法是設(shè)置buffer的大?。?lt;%@ page buffer="10kb"%> 默認(rèn)是8kb,自己手動(dòng)改為10kb之后,沒(méi)有錯(cuò)誤了。
    ? The type Date is ambiguous
    原因:
    <%@ page import="java.sql.*" %>
    <%@ page import="java.util.*"%>
    這兩個(gè)類中都有Date,系統(tǒng)不知道選哪個(gè)了
    解決方案: 可以用java.util.Date today=new Date();來(lái)區(qū)分
    ? (1)MySQL插入時(shí)的亂碼:自己的MySQL安裝時(shí)默認(rèn)是用UTF-8的,在JSP中傳入需要插入的數(shù)據(jù)時(shí),可以用new String(request.getParameter(string).getBytes("ISO8859-1"), "UTF-8");插入后沒(méi)有亂碼……連接時(shí)用:String url = "jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8";
    (2)頁(yè)面的亂碼:用非英語(yǔ)語(yǔ)言時(shí),容易出現(xiàn)亂碼,特別是在進(jìn)行form提交表單檢測(cè)時(shí),如:“保存”.equals(str)時(shí),有可能不識(shí)別,最好的是用隱藏表單提交,value值設(shè)為數(shù)字即可。如果有多個(gè)表單提交,可以用JavaScript檢測(cè)設(shè)置隱藏表單的值:
    <script type="text/javascript">
    function getAction(num){
    document.getElementById("hide").value=num;
    }
    </script>
    <form>
    <input name="action" type="hidden" value="" id="hide">
    <input type="submit" onClick="getAction(1)" name="" value="保存" />
    <input type="submit" onClick="getAction(2)" name="" value="リセット" />
    <input type="submit" onClick="getAction(3)" name="" value="戻る" />
    </form>
    還有就是添加
    <%@ page lpageEncoding="utf-8" %><!-- shift_jis -->
    < contentType="text/html;charset=utf-8"%>
    <%
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    %>也可一定程度防止亂碼。
    <input type="text" name="name" id="name" value=<%=bean.getName() %> size="12" maxlength="12" />
    如上所示,input通過(guò)value屬性來(lái)獲得數(shù)據(jù)庫(kù)bean的數(shù)據(jù)。
    ? 而換成textarea時(shí),這樣做卻不成。(當(dāng)然數(shù)據(jù)庫(kù)中有這項(xiàng)數(shù)據(jù),你可以用out方法打印出來(lái))
    問(wèn)題解決:
    ? 想到幾個(gè)月前,做過(guò)一個(gè)新聞相關(guān)的網(wǎng)站。當(dāng)時(shí)也用到textarea標(biāo)簽。
    對(duì)照代碼一看才明白過(guò)來(lái),示例如下:
    <textarea type="text" name="contents" > <%=bean.getContents() %> </textarea>
    即將所需數(shù)據(jù)放在標(biāo)簽的中間就可以了!