JavaWeb程序设计 课件 ch05 表单开发、ch06 JSP访问数据库_第1页
JavaWeb程序设计 课件 ch05 表单开发、ch06 JSP访问数据库_第2页
JavaWeb程序设计 课件 ch05 表单开发、ch06 JSP访问数据库_第3页
JavaWeb程序设计 课件 ch05 表单开发、ch06 JSP访问数据库_第4页
JavaWeb程序设计 课件 ch05 表单开发、ch06 JSP访问数据库_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章表单开发本课教学内容认识表单单一表单元素数据的获取捆绑表单元素数据的获取隐藏表单其他问题表单开发表单是用户和服务器之间进行信息交互的重要手段,有了表单,JSP程序才可以更加丰富多彩。表单是一种可以由用户输入,并提交给服务器端的一个图形界面。表单开发表单有如下性质:表单中可以输入一些内容,这些输入功能由控件提供,叫做表单元素表单中一般都有一个按钮负责提交点击提交按钮,表单元素中的内容会提交给服务器端表单元素放在<form></form>之间表单开发表单是提交给服务器的,如何确定到底提交给哪一个界面?用<form>中的action属性确定。如:<formaction="page.jsp"> 请您输入账号:<inputname="account"type="text"><BR> 请您输入密码:<inputname="password"type="password"><BR> <inputtype="submit"value="登录"> </form>表示该表单中输入的内容,提交给page.jsp去运行。表单开发page.jsp如何获取提交过来的值?用request对象。如:<%//获得表单中name=account的表单元素中输入的值,赋值给strStringstr=request.getParameter("account");%>注意:如果表单中没有name=account的表单元素,str为null;如果在表单元素account中没有输入任何内容就提交,str为""。表单开发<inputtype="submit"value="登录">表示提交按钮,可以写普通按钮吗?不行,如果将该按钮改为:<inputtype="button"value="登录">,显示效果一样,但是点击,没有提交功能。不过可以用JavaScript进行提交。单一表单元素数据的获取单一表单元素,是指表单元素的值送给服务器端时,仅仅是一个变量。这种情况下的表单元素主要有:文本框、密码框、多行文本框、单选按钮、下拉菜单等。单一表单元素数据的获取文本框、密码框、多行文本框、单选按钮和下拉菜单,其中的内容的获取方法均相同,利用request.getParameter("表单元素名")方法获得一个字符串。*具体代码示例见课本捆绑表单元素数据的获取捆绑表单元素,是指多个同名表单元素的值送给服务器端时,是一个捆绑的数组。这种情况下的表单元素主要有:复选框、多选列表框、其他同名表单元素等。捆绑表单元素数据的获取具体获得方法和一般表单元素类似,但在获取数据时,利用request.getParameterValues("表单元素名")方法来获得字符串数组。*具体代码示例见课本获取其他同名表单元素中的数据

多个同名文本框是如何存储在获取到的数组里的?以文本框在源代码中出现的顺序,从数组的第0位开始向后放置。隐藏表单例子:页面1中定义了一个数值变量,并显示其平方;要求在页面2中显示其立方。很明显,页面2必须知道页面1中定义的那个变量。可以用URL传值。但是通过URL方法,传递的数据可能被看到。为了避免这个问题,我们可以用表单将页面1中的变量传给页面2,这个表单就可以设定为页面1中的隐藏表单。隐藏表单网页制作中,input有一type="hidden"的选项,它是隐藏在网页中的一个表单元素,并不在网页中显示出来。这就是实现隐藏表单的方法。实现方法:隐藏表单此时浏览器地址栏上的地址数据还是能够被看到。解决该问题的方法是将form的action属性设置为post(默认为get)解决数据传输安全问题方法:隐藏表单隐藏表单的弊端和URL方法类似,该方法传输的数据只能是字符串,对数据类型具有一定限制传输数据的值虽然在浏览器地址栏内不被看到,但是在客户端源代码里面也会被看到*具体代码示例见课本用JavaScript进行提交有时候,可能要对表单中的输入进行一些验证。如在登录表单中,需要输入的账号密码不能为空。因此,当点击提交按钮时,不能马上提交,应该调用JavaScript进行验证,然后进行提交。因此,提交按钮的类型不能被设置为submit,而应该设置为button。*具体代码示例见课本中文乱码问题如果使用的是Tomcat服务器,在提交过程中,如果提交的内容中含有中文,经常会出现中文乱码问题。

