友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

JSP入门教程(DOC格式)-第6部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!


                                   



// page  

Integer countPage = (Integer) pageContext。getAttribute(〃countPage〃);  

if  (countPage == null) {  

    pageContext。setAttribute(〃countPage〃; 1);  

} else  {  

    pageContext。setAttribute(〃countPage〃; countPage + 1);  

}   



这里先从 pageContext 中取出名为 countPage 的整数,因为返回的都是 

java。lang。Object 类型,所以需要强制转换成我们需要的整形。这里取得的变 

量如果不存在就会返回 null,通过判断 countPage == null 来辨别变量是否存 

在,如果不存在就设置为 1,如果存在就进行累加,最后使用 setAttribute() 

方法将修改后的变量值放入 pageContext。  



将其中的 pageContext 换成 request; session; application 就可以操作其他三 

个作用域中的变量。  



在显示这些变量值的时候,我们没有写 

而是使用了{countPage}的形 

式,这种{}的形式叫做 el 表达式,是 jsp…2。0 规范的一部分,tomcat 里正好 

可以使用。  



使用 el 有以下几个好处:  



   1。  代码量小,并且不需要使用尖括号。  

   2。  支持从 pageContext; request; session; application 中取值,它会自 

      动检查四个作用域,不需要特别指定。  

   3。  如果变量不存在,会输出空字符串〃〃,而不是 null,省去了手工判断的 

      工作。  



4。2。 例子:在线列表  



我们做一个新手级的在线用户列表,原理是这样:  



   1。  用户登录,并把登录使用的用户名保存到 session 中,通过 session 中是 

      否存在用户名判断用户是否已登录。  



      session 可以在整个会话过程中保存用户信息,不必每次刷新页面都重新 

      登录。  



   2。  用户登录后,将用户名添加到 application 中的在线用户列表。  



      用户注销时,讲用户名从 application 中的在线列表删除。  



                                38 / 148  


…………………………………………………………Page 39……………………………………………………………

                                                         



          只要服务器还在运行着,application 就会保存所有登录用户的信息,所 

         有用户都可以看到这个在线用户列表。  



可以尝试一下 lingo…sample/04…02/中的例子:  



     1。  进入登录页面,登陆一个用户。  



                                                                                      



     2。  登录成功既看到已登录的用户名,和当前的在线用户列表。  



                                                                                      



     3。  再登录一个用户。  



                                                                                      



     4。  然后就可以看到在线用户列表增加了,可以看到里面包含上次登录的用户 

         和当前登录的用户。  



                                                                                      



         这时,如果第一个用户刷新页面,也会看到在线用户列表中变成两个人。  



                                                   39 / 148  


…………………………………………………………Page 40……………………………………………………………

                                              



                                                                      



    5。  现在任何一个用户点击注销,将返回登录页面。另一个用户刷新页面会发 

        现在线用户列表减少了。  



                                                                      



让我们从登录页面 index。jsp 开始,复习一下目前学到的知识。  



index。jsp 中显示的是用户登录表单,为了显示 index。jsp 中包含的中文,需要 

加上,这里使用的文件 

编码是默认的 gb2312。  



  

    用户名:  

      

      

   



在这个 form 里我们可以输入一个 username 的值,提交的url 是 login。jsp,使 

用 post 方法是为了更简单的解决中文问题。在填写了用户名之后,点击登录按 

钮,将数据提交到 login。jsp。  



login。jsp 中进行的是对用户名的操作,包括获得请求中的用户名,将用户名添 

加到 session 和在线用户列表中。  



  

   



中文编码设置和获得请求参数都已经熟识了。在获得在线用户列表时,先获得 

application 中的 onlineUserList,强制转换成 List 类型。如果 onlineUserList 

并不存在,我们还需要先对它做初始化,并添加到 application 里。这时有一个 

小技巧,因为 onlineUserList 已经放在application 中了,将username 添加进 

去后,不必再使用 setAttribute()也可以达到修改在下用户列表的效果。  



因为此处用到的List 和 ArrayList 都是定义在 java。util 包内的工具类,如果 

不希望写成全类名 java。util。List; java。util。ArrayList 的形式,就需要使用 

做声明,当然也可以写成,具体情况就任君选择了。  



登录成功后,使用 redirect 的方式跳转到result。jsp 页面,result。jsp 页面 

中显示的是当前登录用户和在线用户列表的信息。  



先看一下页面中使用的 jsp 指令(directive),,为了处 

