仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1641|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页编程之JBuilder2005实战JSP之切换把持

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:34:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!js|把持因为在login.jsp的表单中经由过程action属性指定switch.jsp为呼应的JSP文件,当用户在login.jsp当选定登任命户,输出暗码提交表单后,客户端将向服务器发送一个HTTP哀求,服务器即挪用switch.jsp来呼应这个哀求。

  表单顶用户名和暗码两组件的数据将经由过程HTTP哀求传给服务器的switch.jsp,服务器将这些信息封装在request对象中传给switch.jsp,以是switch.jsp可经由过程request.getParameter(StringparaName)来猎取这两个值。

StringuserId=request.getParameter("userId");
Stringpassword=request.getParameter("password");
  试想假如login.jsp的表单有10个以上的数据组件,则在switch.jsp中必需经由过程响应数量的request.getParameter()办法猎取其值。别的,假如这些数据不是字段串范例,而是整数或浮点数,因为request.getParameter()办法前往的值都是String,还必需举行范例的转换,这类事情不仅单调有趣,还简单堕落。

  JSP同意你经由过程Bean以映照的体例吸收网页表单的数据,Bean以这个划定规矩映照表单的数据:Bean属性名=表双数据组件名,也即一切和Bean属性名不异的表双数据域被主动添补到Bean中,而且完成数据范例的转换。如login.jsp的表单中有两个数据组件,一个名为userId,另外一个是password,界说一个具有不异名的userId和password属性的User.javaBean,这个Bean将能够主动吸收表单中的两个数据组件值。

  编写User.java

  我们先来编写这个User.java的Bean,在工程中创立User.java,其代码以下所示:

  代码清单7User.java

1.packagebookstore;
2.
3.publicclassUser
4.{
5.privateStringuserId;//用户Id
6.privateStringpassword;//暗码
7.privateStringuserName;//用户名
8.publicStringgetPassword(){
9.returnpassword;
10.}
11.publicStringgetUserId(){
12.returnuserId;
13.}
14.publicStringgetUserName(){
15.returnuserName;
16.}
17.publicvoidsetPassword(Stringpassword){
18.this.password=password;
19.}
20.publicvoidsetUserId(StringuserId){
21.this.userId=userId;
22.}
23.publicvoidsetUserName(StringuserName){
24.this.userName=userName;
25.}
26.}
  除userId和password两属性名,另有一个用户名属性userName,这个属性的值不是从login.jsp的表单吸收的,当用户名暗码考证准确后,从数据表T_USER表中猎取用户名保留在这个属性中,以便其他中央援用,保留并编译这个类。

  提醒:

  你能够经由过程JBuilder的BeanExpress工具疾速创立User.java的代码,在一样平常情形下,你应当经由过程BeanExpress来创立Bean的属性,如许不仅主动发生get/set的属性会见办法,还包管了Bean定名标准。编写页面程序

  在创立User.java的Bean后,我们动手创立switch.jsp,在switch.jsp中援用这个Bean。

  经由过程File->New..->Web->双击JSP图标启动创立JSP导游。

  1.指定swith.jsp名字


0指定switch.jsp的名字
  一向按Next到导游的第3步。

  2.援用User.javaBean


1指定JSP中援用Bean
  点击AddBean...按钮,弹出SelectaClass对话框,在对话框当选择bookstore.User类,以下图所示:


2选择类作为Bean
  按OK后,前往到导游第3步的对话框,此时对话框的Bean列表中多了一行纪录,能够在ID栏中为Bean指定一个名字,在Scope中指定Bean的感化域,以下图所示:


3援用一个Bean
  我们为User的Bean取名为userBean,将其感化域设置为page域。page域即为页面感化域,在以后页面局限感化域内可用,当JSP前往呼应,或哀求转到其他的JSP页面中时,都不成用了,其他3个感化域申明以下:

  ・request感化域:当一个哀求发生直到前往呼应的局限内都是无效的,如a.jsp中声明为request感化域的Bean,当a.jsp经由过程<jsp:forward>转移哀求到b.jsp页面中时仍是可用的。

  ・session感化域:在用户会话的周期内都是可用的,会话周期为用户登录体系直到其加入体系为此。

  ・application感化域:这个感化域最长,暗示Web容器启动直到封闭都是无效的。

  按Next到下一步。
3.设置运转设置项

  在导游的最初一步,你能够为创立的JSP发生一个运转设置项,固然导游将创立一个运转设置项设置为默许选项,但笔者以为这并非一个公道的默许值,倡议作废createaruntimeconfiguration设置项,不要创立JSP的运转设置项,以下图所示:


  按Finish按钮创立switch.jsp文件,其代码以下所示:

  代码清单8导游创立的switch.jsp

1.<%@pagecontentType="text/html;charset=GBK"%>
2.<html>
3.<head>
4. <title>
5.  switch
6. </title>
7.</head>
8.<jsp:useBeanid="userBean"scope="page"class="bookstore.User"/>
9.<jsp:setPropertyname="userBean"property="*"/>
10.<bodybgcolor="#ffffff">
11. <h1>
12.  JBuilderGeneratedJSP
13. </h1>
14.</body>
15.</html>
  第8行是援用Bean的JSP标签,第9行用表单的数据添补Bean的属性值,即以名字婚配的体例将request的参数添补到Bean的属性中,同时完成范例转换(只要基础数据范例或机关函数撑持的才能够完成转换)。在实行完第9行后,userBean中的userId和password属性将被设置为login.jsp页面中所发送过去的用户名和暗码的值。

  由于switch.jsp只是用于把持,其实不必要显现内容到客户端,以是我们往除switch.jsp中的HTML代码,将switch.jsp调剂为:

  代码清单9往除静态HTML代码后的switch.jsp

