团队作业(五):冲刺总结(二)
1. 今日任务安排
- 各组员根据昨天认领的任务,学习自己的负责的模块的相关知识,自己上网查询或两两交流学习,主要学习数据库相关、Java后端设计、WEB前端设计如CSS样表语法、JS语法、Jackrabbit等。
- 明确功能实现,主要学习相关功能的实现与应用,主要是JAVA接口的学习。
遇到的问题
1.java连接MySql数据库的方法。参考博客:Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】
2.出现错误java.sql.SQLException: Can not issue data manipulation statements with executeQuery()。
解决:注意sql语句如果是查询,用executeQuery(),要对表产生修改的话则使用executeUpdate();
3.选取前N条数据时,sqlserver数据库用select top n from table order by class desc,而mysql数据库使用select * from table order by class desc limit n;
4.将一张大表分割成几个小表:CREATE TABLE weibo1 SELECT * FROM weibo ORDER BY mid LIMIT 1,3000000;
5.向量的定义。向量初始化不能使用Vector orimid =null,会导致在像该向量添加元素时发生空指针错误。
正确方法:Vector orimid =new Vector();
6.ArrayList和Vector的区别:Vector是同步的, 而ArrayList不是,因为Vector是同步的, 所以它是线程安全的。同样, 因为Vecotr是同步的, 所以他需要额外的开销来维持同步锁, 所以它要比ArrayList要慢(理论上来说);
Vector允许用户设置capacityIncrement这样在每次需要扩充数组的size的时候, Vector会尝试按照预先设置的capacityIncrement作为增量来设置, 而ArrayList则会把数组的大小扩大一倍;如果capacityIncrement设为0或者负值, Vector就会做和ArrayList一样, 每次都将数组大小扩大一倍;
7.execute、executeUpdate、executeQuery三者的区别:
execute是executeQuery和executeUpdate的综合。executeUpdate() 这是 PreparedStatement 接口中的方法,
executeUpdate(String sql) 这是 PreparedStatement 从父接口 Statement 中继承过来的方法executeUpdate() 中执行 SQL 语句需要在创建 PerparedStatement 时通过 Connection 的 prepareStatement(String sql) 方法中写出,因为 PerparedStatement 中的 SQL 语句数据库需要进行预编译和缓存,因此要在创建 PerparedStatement 对象时给出 SQL 语句。
而 executeUpdate(String sql) 是 Statement 中的方法,参数中的 SQL 语句只是提交给数据库去执行,并不需要预编译;
如果 SQL 语句中有 ? 占位符,那么在设置好占位符中的值后,必须使用 executeUpdate() 执行。而 executeUpdate(String sql) 只是提交一个 SQL 语句,且这个语句中不能带有 ? 占位符。
3.今日心得
Jackrabbit
- JackRabbit就是一种面向文档的数据库,它和MongoDB,CouchDB的功能十分接近,优势在于JackRabbit遵从JCR标准,日后可以迁移到其他同样兼容JCR的性能更好的商业解决方案上。
- Jackrabbit(内容仓库)是一个高级的信息管理系统,该系统是传统的数据仓库的扩展,它提供了诸如版本控制、全文检索、访问控制、内容分类、内容事件监视等内容服务。Jackrabbit里面有一个DataStore类,该类有两个实现,DbDataStore和FileDataStore,可以保存元数据和二进制数据。
用于实现传输文件、存储文件等功能
Servlet 表单数据
浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法。
GET 方法
GET 方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用 ? 字符分隔,如下所示:http://www.test.com/hello?key1=value1&key2=value2
GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。如果您要向服务器传递的是密码或其他的敏感信息,请不要使用 GET 方法。GET 方法有大小限制:请求字符串中最多只能有 1024 个字符。
这些信息使用 QUERY_STRING 头传递,并可以通过 QUERY_STRING 环境变量访问,Servlet 使用 doGet() 方法处理这种类型的请求。
POST 方法
另一个向后台程序传递信息的比较可靠的方法是 POST 方法。POST 方法打包信息的方式与 GET 方法基本相同,但是 POST 方法不是把信息作为 URL 中 ? 字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,您可以解析和使用这些标准输出。Servlet 使用 doPost() 方法处理这种类型的请求。
使用 Servlet 读取表单数据
Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析:
-
getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
-
getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
-
getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。
JavaScript
JavaScript中的数据类型其实都是一个个js对象,比如String、Data、Array等等,对象只是带有属性值和方法的数据类型。访问对象的属性值或者方法都只需要用这样的语句即可:var_name.memberName; 下面给出一些对象中的一些属性及其方法:
字符串对象:
字符串(String)使用长度属性length来计算字符串的长度。
字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置,如果没找到对应的字符函数返回-1;
match()函数用来查找字符串中特定的字符,并且如果找到的话,则返回这个字符,如果没有找到则返回null。
replace() 方法在字符串中用某些字符替换另一些字符。
字符串大小写转换使用函数 toUpperCase() / toLowerCase()。