理中文和使用 import,可以把这两部分写在一起。  



显示当前登陆名时,使用了 el 表达式:  



您好:{username} '注销'  

          



显示在线用户列表的时候使用了循环:  



                                   41 / 148  


…………………………………………………………Page 42……………………………………………………………

                                          



  

                  

                      

                  

   



这里的循环体可能会令人感到费解,其实它与下面的写法是等价的:  



     



只需要理解代码的含义就可以了,从 application 里获得 onlineUserList,然 

后循环输出所有的用户名。application 是公用的,所以可以看到每个登录的用 

户。  



点击注销的时候,会跳转到 logout。jsp,这里负责用户注销和从在线用户列表 

去除已登录用户。  



  

  



这次我们从 session 中获得登录名,因为请求中没有包含任何数据。 

session。invalidate()这个方法给我们提供了一条销毁 session 的捷径,不需要 

一条一条删除 session 中的数据,invalidate()会直接销毁 session,session 

里边所有的数据也就消失了。  



在线用户列表的操作很直观,从 application 中获得 onlineUserList,然后 

remove(username)就可以从中去除当前登录用户。最后使用 redirect 跳转到 

index。jsp 这个登录页面。整个应用的流程也就结束了。  



整个应用的功能很单纯,之所以把它叫做“新手级”,是因为它只能用于演示。 

等待用户去点击注销才去操作在线用户列表存在着很大的漏洞,实际使用中,用 

户很可能因为个人或网络原因没有进行注销就退出系统,这样会导致用户列表不 

能删除,就这样一直增长下去。  



                                                          



解决这个问题的方法超出了目前掌握的知识,我们将在后面的章节进行介绍。  



                                      43 / 148  


…………………………………………………………Page 44……………………………………………………………

                                



           第 5 章 结合 javabean 实现 CRUD  



注意  



这里介绍的是在 jsp 中使用自己写的 javabean,不过这种写法也仅仅适用于小 

型应用,只打算学两下 jsp 玩玩的朋友可以到此为止了,完成了这章就不必继续 

下去了,此后难度会加大不少。  



如果你不满足以下任一条件,请继续阅读,否则请跳过此后的部分,进入下一章: 

第 6 章 贴近 servlet。  



   1。  了解如何在 jsp 中使用自定义的 javabean。  

   2。  了解一些 jsp 动作(action)。  

   3。  使用 jdbc 操作数据库。  



5。1。 概念和命名方式  



需要提及的两个名词概念:  



   1。  CRUD 是 Create(创建)、Read(读取)、Update(更新)和 Delete(删除)的缩 

     写,一般应用有这四项也就足够了。  



     我们这里的例子是对联系人信息进行 CRUD 操作。  



   2。  javabean 是把一些操作集合在一起写成一个 java 类,想要进行什么操作 

     直接调用这个类里的方法就行。  



     咱们这里使用 javabean 的地方有两处,一个是链接数据库并进行CRUD 

     操作,另一个把每条数据都写 成一个类。  



对于 CRUD 应用,有一些大家默认的命名来表示不同的操作。  



   1。  list。jsp。读取所有信息并显示到页面上,这个是CRUD 中Read(读取)。  

   2。  create。jsp。进入添加联系信息的页面,等待用户输入信息。  



     save。jsp。接收用户提交的信息,添加到数据库中。  



     这两步对应 CRUD 中的Create(创建)。  



   3。  edit。jsp。进入修改联系信息的页面,等待用户修改信息。  



     update。jsp。接收用户提交的信息,修改数据库中对应的信息。  



                             44 / 148  


…………………………………………………………Page 45……………………………………………………………

                                          



       这两步对应 CRUD 中的Update(更新)。  



    4。  remove。jsp。删除用户选择的信息。这步对应CRUD 中的Delete(删除)。  



下面我们将按照用户浏览的顺序对这些页面进行介绍。  



5。2。 Read(读取)  



启动服务器,访问 http://localhost:8080/05…01/就会看到联系信息列表。  



                                                                               



看一下 05…01 目录里边的7 个 jsp 页面,其中 6 个页面都已经介绍了,只剩 

index。jsp。  



index。jsp 是 tomcat 默认的索引页面,在用户访问 

http://localhost:8080/05…01/的时候会自动执行 index。jsp,但我们更希望用 

户能直接进入 list。jsp 页面看到所有的联系方式,所以在 index。jsp 里使用 

forward 跳转到 list。jsp。  



  

返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!