上星期做了一个小项目,有新闻,留言,上传下载。编码阶段确实遇到了一下小麻烦,不过都解决了,有的也不知道是什么原因,反正只知道解决了,做一下笔记。
1.更改数据库字段 alter table student change 老字段 新字段 新字段类型 not null;
2.修改 mysql 中的my.ini文件 可以修改默认字符编码 default-character-set = latin1
3.使用jdbc操作mysql数据库时,为了在数据库中正常显示中文,url="jdbc:mysql://localhost:3306/数据库名/useUnicode=true&characterEncoding=gb2312"
4.配置Tomcat文件夹中server.xml :
<Context path="/news" docBase="C:\workspace\news\WebRoot" reloadable="true"/>
不需发布项目到Webapps里,但需要将mysql-connentor-java-5.0.4.jar拷贝至Tomcat/lib文件夹下,但这样可能会引起标签异常。
5.select * from users order by userid desc limit 1 查最后一条记录
6.jsp页面要和mysql使用相同的编码方式,要用gb2312,都用gb2312.
7.现在要上传文件了,表单必须进行封装,因为传递的不再是普通的文本数据,那么表单的封装需要通过
enctype="multipart/form-data"
上传步骤:
1. 实例化jspsmartupload对象
2.初始化上传的操作
3.准备上传
4.保存文件
8. 在Servlet中获取pageContext的方法
PageContext context = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8*1024, true);
一共七个参数:
第一个参数是传递一个Servlet,在servlet中传递this就可以了;
第二个和第三个参数是request与response不多说明了;
第四个参数是发生错误后的url路径地址,如果没有可以键入null;
第五个参数是是否需要session,这里可以写入true;
第六个参数是缓存大小,我们用了8*1024;
第七个参数是是否需要刷新,键入ture;
9.tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
没有妥善处理好的原因。
具体的原因就是
在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后
有一段这样的代码
finally {
if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
}
这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和
response.getOutputStream()相冲突的!所以会出现以上这个异常。
然后当然是要提出解决的办法,其实挺简单的(并不是和某些朋友说的那样--
将jsp内的所有空格和回车符号所有都删除掉),在使用完输出流以后调用以下两行代码即可:
out.clear();
out = pageContext.pushBody();
10. jspsmartupload的getRequest()必须在 jspsmartupload.upload()执行了以后才能调用。因为upload()是准备上传,封装好了表单。
11.select * from users order by userid desc limit $startPosition , $length 查询用户表,按userid降序排列,$startPosition为起始位置,$length为查询的长度