@一贤不穿小鞋
1.web项目名上报红色感叹号
- 错误原因:这是因为包冲突或包导错了导致和异常.
- 解决方法:选中项目名->Build path->Configure Build path->libraries->选中报红X的包移除
2.Web项目名上报戏色X,项目中又没有那个类报错.
- 错误原因:项目损坏.
- 解决方法:重新建一个项目,将原项目包和类全部复制过来就可.
3.项目一发布,tomcat就报错.
- 错误原因:编译器或tomcat或代码冲突
- 解决方法:将以前运行成功的项目用tomcat重新发布,如果不能正常运行,说明tomcat坏了,重新换个tomcat;如果能正常运行,说明tomcat没问题,那你的项目发给其他人发布运行一下,如果其他人能正常发布成功,说明是你的编译器出问题了;如果其他人也不能正常发布你的项目,那就是项目中有代码问题.
4.404错误检查路径.
5.500错误
- 错误原因:代码出错.
- 解决方法:断点调试.
6.java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- 错误原因:tomcat7中cookie只能存ANSCII码,不能存中文.
- 解决方法:将中文进行编码,再存到cookie对象中,从cookie对象取出这个值时,对应解码.
eg:/*记住我*/
//创建cookie对象存数据,存值进行编码
Cookie c1=new Cookie("uname1", URLEncoder.encode(ud.getUname(), "utf-8"));
//设置cookie有效期
c1.setMaxAge(60);
//将cookie通过浏览器存在客户端
response.addCookie(c1);
//获得cookie中数据
Cookie[] cs=request.getCookies();
//声明变量存登录用户信息
String uname2="";
if(cs!=null){
//遍历cookie数组找到存值的cookie对象
for(Cookie c1:cs){
//如果当前遍历的cookie对象c1的key名等于uname1,说明这个对象存的value就是登录用户名
if("uname1".equals(c1.getName())){//取出值时进行解码
uname2=URLDecoder.decode(c1.getValue(), "utf-8");
}
}
}
7.(扩展)中文编码和解码
- 对中文进行编码:URLEncoder.encode(“中文字符串”, “编码”) ;
- 对值进行解码:URLDecoder.decode(“需要解码的字符串”, “编码”)
eg:public static void main(String[] args) throws UnsupportedEncodingException {
//准备一个字符串
String s1="我是千锋人,我爱千锋";
System.out.println("原字符串为:"+s1);
//对字符串进行一次编码
String s2=URLEncoder.encode(s1, "utf-8");
System.out.println("s2:"+s2);
//对字符串进行一次解码
String s3=URLDecoder.decode(s2, "utf-8");
System.out.println("s3:"+s3);
//对字符串进行二次编码
String s4=URLEncoder.encode(URLEncoder.encode(s1, "utf-8"), "gbk");
System.out.println("s4:"+s4);
//对字符串进行二次解码,解码的顺序与编码相反,最后编码的最先解
String s5=URLDecoder.decode(URLDecoder.decode(s4, "gbk"), "utf-8");
System.out.println("s5:"+s5);
}
1.C3P0连接池的优点:
1.1:自动加载配置文件.
1.2:自动创建和释放空闲连接.
1.3:与spring等框架安全结合.
2.C3P0连接池的使用
2.1:导Jar包:c3p0-版本号.jar
2.2:在项目src下放置C3P0配置文件
- 注意:C3P0配置文件只能放在src下才能识别.
- C3P0配置文件名只能是:c3p0-config.xml 或 c3p0.properties
- c3p0-config.xml内容
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/2008myschool</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
</default-config>
</c3p0-config>
c3p0.properties配置内容
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/2008myschool
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.user=root
c3p0.password=root
2.3:创建C3P0连接池直接用
- public static ComboPooledDataSource ds=new ComboPooledDataSource();
总结
1.过滤器
2.监听器(重在理解原理,真正使用在第三阶段)(扩展)
3.项目排错(扩展)
4.c3p0连接池(扩展)