java 開發中的debug

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下面的而後  粘貼覆蓋 本身的 便可
相關文章
相關標籤/搜索