中文乱码问题中文无法显示 没有把文件头上的字符集设置为中文字符集。一定要保证文件头上写明:<%@pagelanguage="java"pageEncoding="gb2312"%>或 <%@pagelanguage="java"contentType="text/html;charset=gb2312"%>

中文乱码问题提交过程中显示乱码,有3种方法解决这个问题将其转成gb2312格式直接修改request的编码利用过滤器

中文乱码问题将其转成gb2312格式方法如下:变量(字符串)=newString(变量(字符串).getBytes("ISO-8859-1"),"gb2312")中文乱码问题直接修改request的编码可以将request的编码修改为支持中文的编码,这样,整个页面中的请求,都可以自动转为中文request.setCharacterEncoding("gb2312")中文乱码问题利用过滤器 利用过滤器,可以对整个Web应用进行统一的编码过滤,比较方便。该内容在后面的章节中提到*具体代码实例见课本本章结束本章总结表单开发隐藏表单其他问题上机习题第6章JSP访问数据库本课教学内容JDBC简介建立ODBC数据源JDBC操作使用PreparedStatement事务使用厂商驱动进行数据库连接JDBC简介商业应用的后台数据一般存放在数据库中,很明显,可以通过Java代码来访问数据库。在Java技术系列中,访问数据库的技术叫做JDBC,它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库的数据进行添加、删除、修改和查询JDBC简介JDBC中以下类或接口java.sql.Connection:负责连接数据库

java.sql.Statement:负责执行数据库SQL语句java.sql.ResultSet:负责存放查询结果JDBC简介针对不同类型的数据库,JDBC机制中提供了"驱动程序"的的概念。对于不同的数据库,程序只需要使用不同的驱动厂商驱动连接数据库JDBC简介安装数据库厂商驱动,需要去各自的数据库厂商网站下载驱动包,用户也许觉得很麻烦。此时,微软公司提供了一个解决的方案。在微软公司的Windows中,预先设计了一个ODBC(OpenDatabaseConnectivity,开放数据库互连)功能,由于ODBC是微软公司的产品,因此它几乎可以连接到所有在Windows平台下运行的数据库,由它连接到特定的数据库,不需要具体的驱动。而JDBC就只需要连接到ODBC就可以了

JDBC简介ODBC驱动连接数据库建立ODBC数据源在使用ODBC之前,需要配置ODBC的数据源,让ODBC知道连接的具体数据库ODBC支持连接到各种数据库。如Oracle、MySQL、MSSQLServer等,具体的设置详见课本图解过程建立ODBC数据源在配置时,要注意:access的数据源驱动器都是32位的,64位机上可能会找不到access数据源驱动器。对于64位机,可以打开32位版本的ODBC管理工具,其界面和设置过程与32位的相同。由于JDK1.8及以上的版本都已经不再包含access桥接驱动,在使用JDBC-ODBC桥接方式时,需要下载access驱动的jar包,具体操作方法大家可以参见其他详细文档。建立ODBC数据源操作如下:首先在控制面板中选择"管理工具",双击"数据源(ODBC)图标"建立ODBC数据源操作如下:在"ODBC数据源管理器"的"系统DSN"选项卡中单击"添加"按钮建立ODBC数据源操作如下: 从弹出的"创建新数据源"窗口的数据源名称列表中选择"MicrosoftAccesDriver(*.mdb)"并单击"完成"按钮建立ODBC数据源操作如下:在弹出的"ODBCMicrosoftAccess安装"窗口的"数据源名"文本框输入自定义的数据源名称,然后点击"选择"按钮,选择Access数据库所在的目录,得到的结果如图JDBC操作JDBC的操作分为4个步骤:通过JDBC连接到ODBC,并获取连接对象Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectionconn=DriverManager.getConnection("jdbc:odbc:DSSchool");JDBC操作

