做了一段时间,让我有几点感慨:
(1) 每一次在调试中出现的小小异常就表示了,自己所作的程序里出现了一些问题,
例如这次碰到的
%> <option value='<%=rs.getString("name")%>' <%name=(String)session.getAttribute("name");if(name!=null&&name.trim().equals(rs.getString("name").trim()))
{out.println(" selected=true ");} %>><%=rs.getString("name")%></option>
<%
在option 的value值 为<%=rs.getString("name")%>,可是外面却需要加上一个小括号,因为漏掉了这一点所以我的代码有时候出现错误,因为可能rs.getString("name")是一个字符串,而该字符串里面会出现空格,如果不加引号,字符串不能完整的读取,而引号中的内容在jsp页面里是要被送入服务器的,
而这一部分出现的 >><%=rs.getString("name")%></option>是显示在jsp页面上给用户看的
(2)每做一个东西都会包含很多与它有关的很多技术,在这个过程里,需要不断的学习,不断的应用,这是一个很长久的过程。
(3)在做这个简单的jsp页面的时候,要感觉的一点,jsp页面代码的编写,像servlet提交请求,servlet响应请求,整个过程是否符合java web 逻辑
例如:在
%> <option value='<%=rs.getString("name")%>' <%name=(String)session.getAttribute("name");if(name!=null&&name.trim().equals(rs.getString("name").trim()))
{out.println(" selected=true ");} %>><%=rs.getString("name")%></option>
<%
中,如果我没有检验一下if(name!=null),这句话,servlet会抛出页面为空的异常,为什么会出现这种情况,在没有submit之前,下拉框的内容就已经写完了,在这时servlet还没有返回给jsp页面一个name值,它是空的,所以当执行到此处是,jsp又需要这个值,二者矛盾,不符合逻辑了,所以会出现抛空异常。
(4)另一个是关于重定向的问题,response.sendRedirect()和request.forward() 的用法,根据页面的关系选择使用,前者主servlet会发生跳转,在response.sendRedirect()所在位置后面的程序不会执行,而使用request.forward() 则不会出现这种情况,这是我的一点理解,当然两个函数还有其他的区别。