JAVA 大作业——DAY 3
进度日记:8.31
上午:上午修改了aboutUs页面。
想把后台的数据放到数据库中,发现要安装SQL太麻烦了。
偶然发现mac自带了SQLite3,然后学习了用命令行使用SQLite3,简单的操作:语法http://www.oschina.net/question/12_53183 简单语法和指令http://blog.csdn.net/linchunhua/article/details/7184439
学习把数据库用hibernate连进去。起初GG帮我找到了Driver需要的jar包,建立好了Driver。但因为myeclipse不能search到SQLite3的dialect,所以最终还是连接数据库失败了:http://blog.csdn.net/fxk2006/article/details/4577418 myeclipse配置hibernate
不过直接写代码连接上了数据库,其实写代码也可以直接新建数据库,这里是超级入门的代码,我后来所有的数据库连接都是基于此代码:http://wenwen.soso.com/z/q108059942.htm “在myEclipse中用JDBC连接MySQL数据库,用Java文件怎么写”
发现myeclipse自带了Derby,而且可以连接上,但放弃尝试,决定使用SQLite3。
中午:基本写好了后台的数据库
下午1点:吃饭
下午2点:后台的数据库大概建好了,写了一个初始化数据库的java类。
基于上面的数据库,可以读写数据了。
开始学习动态的网页和js,我从login的代码仔细学起,其中:
1 <!-- 功能是一开始就选中username的框 --> 2 <script type="text/javascript"> 3 setTimeout(function() { 4 try{ 5 var z=document.getElementById('username'); 6 z.focus(); 7 z.select(); 8 } catch(e){} 9 },1); 10 </script>
意外发现form可以返回一些url信息:http://www.blabla.cn/html_tutorials/037_html_form.html ,这样就可以把login的信息以url的形式返回去访问servlet了。以下代码能返回/Browser/LoginServlet?userID=...&password=...这个url,servlet可以解析出来。
1 <form id="login_form" name="login_form" action="/Browser/LoginServlet" method="post"> 2 <label>User Name</label> 3 <input id="username" maxlength="64" name="userID" class="text" type="text" /> 4 <div id="username_errors" class="form_errors"></div> 5 6 <label>Password</label> 7 <input id="password" maxlength="64" name="password" class="text" type="password" /> 8 9 <input name="login" value="Sign in" class="super-emphasize" type="submit" /> 10 </form>
接下来就是需要让servlet返回一个网页。(你要相信,你能想到的功能都是能实现的。虽是摸着石头过河,但总是有方法的!)
1 response.sendRedirect(request.getContextPath() + "/login.jsp?Error=1&useridNotFound!");
然后就是让jsp中解析url的信息,来动态地改变html中某些状态的值。(因为我需要登录之后能显示用户名,所以我把“登录”、“注册”两个地方选择性地改成“用户名”、“退出”)。其中request是用来解析url的参数的方法:
1 <script type="text/javascript"> 2 //<![CDATA[ 3 function request(paras) { 4 var url = location.href; 5 var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); 6 var paraObj = {}; 7 for (i = 0; j = paraString[i]; i++){ 8 paraObj[j.substring(0,j.indexOf("="))] = j.substring(j.indexOf("=")+1,j.length); 9 } 10 var returnValue = paraObj[paras]; 11 if (typeof(returnValue) == "undefined"){ 12 return ""; 13 } else { 14 return returnValue; 15 } 16 } 17 var userID = request("userID"); 18 /* ========================================================================= 19 // 用户已经登录,那么显示用户名和退出 20 ========================================================================= */ 21 if (userID != "") { 22 document.getElementById('silo_sign_in').href = null; // 登录-->用户名 23 document.getElementById('silo_sign_in').innerHTML = userID; 24 document.getElementById('silo_get_started').href = "/Browser/LogoutServlet"; // 注册-->退出 25 document.getElementById('silo_get_started').innerHTML = "退出"; 26 document.getElementById('dataStatistic').href = "dataStatistic.jsp?userID="+userID; 27 document.getElementById('dataManager').href = "dataManager.jsp?userID="+userID; 28 } else { 29 document.getElementById('dataStatistic').href = "login.jsp"; // dataStatistic 30 document.getElementById('dataManager').href = "login.jsp"; // dataManager 31 } 32 //]]> 33 </script>
晚上:注册登录什么的页面显示已经没有问题了,剩下3个需要连接数据库的网页了,也是最难的部分。
开始学习表格的设计。又下载了一个网页来看,学到可以让servlet返回一个html到当前页面的某个框里。所以只需要动态更新servlet的response输出的html,猜想可以实现筛选等功能。
收工!