国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java web 三大框架異常學習總結

2019-11-06 06:27:52
字體:
來源:轉載
供稿:網友

struts2.1.8+hibernate2.5.6+sPRing3.0(ssh2三大框架)常見異常原因和解決方案

http://www.cnblogs.com/lanxuezaipiao/p/3619949.html經過暑期兩個月對ssh2的學習和OA項目的實戰(zhàn)訓練,我對J2EE技 術中著名的三大框架ssh2已漸漸有所理解和掌握。從搭建ssh2框架環(huán)境開始到寫出第一個簡單的ssh2登陸程序,到最后整個OA項目的實戰(zhàn), 期間遇到了重重困難和阻礙, 就連搭建環(huán)境就花了整整一天的功夫,而成功運行第一個ssh2程序更花了好幾天,當然我相信這是大部分學習ssh2這門技術 都會經歷的過程,相信也是每個程序員學習任何一門新的技術都會走的路程。如今,項目已成功收尾,在這欣喜之余,我也愿意將我學習ssh2中遇到的一些常見 異常問題總結如下,希望大家可以少走一些彎路,或者在遇到問題時可以及時解決。PS:我的編程運行環(huán)境是MyEclipse8.6 + Tomcat6.1.3 + MySQL

問題一:出現異常 java.lang.NoSuchMethodError: antlr.collections.AST.getLine()問題

原因:是JAR包的沖突,包 antlr2.7.2 與 antlr2.7.6 沖突(一個是tomcat下的包,一個是自己引入ssh2的包)解決方案:刪除包antlr2.7.2 即可,具體方法:在MyEclipse下,windows-->preferences-->在文本框中搜索struts2-->選擇antlr2.7.2-->remove或者直接在tomcat該應用的目錄WEB-INF/lib 刪除 antlr2.7.2.jar  

問題二:異常java.lang.NullPointerException

原因:空指針異常產生的主要原因如下:(1) 當一個對象不存在時又調用其方法會產生異常   obj.method() // obj對象不存在(2) 當訪問或修改一個對象不存在的字段時會產生異常   obj.method()  // method方法不存在解決方案:調試,找出異常產生的具體原因,再根據具體原因具體解決。

問題三:異常The Struts dispatcher cannot be found.  

This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the 