使用Statement接口运行SQL语句Statementstat=conn.createStatement();stat.executeQuery(SQL语句);//查询或者

stat.executeUpdate(SQL语句);//添加、删除或修改

JDBC操作处理SQL语句运行结果关闭数据库连接:stat.close();conn.close();添加数据具体添加案例见课本在这里,重点介绍下面一句代码: inti=stat.executeUpdate(sql);

它返回一个整型,意思为这条sql语句执行受影响的行数,即成功添加的条数删除、修改数据具体代码案例见课本两种操作均调用stat.executeUpdate(sql),并返回一个整型量查询数据具体代码案例见课本查询格式: ResultSetrs=stat.executeQuery(sql);查询到的结果放入ResultSet中,实际上是一个小表格查询数据游标 是在ResultSet中一个可以移动的指针,它指向一行数据。初始时指向第一行的前一行,实际上不指向任何数据。rs.next()可以将游标移到下一行,它的返回值是一个布尔类型,即如果下一行有数据则返回为true,否则为flase。很明显,可以使用rs.next()配上while循环来对结果进行遍历查询数据游标 当游标指向某一行,可以通过ResultSet的getXXX("列名")方法得到这一行的某个数据, XXX是该列的数据类型,可以是String,也可以是int等,但是所有类型的数据都可以用getString()方法获得。除了通过列名获得数据外,还可以通过列的编号来获得查询数据关于游标的注意 游标的初始值并不是指向第1行数据,而是指向第1行的前面那条数据。所以必须要运行一次next()函数之后,才能从开始取数据,如果强行取则会找不到该列而报错查询数据关于游标的注意从某一行中通过getXXX()方法取数据每一列只能取一次,超过一次,程序将会报错,如果需要重复使用某列数据,可以先定义一个变量,将取出的数据赋予它,再重复使用使用PreparedStatement引出 以添加数据为例,在很多情况下,具体需要添加的值,是由客户自己输入的,因此,应该是一个个变量。该情况下,SQL语句的写法就比较麻烦,而且依赖了变量,比较容易出错PreparedStatement解决了这个问题

使用PreparedStatementPreparedStatement是Statement的子接口,功能与Statement类似它在sql语句中使用了?代替了需要插入的参数 用PreperedStatement的setString(n,参数)方法可以将第n个?用传进的参数代替。这样做增加了程序的可维护性,也增加了程序的安全性事务在银行转账时,要对数据库进行两个操作,即将一个账户的钱减少,将另一个账户的钱增多。但是由于操作的先后顺序,如果在两个操作之间发生故障,则会导致数据不一致。因此,需要设计一个事务,在两条语句都被执行成功后,数据修改才被真正提交(Commit)放入数据库,否则数据操作回滚(Rollback)事务在默认情况下,executeUpdate函数会在数据库中提交改变的结果,此时,可以用Connection来定义该函数是否自动提交改变结果,并进行事务的提交或者回滚使用厂商驱动进行数据库连接缺点:这类驱动程序的弹性较差,由于是数据库厂商自己提供的专属驱动程序,往往只适用于自己的数据库系统,甚至只适合某个版本的数据库系统。如果后台数据库换了一个或者版本升级了,则就有可能需要更换数据库驱动程序优点:跨平台使用厂商驱动进行数据库连接使用厂商驱动,有2个步骤: 到相应的数据库厂商网站上下载厂商驱动,或者从数据库安装目录下找到相应的厂商驱动包,拷贝到项目的WEB-INF/lib下。在JDBC代码中,设定特定的驱动程序名称和url,

不同的驱动程序和不同的数据库可以采用不同的驱动名称和url。使用厂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论