mysql 的 級聯刪除與級聯更新 create table student( id int, departmentId int, foreign key(departmentId) references department(departmentId) on delete cascade ; ); 級聯更新(如:某次須要更新了 department表的某一個id 號,那麼其下的 student中的departmentId 跟着改變 ) foreign key(departmentId) references department(departmentId) on update cascade ; zuixin spring 使用註解 @Resource 能夠省略 setter () getter 方法 採用的是 field(屬性) 注入 Spring默認 @Service public class UserService{ } 等等 會自動建立 一個小寫userSerivce, 可是 我測試 非 web 容器中 ,沒有指定 @Service("userService") ,Spring卻不存在此 bean , 緣由是 字母寫錯了,類 userService 寫成 -------> ac.getBean("userService "); 即 類名 和 ac.getBean("userService "); 寫的不同 1.error opening trace file: No such file or directory android api 的版本和模擬器的版本不一致致使的。我如今從新建立了一個項目,版本和運行的模擬器都選擇同樣的。結果不報這個錯誤了 2.Tomcat 不更新 所有jar包問題,刪除lib 下面全部jar。 從新構建jar 3. Log4j 日誌 不更新問題 , JavaEE 版本6 換成5 。 4. 空指針...... ------> 忘記new 對象,空引用即便用 此對象(或者 查詢數據庫返回null, 直接 set給 某一對象) 5. sl4j.api sl4j-log4j,log4j 注意版本的匹配 6.注意 配置 tomcat 的jdk和本身的一致 7. 不要給 sessionFactory起名 8. hibernate映射的時候實體 老是寫錯 ,和配置文件裏面對應的 必定不要忘了 getter setter方法 ;特殊屬性不須要 9.整合 hibernate找不到 class或 不能解析的(先看 本身hbm.xml中 <class name="Topic" table="topic">是否是寫錯,寫成小寫了 ) 10. spring 容器: 在普通的Java程序中 也能夠直接使用 spring的註解方式(可是千萬不要忘記 了改變spring的掃描包 ) 還有就是 ,1. spring在web 容器啓動時候 中能夠本身實例化 2. 普通Java程序中須要經過ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 註解後 ,就能夠直接 Install installer = (Install) ac.getBean("install");獲得該對象了 註解沒有設置掃描包 : spring 會包 找不到 class異常 實例化Spring容器,不管WEB容器仍是JavaSE 掃描的仍是配置的 對象都會被實例化 #==================== 可是 JavaSE中,JUnit測試用例 發現 @Resource注入根本無效,想在一個類裏面用如 SessionFactory或者UserService之類的 @Resource private UserService userService; @Resource private SessionFactory sessionFactory; //## userSerivce.sayHello(); 空指針異常 (即沒法注入 ) //## userService = (UserSerivce)ac.getBean("userSerivce"); userSerivce.sayHello(); //能夠 自我判斷: 我認爲主要 @Resource不管 是javaSe仍是Web都是能夠注入的 可是:問題,經過ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 須要手動 經過 getBean("beanName");獲得 已經實例化的容器對象 Java Application 運行 在 jre虛擬機中,沒法自動關聯注入 (由於jre沒有被Spring管理) 可是WEB容器 web.xml 設置有Spring的監聽器,Controller已經被Spring管理 (Tomcat,入口是Controller)運行時候卻能夠 在 Controller裏面直接使用 注入的屬性如UserService等等 例子1: public class HibernateTest { /* ## @Resource xxx //此類沒有被Spring 管理,此註解無效(由於 HibernateTest對象都沒有被建立,都不知道往哪裏注入哦,因此咱們見到可使用的都是 類上面有註解,屬性也有註解(對象得和屬性關聯才行 )) private TestService testService ; */ @Test public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); ## TestService service = (TestService) ac.getBean("testService"); //去Spring容器找實例化過的對象 OK service.saveUser(); } #==================== 例子2: @Component //##1 public class HibernateTest { @Resource //##2 private TestService service; // ##2 已經 被注入 //##1 裏了 @Test public void save(){ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); HibernateTest hibernateTest = (HibernateTest) ac.getBean("hibernateTest"); hibernateTest.service.saveUser(); //(1)正確 service.saveUser(); //(2)報錯 /** 重點解釋 這裏爲何會報錯:很重要 。(WEB中或者Spring容器的實例化在其餘類裏面[不論怎樣,第一層(class上面沒有註解即沒有被Spring管理)的調用都須要使用getBean("")方式 ] ) //在本身的類裏調用 service.saveUser(); TestService service 尚未被Spring容器指向 testService這個對象. //故報空指針異常 */ } } 例子3: javaSE 程序哦 @Service @Transactional public class TestService { @Resource SessionFactory sessionFactory; public void saveUser(){ Session session = sessionFactory.getCurrentSession(); // 只有事務管理器存在才能夠,@Trasactional註解 User user = new User(); user.setUsername("王立"); user.setPassword("124"); session.save(user); } } 例子4 : @Component // 注意這裏不要配置爲@Controller,由於咱們在applicationContext.xml中已經配置@Controller註解不被掃描 public class HibernateTest { @Resource SessionFactory sessionFactory; @Transactional public void save(){ Session session = sessionFactory.getCurrentSession(); // 這裏不能用getCurrentSession();// 只有事務管理器存在才能夠,@Trasactional註解 for(int i=0;i<50;i++){ User user = new User(); user.setUsername("王立"); user.setPassword("124"); session.save(user); } } public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); HibernateTest hibernateTest = (HibernateTest) ac.getBean("hibernateTest"); hibernateTest.save(); } } 11. 刪除表時候 注意級聯 問題 , 如 forum topic reply ; 1.先刪除 reply 而後刪除 topic 而後刪除 forum 2.反過來刪除的話: 如刪除 forum ,必須設置級聯刪除,不然報錯 .. 12. ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");// 注意,這裏 spring在 初始化時候(無論是J2SE 仍是JavaEE,都會把掃描包裏面註解的類實例化,即調用Service....Action等 的構造方法) 13. "FROM "+clazz.getSimpleName()+"WHERE id IN(:ids)") 拼接 hql語句 不要 忘記 空格 fromForum from Forum 錯誤: ----------- 》node to traverse cannot be null! 14. 泛型 class BaseAction <T> { public BaseAction() { try { // 經過反射獲取model的真實類型 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0]; // 經過反射建立model的實例 model = clazz.newInstance(); } catch (Exception e) { throw new RuntimeException(e); } } } public class ForumAction extends BaseAction<Forum> { // 從這裏看出 通常在繼承狀況下 制定 T的類型 且 仍然 是 BaseAction<Forum> --> BaseAction<T> //在那個類上面指定 ,那個類裏面的方法 就適應 } 15. 泛型 T 始終 報錯 java.lang.Class cannot be cast to java.lang.reflec 範式應該在編譯的時候就指定,而不是運行時。 類級別 的 很像 容器 List<String> list = new ArrayList<String>(); list.add(T t); -------> list.add("必須是String類型");--> 本身指定 16. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'topicService' defined in file [D:\apache-tomcat-7.0.54\webapps\Fenye\WEB-INF\classes\com\wl\fenye\service\TopicService.class]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.wl.fenye.service.TopicService]: Common causes of this problem include using a final class or a non-visible class; nested exception is net.sf.cglib.core.CodeGenerationException: java.lang.ClassCastException-->java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType 此錯誤 緣由仍是 泛型 T 的問題 , 除了 必須使用繼承 的方式制定 T 的類型(在編譯階段 ), 且 必須 Action 調用的時候 也制定 才能夠 @Resource // 注入後Service 不須要在寫 setter getter 方法 private ForumService<Forum> forumService; @Resource private TopicService topicService; // ------------------ > 錯誤 !!!!!!!!!!! 17. 這個錯誤 感受 有點奇怪 --------> abstract BaseDaoImpl implements BaseDao 時候 ,裏面的方法必須 加上 @Override 不然 下面 各方面的繼承 居然不認 --------> 注意 18. 嚴重: Servlet.service() for servlet [CartAction] in context with path [/ShopingCart] threw exception java.lang.NullPointerException at com.wl.shopping.Action.CartAction.doGet(CartAction.java:28) cartService.findAll(); //說明沒有 new對象 即 使用此方法 private CartService cartService; private CartService cartService = new CartService(); 普通的jsp編程 中忘記 new對象 (混淆 了 ssh 編程 ,ssh中 被spring管理後就不須要 實例化 了 ) 19. 注意 getcurrentSesison()的 使用 ,必須在配置 @Transactional註解(時候,事務管理器存在狀況下才可使用) 也就是 Service被Spring管理 ,Service裏面注入了 SessionFactory, 且 被@Transactional註解 public class SpringTest { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); @Test public void saveUser(){ SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory"); User user = new User(); user.setPassword("1234"); user.setUsername("wangli"); sessionFactory.openSession().save(user); 20. Java public class UserServiceImpl extends DaoSupportImpl<User> implements UserService {} 不要寫反 --------------> public class UserServiceImpl implements UserService extends DaoSupportImpl<User> {} 21. private Department department = new Department(); // ----------->注意,返回這裏的時候,除非是從數據庫中查詢則會返回一個對象,不然必定要本身實例化,且不須要 setter getter方法,不適用ModelDriven則需setter getter 22. 因爲ActionContext.getContext().put("forumList",forumList); //forumList在遍歷的時候 <c:forEach var = "forum" <a href="forum_show.action?id=${id}" /> ---->id 是能夠直接從 forum中取出來的. 23.分頁時候,一直顯示在第一頁不變是由於忘記在Action中 pageNum pageSize生成 getter setter方法 24. 作權限時候,比較複雜: 1. 準備權限的數據庫數據,映射實體: user, role(能夠暫時使用admin測試,後面再分配) ,privilege 2.使用監聽器初始化 ,把頂級權限 數據放入application中 3.left.jsp 中遍歷topPrivilege; 並增長user實體方法,hasPrivilegeByName(); 4.攔截器的使用 25.下面的代碼片段: xmlns="http://www.w3cschool.cc" 規定了默認命名空間的聲明。此聲明會告知 schema 驗證器,在此 XML 文檔中使用的全部元素都被聲明於 "http://www.w3cschool.cc" 這個命名空間。 一旦您擁有了可用的 XML Schema 實例命名空間: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 您就可使用 schemaLocation 屬性了。此屬性有兩個值。第一個值是須要使用的命名空間。第二個值是供命名空間使用的 XML schema 的位置: xsi:schemaLocation="http://www.w3cschool.cc note.xsd" 26. Cannot forward after response has been committed if(code.toLowerCase().equals(sessioncode.toLowerCase())){ //、 --------------->數據庫中驗證 User u = new User(); u.setUsername(username); u.setPasswd(passwd); u = userSerivce.checkUser(u); // -------->給 u 從新賦值 if(u!=null){ request.getSession().setAttribute("loginuser", u); }else{ request.setAttribute("msg", "您登錄的用戶名或密碼錯誤!!"); response.sendRedirect("/eshop/index.jsp"); return ; //-------------->注意這裏必定要加上return,不然代碼還會向下執行 } request.getRequestDispatcher("/WEB-INF/jsp/userAction/list.jsp").forward(request, response); }else{ request.getRequestDispatcher("/WEB-INF/jsp/userAction/error.jsp").forward(request, response); } 27.String sql = "insert into goods(goodsName,goodsPrice,goodsAllNum,publisher,photo,goodsIntro) values(?,?,?,?,?,?)";不要寫成 ------> String sql = "insert into goods(goodsName,goodsPrice,goodsAllNum,publisher,photo,goodsIntro) values('?','?',?,?,?,?)" 之類的 28. sqlHelper 中 ------>使用 public static ResultSet executeQuery(String sql,Object[] parameters) 而不用 String parameters[]; 29. 查詢使用方法 executeQuery, insert,update 等用 executeUpdate(); 30. 使用mysql 查詢總數量時候,注意必定要 先 // 只有一條記錄 coutRs.next(); ResultSet.next(); -------> count = coutRs.getObject(1); 31. 文件上傳所出現的問題: <form action = "Goods_add" method ="post" enctype="multipart/form-data"> made:<input type="text" name="made"></input> goodsName:<input type ="text" name="goodsName"/><br/> goodsPrice:<input type ="text" name="goodsPrice"/><br/> goodsAllNum:<input type ="text" name="goodsAllNum"/><br/> file:<input type ="file" name ="photo"/><br/> goodsIntro:<textarea rows="5" cols="5" name="goodsIntro"></textarea> <input type="submit" value = "提交" /> </form> -------------> enctype="multipart/form-data" 表示使用二進制流的形式,後臺request.getParamenter();徹底獲取不到值 了 方法: 直接在 action? 後面附帶參數或者 使用JavaScript動態在action後面賦值參數 32. java.sql.SQLException: Can not issue data manipulation statements with executeQuery(). 緣由: 插入數據 sql語句錯誤 , executeQuery改成executeUpdate() 33. EL 表達式 取不到值session中user 值 的問題 : if(!rs.next()){ System.out.println("-------->無憂此用戶<--------"); return null; } rs.beforeFirst(); // 遊標沒有重置 ,致使原本根據用戶名和密碼查詢到一個用戶,卻因爲rs.next(); 而後第二次rs.next(); 致使 rs.getInt(1); rs.getString(2); 等等 都是null 值 while(rs.next()){ user.setUserid(rs.getInt(1)); user.setUsername(rs.getString(2)); user.setTruename(rs.getString(3)); user.setPasswd(rs.getString(4)); user.setEmail(rs.getString(5)); user.setPhone(rs.getString(6)); user.setAddress(rs.getString(7)); } 34. java.lang.NoSuchMethodException: com.wl.mini.UserAction.{1 }() <action name="userAction_*" class="userAction" method="{1 }"> 改成--> 連空格都不能有 <action name="userAction_*" class="userAction" method="{1}"> 35. <c:forEach var="goods" items="${mycart.cart }"> <tr class="mytr"> <td class="goodsId">${goods.goodsId }</td> <td>${goods.goodsName }</td> <td>${goods.goodsPrice }</td> <td>${goods.goodsNum }</td> <td><button onclick="removeGoods()">刪除</button></td> <td><button>修改數量</button></td> <td><button>更新數據</button></td> </tr> </c:forEach> 在遍歷時候 沒此迭代的數據 千萬不要寫成 id="" (不然id就不惟一了) 寫成 class 36. else if(flag.equals("logout")){ System.out.println("--------------->註銷admin登陸"); request.getSession().removeAttribute("user"); response.sendRedirect("admin"); // 重定向到此 action中 // 注意下面的不能再次使用請求轉發了,不然參數仍然帶着,繼續登陸 // request.getRequestDispatcher("/WEB-INF/jsp/admin/login.jsp").forward(request, response); } 37.. frameset 遇到的問題: 這是一個常常遇到的問題,特別是在用frame框架的時候,解決辦法也很簡單: window.location 改成 top.location 便可在頂部連接到指定頁 或window.open("你的網址","_top"); Response.Write("<script language='jscript'>window.open('" + Request.QueryString["url"].ToString() + "','_top');</script>"); 38. tomcat7 存入中文cookie時候回報錯; java.lang.IllegalArgumentException: Control character in cookie value or attribute. 還上Tomcat7以後再次測試,異常終於重現,經過調試發現因爲在登錄的時候須要使用Cookie來保存用戶的登錄信息,而Tomcat7中cookie對中文的支持不夠好,直接將中文字符的登錄名寫入cookie時會引起異常,因此須要先轉碼,纔不會出現上述的異常。 正常寫入不算完事,由於此時後臺解析cookie值的代碼取到的值是亂碼,使用cookie是沒法登錄的;這就須要在後臺驗證cookie登錄時,得先將取獲得的cookie值轉成UTF-8格式以後在對比數據庫確認登錄信息是否正確。 頁面JS轉碼:encodeURI('你是'); 後臺Java解碼:URLDecoder.decode("%E4%BD%A0%E6%98%AF","UTF-8"); 39. 問題: mysql 數據刪除後 不會從最大自增的問題; 刪除的數據id 空着不用; 40. 啓動項目時報如下異常 嚴重: Exception loading sessions from persistent storage java.io.EOFException 遇到上述異常,刪除Tomcat裏面的work\Catalina\localhost下的項目文件內容便可解決. 緣由是因爲項目測試中class文件或者其它文件更新過頻繁。 以前常常碰到頁面修改後,從新發布的項目頁面仍是原樣,無論刪掉tomcat/webapps/發佈的項目仍是從新部署,都沒法顯示修改後的效果, 可是其餘頁面修改後又能顯示。真是莫名其妙。 如今才知道是tomcat的問題,一樣刪除Tomcat裏面的work\Catalina\localhost下的項目文件內容便可解決. 41. 對比 struts2 和 eshop(jsp 版本)程序中的分頁狀況 ; 看來 使用 push(pageBean的方式);只能使用struts2的 OGNL表達式了 request.setAttribute("pageBean",pageBean); // 則可使用 jstl 遍歷比較方便 42. No result defined for action and result input Posted on 2009-01-06 21:41 沙漠中的魚 閱讀(23055) 評論(20) 編輯 收藏 所屬分類: 開源框架 這是struts2的一個攔截器報的錯誤,當你的form中的數據有問題,好比說 <input type="text" name="receiverLoginID" value="<%=name%>"/> 當 name值爲NULL時,就出這個錯了,因此你能夠在當前頁面加入如下標籤 <div style="color:red"> <s:fielderror /> </div> 它就會顯示攔截器的錯誤,並在struts的XML中對應action里加如 <result name="input">/AddProducts.jsp</result> 讓他把錯誤返回到該頁面就能夠了 struts2中默認的是若是錯誤發生就跳轉到input 我常犯得錯誤是: 工具使用 value=${topic.id } 沒有 " "; id:<input type="hidden" name="id" value="${topic.id }"/> 這種錯誤經常是表單 數據有誤 43. java.lang.OutOfMemoryError: PermGen space 內存溢出了 preferences ------ java ---> installJres ------> edit ->設置參數 在Eclipse中的話設置jvm參數便可 -Xms 512m -Xmx 512m 44. <s:form action="forum_show?id=%{id}"></s:form> 不能寫成 <s:form action="forum_show?id=${id}"></s:form> // struts2 標籤體裏面 不支持 EL表達式 <form action="forum_show.action?id=${id}" method="post"> </form> 45. 內存溢出 jre裏面配置 便可 -Xms512m -Xmx512m 46. User user = userService.getById(model.getId()); user.setAvatar(getUploadFileName()); // 把名字存入數據庫 , 注意,更新數據,必定須要先從數據庫中取出來,傳過來的model並不能修改更新 userService.update(user); return "toList"; } 47. strut2 上傳文件 File upload, 不須要 File upload = new File(); // 不需 實例化,可是上傳時候 必定不要 和實體User ..等的字段如 String photo, 而上傳文件 <input type="file" name="photo" 重名不然出錯 48. String root = ServletActionContext.getServletContext().getRealPath("/images/user_photo"); // 注意獲得的是目錄/images/user_photo 和/images/user_photo/同樣的結果 49. 關於eclipse buildpath的jar包不能複製到tomcat lib下的問題 建了一個web項目,須要引入mysql的jar包,用buildpath方式引入到項目,啓動tomcat怎麼也不能把這個jar複製到tomcat的lib目錄下,因此確定不行的,只能手工複製到lib中,後來找到一個解決方法。 項目上點擊右鍵--》properties--》DeploymentAssembly--》選擇你要複製到lib下的libraries就行 50. SpringMVC 的標籤庫 也能夠回顯 如表單標籤 ,同struts同樣 如 : <form:form action="emp" method="POST" modelAttribute="employee"> <form:input path="lastname"/> // 至關於 <input type="text" name="lastname" value="${employee.lastname}"/> jstl 沒有此屬性,不會報錯,頂多不顯示 <form:input path="password"/> </form:form> // 這些標籤會回顯 ,可是注意了,和struts2同樣,這些屬性 -->存在才行 Action 中 !! ActionContext.getContext().put("employee",employee); Controller map.put("employee",employee); 51.. Android開發出現的錯誤 ,老是報空指針,緣由是 低級的,把setContentView(R.layout.two); 放在了 Button button實例化的 後面 setContentView(R.layout.two); Button spotBtn = (Button) findViewById(R.id.showSpot); Button bannerBtn = (Button) findViewById(R.id.showBanner); 52. junit Test 必須有一個 默認的無參構造函數 53. // InputStream fis = Main.class.getClassLoader().getResourceAsStream("rule.properties"); InputStream fis = new FileInputStream("src/rule.properties"); 這兩個文件的路徑是不一樣的 ,一個在 bin 下面,一個在 src下面 54. 本身編寫的爬蟲程序 ,發現個別網站採集不了,緣由是 可能網站的防盜鏈,經過非本站跳轉訪問的連接所有跳轉 到錯誤頁面,方法: httpGet = new HttpGet(url); httpGet.setHeader("Referer","http://baiduyun.57fx.cn/album-detail-id-26796.html"); HttpResponse httpResponse2 = httpclient.execute(httpGet); 加上頭信息 便可,網站必須 有來源頁.訪問前的網頁 55.The request sent by the client was syntactically incorrect. SpringMVc 參數問題,表單對應字段如 <input type="text" name="age" value="aa"/>錯誤!! 不能將 字符串付給 控制器中 POJO User的 int age,(改成Integer應該沒有錯,Integer接受字符串 "aa" 應該被變爲NULL接收了 ) 56. 數據庫問題,insert into user(name,age) values("wangli","18"); 其中 name varchar(20),age int 類型 測試發現jdbc和mysql控制檯執行此語句都成功了,緣由是數據庫中會自動轉換String類型爲 其 設置的字段。可是不能寫成 insert into user(name,age) values("wangli","18abc");之類的,不然轉換出錯了! 這種現象 很是相似 Struts2 和SpringMVC中(內置)類型轉換器的做用 55. java 根據 url 讀取網頁內容 遇到403問題 分類: JAVA 2014-11-22 15:17 693人閱讀 評論(0) 收藏 舉報 [java] view plaincopy在CODE上查看代碼片派生到個人代碼片 URL url = new URL("****************"); StringBuffer html = new StringBuffer(); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("User-Agent", "Mozilla/31.0 (compatible; MSIE 10.0; Windows NT; DigExt)"); InputStreamReader isr = new InputStreamReader(conn.getInputStream(),"utf-8"); 設一下請求屬性就好了: [java] view plaincopy在CODE上查看代碼片派生到個人代碼片 conn.setRequestProperty("User-Agent", "Mozilla/31.0 (compatible; MSIE 10.0; Windows NT; DigExt)"); 56. 小問題,jsoup讀取網頁源代碼,提取後,不知道爲何都把<br/>換成了<br>,雖然正確,可是生成PDF的話,卻不能生成,由於其嚴格的形式 連<img 標籤都被它修改,操蛋的事情<img ../>被修改成<img ..> ,fuck 57. 在使用本身的字符串截取時候,遇到 忽然不能截取的狀況,可能緣由就是本身 給字符串加上+\r\n的緣由,在沒有寫入文件中前,我直接用正則匹配此字符串,是截取不了的,蛋疼的錯誤都被我遇到了 反過來再次從寫入的文件中讀取後再次截取,估計又成功了。 while((line=reader.readLine())!=null){ html.append(line+"\r\n"); } jiequ = matcher.group(0); // 0 就表示第一個 匹配到的字 URL url = new URL("http://blog.csdn.net/lmj623565791/article/details/37992017"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("User-Agent", "Mozilla/31.0 (compatible; MSIE 10.0; Windows NT; DigExt)"); InputStream in = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, "utf-8")); String line = ""; StringBuffer htmlbuffer = new StringBuffer(); while((line=reader.readLine())!=null){ htmlbuffer.append(line+"\n"); //------------------->zhuyi ,dont't \r\n le } String html = htmlbuffer.toString(); 這個問題最終仍是不能解決,只能換成httpclient了 58. Android 使用HttpClient 中遇到的問題 1.主線程裏面不能鏈接網絡 2.使用handler時候,注意 Looper.prepare(); ... handler ... Looper.loop(); 3. 啓動 含 handler 的 子線程 start (); 59. 下面將介紹TextView實現滾動的三種方式: 一、嵌套在ScrollView或者HorizontalScrollView中 垂直滾動: <scrollview android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical"> <textview android:text="..."/> </scrollview> 水平滾動:使用標籤<horizontalscrollview></horizontalscrollview> 二、設置ScrollingMovementMethod 代碼中添加: TextView.setMovementMethod(new ScrollingMovementMethod()); XML中配置: android:scrollbars="vertical" 三、使用Scroller來自定義TextView 4.小顯示條 Toast顯示時候,別老是忘記寫 .show();方法 60. jar 包 版本問題 error at ::0 can't find referenced pointcut myPointcut 錯誤緣由:若是你用的JDK版本是1.6的話,而引用的aspectjrt.jar是spring-2.0中包含的jar包的狀況下就會報這樣的錯誤。 解決方法:就是下載最新的aspectjrt的jar包便可,或者使用spring3.0中的包!在這邊我使用的aspectjrt.jar竟然是1.1的 因此出錯了 改成aspectj最新版aspectj就沒問題了 61.測試發現,某個方法裏面沒有對於異常沒有 直接處理的,不管在哪裏拋出的,當前方法都會直接中止掉,包括 try catch{throw new RuntimeException()} 可是finally{代碼還會執行} 62. runtime異常是運行是異常,若是拋出runtime異常,程序會中止運行,通常異常拋出程序不會中止, 甚至有事若是程序作了try catch 處理,catch塊裏是空的,即便程序發生異常,也會繼續運行, 且不能發現程序發生異常,因此在寫程序的時候不建議寫空的catch塊,不便於程序的維護; 而runtime異常一旦拋出程序會即刻中止運行 若是 咱們 try { File f = new File("H:/test.jsp"); FileInputStream fis = new FileInputStream(f); } catch (Exception e) { throw new RuntimeException("文件沒有找到"); } System.out.println("------>此句不會再次執行"); 運行時異常 若是在函數內被拋出,在函數上不須要聲明。 不聲明的緣由:不須要調用者處理,運行時異常發生,已經沒法再讓程序繼續運行,因此,不讓調用處理的,直接讓程序中止,由調用者對代碼進行修正。 Runtime exception,也稱運行時異常,咱們能夠不處理。 當出現這樣的異常時,老是由虛擬機接管。好比:咱們歷來沒有人去處理過NullPointerException異常, 它就是運行時異常,而且這種異常仍是最多見的異常之一。 63. hibernateValidater 中的 @NotNull無效,使用@NotEmpty代替 @NotEmpty(message="用戶名不能爲空!!") 64. 一直出現一個很蛋疼的問題,Hibernate忽然不能自動更新表和建立表了 緣由: @Lob @Column(name="longContent", columnDefinition="CLOB", nullable=true) // mysql 可能沒有這個字段 clob的緣由吧 private String longContent ; 可是 @Lob @Column(name="pics", columnDefinition="BLOB", nullable=true) //可省略,可是不指定 根據第一次生成類型,多是 shortblob blob longblob @Basic(fetch = FetchType.EAGER) private byte[] pics ; //圖片文件 卻能夠 65. SpringMVC @requestBody 返回字符串亂碼的解決方法 緣由: 字符串轉換和對象轉換用的是兩個轉換器,而String的轉換器中固定了轉換編碼爲"ISO-8859-1" 1.修改 <mvc:annotation-driven>爲 <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> 2.方法二: 親測: @ResponseBody //Response Headers Content-Type:application/javascript(js文件) Content-Type:text/html;charset=utf-8 @RequestMapping(value="/testJson",produces="text/html;charset=utf-8") // produces 結果,產品 (這個註解的屬性至關於給Response設置返回信息,而@Response註解沒有屬性能夠設置,故只有在這裏設置了) public String testJson() throws JSONException{ System.out.println("--------->testJson-org"); JSONObject json = new JSONObject(); JSONArray jsonArray = new JSONArray(); // json 的格式 很相似 Java的Map 集合 ,故能夠方便的 轉換 JSONObject object1 = new JSONObject(); object1.put("name", "王立"); object1.put("password", 1234); JSONObject object2 = new JSONObject(); object2.put("name", "張華天"); object2.put("password", 124551); jsonArray.put(object1); jsonArray.put(object2); json.put("users", jsonArray); System.out.println("------------>"+json.toString()); return json.toString(); } 注意返回字符串就用這種方法就能夠了 測試 : 雖然SpringMVC支持原生 request,response 可是使用 public String testJson4(HttpServletResponse response,Writer writer) throws JSONException, IOException{ response.setContentType("text/html;charset=utf-8"); ... writer.write(jsonStringer.toString());始終解決不了亂碼問題;Fuck;不要令 本身那麼變態 66. 出現找不到類 通常不是少 jar,就是jar衝突 如: hibernate-jpa-2.1-api-1.0.0.Final.jar 和j2ee6 library中的javax.persistence.jar衝突 一直運行都 報錯,可是最後我把 j2ee6 library remove而後從新引入,又不報錯了,不能說什麼,只能說犯抽. 個人運氣真是無語形容了,Fuck 這兩個包使用的是jpa的註解(如@Entity @Table等等 ) 67. 我使用最新版hibernate的問題,裏面包含了不少了,不在須要sl4j-log4j.jar sl4j.api.jar 只需log4j便可 估計hibernate裏面已經有處理日誌的類了 68. 故,使用jar包,爲了安全,咱們一個也不要用myeclipse的,連javaee1.6 也不要 69. 測試發現 jsp 的pageEncoding="utf-8" 指定的是文件的編碼格式(程序也會以此種格式編譯) 若是 pageEncoding="utf-8"格式和 文件的編碼格式不一致也會報錯,使用myeclispe能夠自動轉換 70. import org.springframework.transaction.annotation.Transactional; 要相信本身,若是認爲本身實在沒有錯 就須要看 包 是否導入錯誤了 甚至註解導入錯誤了,好比我在hql查詢 時候,徹底正確可是查詢結果一直爲null 原來是不當心導成 javax.persistence.Transactional (但我發現導成這個平時也沒錯啊,只有一個測試出錯,奇怪) 71.最蛋疼的 bug,哎,終於找到了,不細心啊 AOP的罪過 發現1: 我配置了AOP,攔截的方法正好是com.gs.oa.service.PrivilegeService.findTopList()方法 ,然而 AOP裏面都沒有寫返回值,這是很是不對的,AOP把將要 return的 "返回值" 直接扔掉了 <aop:pointcut expression="execution(public * com.gs.oa.service.*.*(..))" id="pointcut"/> 發現2:只有在PrivilegeService類裏面寫的方法才被攔截到 ,父類繼承的方法 都沒有被攔截 72. QQ側滑 使用 SlideMenu開源組件時候,須要刪除咱們 創建項目的 android-support-v4.jar包 由於,開源組件裏面已經有一個了 73. 注意 咱們登陸的時候 放入session.setAttribute("user",user); user 不要設置 id值哦,不然 ${user.id } 登陸後一直都不會爲null Struts2這點比較好,${id} 只從值棧中取出 request域中 @RequestMapping(value="/edit",method=RequestMethod.POST) public String edit(User user){ System.out.println("-------更新-------"); User u = userService.getById(user.getId()); u.setUsername(user.getUsername()); u.setPassword(DigestUtils.md5Hex(user.getPassword())); userService.update(u); return "redirect:/user/list"; } <form action="user/${user.id==null?'add':'edit' }" method="post"> <input name="id" type="hidden" value="${user.id }"/> <input type="hidden" name="_method" value="${user.id==null?'PUT':'POST' }"/> <input type="text" name="username" value="wangli"/> <input type="password" name="password" value="123"/> <input type="submit" value="提交"/> </form> 74. create table user(id integer primary key autoincrement,name varchar(20),blognum int) 測試發現 : autoincrement 只能寫在 integer類型上面,其餘類型int也報錯,注意 int 類型放在主鍵上面也不會自動增加 類型聲明爲id integer primary key 就會自動增加,無需寫 autoincrement了 測試發現 sqlite select Name from user; 和 select name from user; 結果同樣 ,故字段和mysql同樣是不區分大小寫的 76. 查詢出來的cursor的初始位置是指向第一條記錄的前一個位置的 cursor.moveToFirst()指向查詢結果的第一個位置。 通常經過判斷cursor.moveToFirst()的值爲true或false來肯定查詢結果是否爲空。cursor.moveToNext()是用來作循環的,通常這樣來用:while(cursor.moveToNext()){ } cursor.moveToPrevious()是指向當前記錄的上一個記錄,是和moveToNext相對應的; cursor.moveToLast()指向查詢結果的最後一條記錄 使用cursor能夠很方便的處理查詢結果以便獲得想要的數據 77. handler.post(new Runnable() { run(){ 裏面方法等同於主線程,故這裏不要訪問網絡 } 78. 解決第三方 lib 導出 v4包重複的解決辦法 :能夠刪除本身的,也能夠 複製第三方lib下面的而後 粘貼覆蓋 本身的 便可