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实现滚动的三种方式:
1、嵌套在ScrollView或者HorizontalScrollView中
垂直滚动:
<scrollview android:layout_width="fill_parent"
android:layout_height="fill_parent" android:scrollbars="vertical">
<textview android:text="..."/>
</scrollview> 水平滚动:使用标签<horizontalscrollview></horizontalscrollview>
2、设置ScrollingMovementMethod
代码中添加:
TextView.setMovementMethod(new ScrollingMovementMethod());
XML中配置:
android:scrollbars="vertical"
3、使用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下面的然后 粘贴覆盖 自己的 即可

java 开发中的debug的更多相关文章

  1. paip.java 开发中web server的选择jboss resin tomcat比较..

    paip.java 开发中web server的选择jboss resin tomcat比较.. 作者Attilax  艾龙, EMAIL:1466519819@qq.com 来源:attilax的专 ...

  2. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  3. Java开发中常用jar包整理及使用

    本文整理了我自己在Java开发中常用的jar包以及常用的API记录. <!-- https://mvnrepository.com/artifact/org.apache.commons/com ...

  4. Java开发中常见的危险信号(中)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  5. Java开发中文件读取方式总结

    JAVA开发中,免不了要读文件操作,读取文件,首先就需要获取文件的路径. 路径分为绝对路径和相对路径. 在文件系统中,绝对路径都是以盘符开始的,例如C:\abc\1.txt. 什么是相对路径呢?相对路 ...

  6. java开发中遇到的问题及解决方法(持续更新)

    摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...

  7. Java开发中常见的危险信号(上)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  8. 完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络]

    完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络] 地址:http://blog.csdn.net/qq_35101189/article/details/53729720?ref=m ...

  9. Java 开发中的对象拷贝

    前言 在 Java 开发中,很多时候需要将两个属性基本相同的对象进行属性复制,比如 DO 转 VO等等. 本文主要介绍自己实现的简易拷贝工具类与 Spring 提供的属性拷贝的对比. Spring 提 ...

随机推荐

  1. (五)agentd端cpu的触发器配置

    配置===>模板===>选择对应的模板===> 这里我验证触发器是否有效,定义的触发器的值超过0.01就出发报警,这里我做的是最新的T值超过0.01就触发触发器 验证,说明触发器触发 ...

  2. [mysql] 添加用户,赋予不同的管理权限

    增加新用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数 ...

  3. php获取rl完整地址

    /** * 获取url完整地址 * @author 梁景 * @date 2017-04-27 * @return */ function getUrlInfor() { $sys_protocal ...

  4. asp.net中利用JSON进行增删改查中运用到的方法

    //asp.net中 利用JSON进行操作, //增加: //当点击“增加链接的时候”,弹出增加信息窗口,然后,在窗体中输入完整信息,点击提交按钮. //这里我们需要考虑这些:我会进行异步提交,使用j ...

  5. java应用高内存占用

    在java虚拟机中,内存分为三个代:新生代(New), 老生代(Old).永久代(Perm) 新生代: 新建的对象都存放这里老生代:存放从新生代中迁移过来的生命周期较久的对象.新生代和老生代共同组成了 ...

  6. 22、Django实战第22天:课程评论

    1.编辑course-comment.html 2.编辑courses.views.py class CourseCommentView(LoginRequiredMixin, View): def ...

  7. CentOS7安装bind域名服务

    安装Bind Chroot DNS 服务器 yum install bind-chroot bind -y 拷贝bind相关文件,准备bind chroot 环境 cp -R /usr/share/d ...

  8. 小程序使用npm模块(引入第三方UI),报错的多种解决办法。

    前言引入第三方模块时,我遇到了很多坑. 首先是微信.第三方模块的文档描述不清楚.其次.搜索到的博客,大部分是抄的文档 / 相互转载抄袭.作用有限. 于是,我自己做了各种条件下的测试.解决各种情况的引入 ...

  9. [BZOJ 1801] Chess

    Link: BZOJ 1801 传送门 Solution: 一眼看过去又像是状压$dp$的经典模型…… 但此题$n,m\le 100$ ,直接跑状压只有50分 此时要发现这道题的特点:每行/列不能放置 ...

  10. [Codeforces 30D] Kings Problem

    Brief Intro: 有n+1个点,其中n个点在X轴上,求从第k个点出发最短的汉密尔顿路径 Solution: 分类讨论+逐个枚举 设dist(i)是第i个点到n+1的距离 cal1(l,r)是n ...