Struts dispatcher needed for this tag. - [unknown location]原因:struts2的過濾器映射路徑寫錯解決方案:在web.xml中配置struts2的過濾器如下:<filter-mapping>              <filter-name>struts2</filter-name>              <url-pattern>/*</url-pattern></filter-mapping>注意:<url-pattern>這里一定要是 /* 

問題四:org.hibernate.util.JDBCExceptionReporterorg.hibernate.util.JDBCExceptionReporter.logExceptions

(JDBCExceptionReporter.java:101) - Unknown type '246 in column 2 of 6 in binary-encoded result set.原因:用mysql數據庫時,某些字段值使用類型decimal、bigint等解決方案:用mysql數據庫時,避免字段值用decimal、bigint等,否則用hibernate執(zhí)行hql語句時就會出現上面的異常 

問題五:經過action跳轉后得到的頁面中CSS和js的樣式引入不能應用

原因:經過action跳轉后頁面的路徑改變了,不是你頁面存放路徑解決方案:最好用絕對路徑來引入css和js,如引入css可用<link href="${pageContext.request.contextPath}/css/css.css" rel="stylesheet" type="text/css" />PS:也可使用項目名稱來作為絕對路徑,如項目名稱為OA,則上面引入也可如下:<link href="/OA/css/css.css" rel="stylesheet" type="text/css" />似乎更簡介,但個人不推薦使用,因為一旦你的項目名更換后,所有頁面中的OA都要跟著替換,十分繁瑣。 

問題六:使用struts2的標簽<s:textfield />時,不能在一行顯示多個文本框(一個textfield占一行)

原因:初學struts2,在頭腦中一直在想一個問題,就是對于struts2 ,當應用其自身的標簽時,例如:<s:form>   <s:textfield name="a"></s:textfield></s:form>當查看源代碼時為:<form><table>    <tr><td><input type="text" name=a/></td></tr></table></form>自動添加了table tr td 標簽,所有不能一行顯示多個文本框。解決方案:在struts2中加入了theme(主題)的概念,通過設置不同的主題,可以讓struts的代碼輸出不同的html代碼,你也就相應得到不同的布局效果。疑問1、Struts2有哪些主題?Struts2提供了三種主題,Ajax, simple, xhtml,它默認的是xhtml主題,當然你可以寫任意個你自己的主題,我們稱之為自定義主題疑問2、Struts2主題怎么改?有兩種方法可以解決.1.簡單的方法(也很實用)在Struts.xml中,加上下一行代碼就可以了<constant name="struts.ui.theme" value="simple" />代表所有的頁面采用的都是 simple主題了,這時它輸出的頁面,不回添加任何多余的代碼,比如 table tr td 等,我們就可以像其他編輯頁面的方式編輯頁面的風格?;蛘?在 <s:form 中添加 theme<s:form theme="simple"></s:form>struts2每個標簽都有theme屬性2.自定義 theme,還未研究》。。。。

問題七

通過頁面表單提交一些要修改數據庫中數據的操作,表單提交之后,程序運行一切正常,而且,后臺也打印出了sql語句,例如:insert into SYS.HNCITEM05 (SNAME, BATE, SONO, SDATE, SNO) values (?, ?, ?, ?, ?),但是,數據庫中卻查不到剛才插入的數

據。就是說:數據并沒有真正寫入數據庫。 原因:hibernate配置錯誤 解決方案:Hibernate中設置事務自動提交即在Hibernate配置文件中進行如下設置 : <property name="connection.autocommit">true</property> (<!-- 設置事務自動提交(默認為false,false的話,程序對數據庫的操作都不會作為事務提交) -->) 一切就OK了。 

問題八

異常Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'userDao' must be of type [com.changetech.dao.impl.UserDaoImpl], but was actually of type [$Proxy16]

原因如下:         @Resource(name="userDao")         protected UserDaoImpl userDao;         public void setUserDao(UserDaoImpl userDao) {                   this.userDao = userDao;         }原來在定義Dao時,沒有用接口,而直接使用的是Dao的實現類解決方案:改為如下:         @Resource(name="userDao")         protected UserDao userDao;         public void setUserDao(IUserDao userDao) {                   this.userDao = userDao;         }問題得到了解決 

問題九:更新時報錯 (The given object has a null identifier)

原因:對于自增字段的主鍵通常不能自動將值傳遞到頁面,即在更新時缺少主鍵,需要手動設置解決方案:在頁面中加上下面這句即可:<s:hidden name="book.bookId"></s:hidden>(不會在頁面顯示出來,但值傳遞過來了) 

問題十:js實現圖片不能顯示時使用替換圖片顯示

解決方案:使用img標簽的onerror屬性來處理默認圖片,示例如下:復制代碼<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>替換示例</title></head><body><img id="img" src="001.jpg" onerror="showerrimg(this);" ><script language="Javascript">function showerrimg(obj){     var errorimg = "error.jpg";//替換圖片地址     obj.src = errorimg;}</script></body></html>復制代碼

問題十一:MyEclipse中修改項目名稱后,如何重新部署到 tomcat?

解決方案:首先修改工程名(直接按F2即可),然后選擇工程名--右鍵--Properties--MyEclipse--Web--把Web Context-root的名字改成新的項目名稱, 再把tomcat的工程刪除了,最后重新部署下即可。問題十二:在jsp頁面中用request方式向struts的action中傳遞不了中文參數,例如下面代碼:復制代碼    <silver;mso-highlight:silver;mso-font-kerning:0pt;" >      a href="findBooksByConditionAction.action?page=<s:property value="%{pageBean.currentPage+1}"/>      &property=0pt;" ><%=session.getAttribute(0pt;" >"property")mso-font-kerning:0pt;" >%>&condition=mso-font-kerning:0pt;" >      <%=session.getAttribute(mso-font-kerning:0pt;" >"condition")color:#BF5F3F;mso-font-kerning:0pt;" >%>      &category=0pt;"  ><%=session.getAttribute(0pt;"  >"category")mso-font-kerning:0pt;"  >%>&subCategory=mso-font-kerning:0pt;"  >      <%=session.getAttribute(mso-font-kerning:0pt;"  >"subCategory")color:#BF5F3F;mso-font-kerning:0pt;"  >%>0pt;"  >"          class="right-font08">下一頁</background:silver;mso-highlight:silver;mso-font-kerning:0pt;"  >amso-font-kerning:0pt;"  >>  復制代碼這樣傳遞過去的中文是亂碼解決方案:放在input文本域里面?zhèn)鬟f過去,即    <input type="hidden" name="condition" value="<%=session.getAttribute("condition")%>"/>      <input type="hidden" name="category" value="<%=session.getAttribute("category")%>"/>      <input type="hidden" name="subCategory" value="<%=session.getAttribute("subCategory")%>"/>      <input type="hidden" name="property" value="<%=session.getAttribute("property")%>"/>  然后直接<a href="findBooksByConditionAction.action?page=<s:property value="%{pageBean.currentPage+1}"/>"class="right-font08">下一頁</a>但發(fā)現值竟然沒有傳過去(空指針報錯),經問同事后知道,要想input里的值傳過去必須提交表單才可,僅采用這種超鏈接方式進行跳轉的值是傳不過去的,于是將超鏈接換為<a href="javascript:queryByConn('<s:property value="%{pageBean.currentPage+1}"/>');" class="right-font08">下一頁</a>js中相應加上該函數的實現:復制代碼    function queryByConn(page) {            document.bookForm.action="findBooksByConditionAction.action?page="+page;                document.bookForm.submit();            }  復制代碼在js中將表單提交即可,這樣亂碼問題就解決了。 

問題十三:hibernate中出現異常

org.hibernate.LazyInitializationException: could not initialize proxy - no Sessionat org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)原因:hibernate配置中 many-to-one的默認選項是 lazy = "proxy"解決方法:<many-to-one>  及 <set> 中設置 lazy="false"即可 

問題十四:如何建立svn服務器

解決方案:首先當然要安裝客戶端svn(小烏龜TortoiseSVN )和服務器端svn(Subversion),然后在命令行下輸入以下命令:1、  svnadmin oa(oa是存放各個版本信息的文件夾名稱,自定義)2、  svnserve  –d –r oa(打開svn服務器) PS:可能遇到的問題:authorized failed(權限認證失?。┙鉀Q方案:在oa目錄下找到passwd文件,在里面加上幾個用戶用戶名=密碼(自己定義用戶名和密碼)并將svnserve.conf里的passWord-db = passwd這句前面的#去掉即可(前面不能留有空格)========

三大框架常見錯

http://blog.csdn.net/mr_li13/article/details/49447207Unable to load configuration. - [unknown location]    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)    at 解決問題步驟:第一,看看是否導入Junit4這個單元測試包沒,沒有導入再運行。否則進入第二步第二,jar包沖突,檢查項目中的jar包是否同時有 xerce.jar和xml-apis.jar這兩個jar包,有的話刪除xerce.jar 第三,缺了包,檢查struts.xml中是否有配置有的話看看項目中是否有引入struts2-spring-plugin-2.1.6.jar,沒有的話引入即可第二個:Line: 177 - java/net/PlainSocketImpl.java:177:-1這個問題只要你機子聯網就可以跑起來,但是你一沒網就報錯了..具體如下:2010-1-24 21:51:42 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:struts2' did not find a matching property.2010-1-24 21:51:42 org.apache.catalina.core.AprLifecycleListener init信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the Java.library.path: F:/jdk.1.6/Java/bin;.;C:/WINDOWS/Sun/Java/bin;C:/WINDOWS/system32;C:/WINDOWS;F:/jdk.1.6/Java/bin/../jre/bin/client;F:/jdk.1.6/Java/bin/../jre/bin;F:/jdk.1.6/Java/bin;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/Program Files/ATI Technologies/ATI.ACE/Core-Static;C:/Program Files/Common Files/Thunder Network/KanKan/Codecs;C:/Program Files/StormII/Codec;C:/Program Files/StormII2010-1-24 21:51:43 org.apache.coyote.http11.Http11Protocol init信息: Initializing Coyote HTTP/1.1 on http-80802010-1-24 21:51:43 org.apache.catalina.startup.Catalina load信息: Initialization processed in 2063 ms2010-1-24 21:51:43 org.apache.catalina.core.StandardService start信息: Starting service Catalina2010-1-24 21:51:43 org.apache.catalina.core.StandardEngine start信息: Starting Servlet Engine: Apache Tomcat/6.0.162010-1-24 21:51:45 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register信息: Parsing configuration file [struts-default.xml]2010-1-24 21:51:45 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register信息: Parsing configuration file [struts-plugin.xml]2010-1-24 21:51:45 org.apache.catalina.core.StandardContext filterStart嚴重: Exception starting filter struts2Class: java.NET.PlainSocketImplFile: PlainSocketImpl.javaMethod: connectLine: 177 - java/net/PlainSocketImpl.java:177:-1 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:835) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130) at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452) at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201) at org.apache.catalina.core.applicationFilterConfig.getFilter(ApplicationFilterConfig.java:275) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4356) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)Caused by: struts.apache.org - Class: java.Net.PlainSocketImplFile: PlainSocketImpl.javaMethod: connectLine: 177 - java/net/PlainSocketImpl.java:177:-1 at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:123) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:830) ... 25 more解決辦法:解決不聯網無法啟動struts2問題*將struts.xml中的聲明部分<!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD StrutsConfiguration 2.1//EN"    "http://struts.apache.org/dtds/struts-2.1.dtd">替換為 在struts2-core-2.xxx.jar包中struts-default.xml的文件聲明<!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">****說白了也就是說要保持一致!!========

整合三大框架出現的一些常見的問題及解決的方案

http://blog.csdn.net/u012814005/article/details/42234649①、今天在整合三大框架的時候,出現了兩個異常,在網上看了很多的文章。所有的文章都指向hibernate的問題,于是我就從這幾方面去排查,一:hibernatejar包,二:hibernate配置文件,三:hibernate的實體映射文件(我用的是注解的方式來的)。經過一一排查后發(fā)現,我把id的類型寫成了string的類型。org.hibernate.exception.SQLGrammarException: could not extract ResultSetat org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.Java:80)at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:91)at org.hibernate.loader.Loader.getResultSet(Loader.java:2065)at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862)Caused by: com.MySQL.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mydb.tbl_employee' doesn't existat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:526)at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)at com.mysql.jdbc.Util.getInstance(Util.java:386)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)②、在做刪除功能時,發(fā)現數據庫已經刪除了數據,但是跳轉的時候卻出現404的異常。經過檢查,發(fā)現在sturts.xml配置文件中<result name="listAllEmps">/employee!listAllEmps.action</result>,因為result的type屬性默認的值是dipatcher,而我需要是重定向到這個action下,所以添加了type="redirect"就可以了========
上一篇:java NIO

下一篇:Java常用設計模式

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌鲁木齐县| 靖远县| 康保县| 南华县| 根河市| 宝清县| 井冈山市| 遵化市| 彰化市| 宁明县| 德令哈市| 同德县| 化隆| 宁武县| 太白县| 夹江县| 定西市| 金湖县| 苍南县| 杭锦旗| 长阳| 武胜县| 应城市| 邵阳县| 济宁市| 新安县| 宕昌县| 滨海县| 肥城市| 家居| 石狮市| 巴里| 洛隆县| 南涧| 柘荣县| 百色市| 荣成市| 探索| 兰州市| 双鸭山市| 来安县|