1.<%@pagecontentType="text/html;charset=GBK"%>
2.<jsp:useBeanid="userBean"scope="page"class="bookstore.User"/>
3.<jsp:setPropertyname="userBean"property="*"/>
  在switch.jsp中供应一段Scriptlet,将userId和password发送到数据库和T_USER表中的用户对照看是不是是正当的用户,依据考证的了局转向分歧的页面。switch.jsp的终极代码以下所示:

  代码清单10终极的switch.jsp

1.<%@pagecontentType="text/html;charset=GBK"%>
2.<%@pageimport="bookstore.*"%>
3.<%@pageimport="java.sql.*"%>
4.<jsp:useBeanid="userBean"scope="session"class="bookstore.User"/>
5.<jsp:setPropertyname="userBean"property="*"/>
6.<%
7.Connectionconn=null;
8.try{
9. conn=DBConnection.getConnection();
10. PreparedStatementpStat=conn.prepareStatement(
11.  "selectUSER_NAMEfromT_USERwhereUSER_ID=?andpassword=?");
12. pStat.setString(1,userBean.getUserId());
13. pStat.setString(2,userBean.getPassword());
14. ResultSetrs=pStat.executeQuery();
15. if(rs.next()){//暗码准确
16.  userBean.setUserName(rs.getString(1));//设置用户名
17.  session.setAttribute("ses_userBean",userBean);//将userBean放进Session对象中
18.%><jsp:forwardpage="welcome.jsp"></jsp:forward>
19.<%}else{//暗码毛病%>
20.<jsp:forwardpage="fail.jsp"></jsp:forward>
21.<%
22. }}finally{
23.  if(conn!=null)conn.close();
24. }
25.%>
  ・在第2~3行中引进Scriptlet代码中必要的类。

  ・第7~14行代码向数据库发送查询SQL语句并前往了局。

  ・第15行经由过程反省了局集的纪录数直接判别用户暗码是不是准确。

  ・第16~18行是用户暗码准确的呼应代码,起首用了局集的USER_NAME属性添补userBean的userName属性值,然后将userBean对象放进Session中,最初转向welcome.jsp页面。

  ・当用户输出暗码不准确时,了局会合将没有纪录,此时rs.next()前往false,程序转向第20行,第20行的代码将页面转向到暗码输出毛病的处置页面fail.jsp。

  ・第22~24行的代码用于封闭数据库的毗连。

  大概人人已发明固然第9~21行会抛出SQLException非常,但我们并没有响应的非常捕捉块,在尺度的Java程序中将招致一个编译期的毛病,但在JSP中却能够按次经由过程编译,这是由于JSP页面自己会捕捉页面中抛出的一切非常。

  假定第11行的SQL查询语句产生有毛病,如将用户表名误写为User(准确为T_USER),当switch.jsp被挪用后,第14即将抛出SQLException非常,此时switch.jsp将显现出非常仓库迹的跟踪信息页面,以下图如示:


4可骇的毛病处置页面
  上图所示的毛病处置页面可谓青面獠牙,脸孔狰狞,十分不友爱,关于开辟职员来讲这类报错页面大概是合适的,由于它供应了很多毛病跟踪信息,但终极用户是不成能承受这类粗暴的堕落页面的。JSP同意你经由过程<%@pageerrorPage%>为页面指定一个专门处置毛病的JSP页面,以便用一种友爱、直不雅的情势展示毛病。鄙人一节里,我们将创立一个用于处置毛病的JSP页面,在创立以后,我们再来为switch.jsp指定毛病处置JSP页面。

IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
柔情似水 该用户已被删除
沙发
 楼主| 发表于 2015-1-21 10:31:39 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
分手快乐 该用户已被删除
板凳
发表于 2015-1-30 15:11:45 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
飘灵儿 该用户已被删除
地板
发表于 2015-2-5 07:28:35 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
小妖女 该用户已被删除
5#
发表于 2015-2-10 23:46:16 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
变相怪杰 该用户已被删除
6#
发表于 2015-3-1 17:55:15 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
小女巫 该用户已被删除
7#
发表于 2015-3-10 15:43:48 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小魔女 该用户已被删除
8#
发表于 2015-3-11 18:50:14 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
深爱那片海 该用户已被删除
9#
发表于 2015-3-19 07:50:38 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
再见西城 该用户已被删除
10#
发表于 2015-3-19 08:48:09 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
蒙在股里 该用户已被删除
11#
发表于 2015-3-23 19:00:55 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
admin 该用户已被删除
12#
发表于 2015-4-1 11:25:08 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
活着的死人 该用户已被删除
13#
发表于 2015-4-19 14:12:12 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
14#
发表于 2015-4-21 04:41:33 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
谁可相欹 该用户已被删除
15#
发表于 2015-5-9 14:13:06 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
莫相离 该用户已被删除
16#
发表于 2015-6-3 22:06:41 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
爱飞 该用户已被删除
17#
发表于 2015-6-12 05:00:22 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
兰色精灵 该用户已被删除
18#
发表于 2015-6-13 05:28:11 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
灵魂腐蚀 该用户已被删除
19#
发表于 2015-6-20 20:14:02 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
简单生活 该用户已被删除
20#
发表于 2015-6-25 14:48:41 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-13 14:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表