1、, listTest );/把List设置到Request对象中%c:forEach items=$testList var=list varStatus=s 通过c:forEach就可以遍历listTest了。这是jsp中最普遍用到的循环遍历集合的方法。开发中一般会有很明确的分层,最常用的MVC模式就是提倡把架构分成ModelViewController三层,这样有利于项目的开发与维护,如果页面上嵌入过多的java代码会使得调试及后期维护花费的代价与日俱增,所以不提倡这样做。4,ASP对象Request主要属性和方法Request对象是ASP中最为常用的对象之一。它用来连接客户端的Web页(
2、.HTML文件)和服务器端的Web页(.ASP文件),使它们之间可以进行数据交换。Request对象允许ASP查询有关与之交互的客户程序信息,它代表由客户程序发出的HTTP请求报文。Requset的属性方法如下:1TotalBytes属性Request对象只提供了一种TotalBytes属性。该属性用来获取客户端接收的所有数据的字节大小,而Counter是指定一个变量来接收客户端在请求中发送的总字节数。实际编程中该属性很少使用。TotalBytes引用的一般格式如下。Counter=Request.TotalBytes下面的ASP脚本用变量Counter获取Request数据集合中的字节数。D
3、im bytecountbytecount=Request.TotalBytes2BinaryRead方法Request对象只提供了一种方法,即BinaryRead方法。这种方法并不常用,它以二进制的方法来获取客户端传送的数据。Variant参数包含由该方法返回的无符号数的数组。Count参数在执行前,指定要从客户端读取的字节数。此方法返回后,将包含从客户机成功获取的字节数。其返回值为一个数组,该方法需要一个参数,即每次读取字节的大小。BinaryRead引用的一般格式如下。variant=Request.BinaryRead(count)下面的ASP脚本是用binread数组来存储,用Bin
4、aryRead方法读取的数据。Dim binreadbytecount = Request.TotalBytesbinread = Request.BinaryRead(bytecount).1.2 读取HTTP查询字符串中的数据在网页中数据传递一个很重要的方式就是通过链接地址。如“ showlog.asp? cat_id=5&log_id=657”。当用户将这样的字符串作为链接地址发送到服务器时,服务器就会通过QueryString集合获取相关的值。1QueryString集合QueryString集合检索HTTP查询字符串中变量的值。HTTP查询字符串由问号后的值指定,几个不同的进程都可以
5、生成查询字符串。variable在HTTP查询字符串中指定要检索的变量名。要在多个数据集合的一个中引用QueryString变量,请指定index的值。index参数可以是1到Request.QueryString (variable).Count中任意值。如果没有指定index的值,引用多个QueryString变量中的某个变量时,返回的数据是逗号分隔的字符串。在Request.QueryString中使用参数时,服务器分析发送给请求的参数,并返回指定的数据。如果应用程序需要未分析的QueryString数据,可以通过调用不带参数的Request.QueryString检索到这个数据。Que
6、ryString集合所对应的提交方式只能是Get方式,而不能使用Post方式来提交,所以用户在编写程序时一定要注意前后的对应关系。QueryString集合是在ServerVariables集合中QueryString变量的分析版本。它可以以名称检索QueryString变量。Request.QueryString(参数)的值是出现在QueryString中所有参数的值的数组。通过调用Request.QueryString(parameter).Count可以确定参数有多少个值。如果变量未关联多个数据集,则计数为1;如果找不到变量,计数为0。QueryString集合引用的一般格如下。Requ
7、est.QueryString(variable)(index)|.Count2QueryString示例下面这个示例是QueryString最基本的使用方法,用来获取.HTML文件中以POST方式发送的数据。Dim xingmingDim mimaxingming=Request.QueryString(xm)mima=Request.QueryString(mmIf xingming=yonghu then 判断用户名是否为“yonghu” If mima=xxxthen 判断密码是否为“xxx” Response.Write登录成功! 密码正确则“登录成功” Else登录失败!密码错误则
8、“登录失败” End ifElse用户名不存在!用户名不正确则“用户名不存在”End if3使用QueryString获取表单元素在上网的时候经常会遇到会员登录的界面,下面就来制作一个用户在客户端浏览器输入用户名及密码登录后,并提交到服务器端的Log.asp文件。浏览器页面的Log.htm详细代码如下:htmlheadmeta name=GENERATORcontent=Microsoft FrontPage 5.0meta name =ProgId content=FrontPage.Editor.Documentmeta http-equiv=Content-Typetext/html;c
9、harset=gb2312title新建网页 /title/headbodyform ACTION=log.aspMETHOD=GETNAME=login用户名:input type=text name=nm size=20 br密码:nput type=password name=pwd size=input type=submit name=bt value=提交input type=reset name=bt value=重写/form/body/html图4-1 登录界面Log.htm文件显示界面如图4-1所示。当数据被提交到服务器端的log.asp文件时,在log.asp文件中使用R
10、equest对象获取到用户提交的数据,判断该用户是否合法,服务器端的Log.asp文件具体内容如下:Dim UserNMDim PassWDUNM=Request.QueryString(nmPWD= Request.QueryString(pwdIf UNM=user判断用户名是否为“user” If PWD=123判断密码是否为“123”在图4-1所示中,若在用户名中输入“user”,密码中输入“123”,就会调用log.asp文件,其显示结果如图4-2所示。图4-2 登录成功在log.htm文件中使用了Get方法,此时输入到表单的数据就要发送到URL字符串指定的HTTP服务器上,可以看到
11、它是加在URL后面的,是通过一个“?”来隔开。ASP并不是在HTTP的Get中分析附加在URL后面的字符串,而是允许ASP开发人员把这种数据作为QueryString对象的集合来处理。4使用QueryString获取同名表单元素数值在hometown.htm文件中获取多个同名表单的返回值,文件内容如下:hometown.asphometown请输入你所居住的城市:br城市1:input type=text name=city size=城市2:城市3:input type=submit name=bt value=提交查询hometown.htm文件的显示界面如图4-3所示。在图4-3所示中,
12、若单击【提交查询】按钮,就可以把3个城市的名称提交到服务器。要想输出其中的每一个值,可以采用以下代码来解决。在hometown.asp文件中输出每一个城市的值,文件内容如下:For each item In ResquestQuerystring(cityResponse.Write item&输出每个城市名并且换行next注意:For each item In的用法,在ASP中它是最常见的显示集合所有内容的一种方法。在执行hometown.asp文件后的结果,如图4-4所示。图4-3 显示界面 图4-4 输出城市名5、session属性和方法 Session一般在服务器上设置了一个30分钟的
13、过期时间,当客户停止活动后自动失效。Session 中保存和检索的信息不能是基本数据类型如 int, double等,而必须是java的相应的对象,如Integer, Double. Httpsession具有如下API: getId此方法返回唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当作键名用。 GetCreationTime返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可将此值传给Date constructor 或者GregorianCalendar
14、的方法setTimeInMillis. GetLastAccessedTime返回session最后被客户发送的时间。 GetMaxInactiveInterval返回总时间(秒),负值表示session永远不会超时。 getAttribute取一个session相联系的信息。(在jsp1.0中为 getValue) Integer item = (Integer) session.getAttrobute(item)/检索出session的值并转化为整型 setAttribute提供一个关键词和一个值。会替换掉任何以前的值。(在jsp1.0中为putValue) session.setAtt
15、ribute(ItemValue, itemName);/ ItemValue 必须不是must简单类型 在应用中使用最多的是getAttribute和setAttribute.现以一个简单的例子来说明session的应用,test1.jsp(信息写入session),test2.jsp(从session读出信息)。 test1.jspHTMLHEADTITLE Document /TITLE/HEADBODY BGCOLOR=#FFFFFFsession.setAttribute(str,new String(“this is test”);/BODY/HTMLtest2.jspTITLE
16、New Document /TITLE%String ls_str=null;ls_str=(String)session.getAttribute();out.println(“从session里取出的值为:”+ls_str);%7,列举4个以上数据库(1)Javascript数据库(2)ASP数据库(3)Response数据库(4)session属性和方法8,SQL SERVER中,数据类型Char 与varchar区别sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别varchar和nvarchar的区别:varchar(n)长
17、度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节(如varchar(6),当字段为qqq时,数据库实际占用空间为3个字节,而不是6个字节,但只允许存储6个字节,一般中文占两个字节)。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。两字段分别有字段值:我和coffee那么varchar字段占22+6=10个字节的存储空间,而nvarchar字段占82=16个字节的存储空间
18、。如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarcharSQL Server中,varchar和nvarchar如何选择?varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操 作系统并且对中文字体的支持不全
19、面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为?)而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的多数情况下,在布署的时候也不会有问题但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了所有的varchar字段在存储中文的时候都会变成乱码(显示为?)而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar)对项目管理比较熟悉的朋友应该都知
20、道,到布署阶段再来修改数据库是一个很恐怖的事情使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别当然,使用nvarchar存储英文字符会增大一倍的存储空间但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的所以在Design的时候应该尽量使用nvarchar来存储数据只有在你确保该字段不会保存中文的时候,才采用varchar来存储1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。2、VARCHAR。存储变长数据,但存储效率
21、没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。3、TEXT。text存储可变长度的非Unicode数据,最大长度为231-1(2,147,483,647)个字符。4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,
22、英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和 char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储 8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。所以一般来说,
23、如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar9,存储过程定义和优点储过程是使用SQL语句和流程控制的语句编写的模块,存储过程经编译和优化后存储在数据库服务器端的数据库中,使用时调用即可。优点:1.提高运行速度。在运行存储过程前,数据库服务器对其进行语法和语义的分析,并给出优化执行方案。而调用存储过程时,其执行的SQL语句大部分准备工作都已经完成,所以存储过程就能以很快的速度执行,相比之下,交互执行的SQL语句是解释执行的,所以速度较慢。2.增强了功能和灵活性。存储过程可以用流程控制语句编写,具有很强的灵活性,能完成复杂是逻辑判断和逻辑运算。.可
24、以降低网络的通讯量。存储过程存储在服务器端,执行全部的逻辑流程仅需要向服务器发送一次过程请求即可。.间接实现安全控制功能。例如,不允许某些用户直接在表和视图上进行查询,可以授权它们执行某个存储过程来完成允许范围内的信息查询。分类:用户定义的存储过程、扩展存储过程以及系统存储过程。(其中,用户定义的存储过程又分为Transaction-SQL和CLR两种类型。Transaction-SQL 存储过程是指保存的Transaction-SQL语句集合,可以接受和返回用户提供的参数。CLR存储过程是指对.Net Framework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。他们在.Net Framework程序集中是作为类的公共静态方法实现的。编写:(以例子说明)例1 传入一个参数username,判断用户是否存在-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1