ASP表单两种提交模式辨析
- 格式:pdf
- 大小:64.66 KB
- 文档页数:2
ASP网站文件功能说明ASP(Active Server Pages)是一种用于动态网站开发的技术。
它允许开发人员通过使用服务器端脚本语言(如VBScript或JavaScript)来创建动态网页,从而能够根据用户的请求生成不同的内容。
在ASP中,网页的功能主要由服务器端的ASP文件来实现。
下面将详细介绍ASP网站文件的功能。
1.动态内容生成:ASP文件允许开发人员在网页中嵌入服务器端脚本代码,这使得网页能够根据用户的请求动态生成内容。
开发人员可以使用条件语句、循环语句和数据库查询等技术,根据特定的逻辑规则生成不同的内容。
2.表单处理:ASP文件可以用来处理网页中的表单提交。
当用户在网页上填写表单并提交时,服务器端的ASP文件可以接收并处理这些数据。
开发人员可以通过脚本代码对表单进行验证、数据处理和存储等操作,以实现表单的功能。
3.数据库连接和操作:ASP文件可以与数据库进行连接,并执行数据库操作。
开发人员可以使用ASP提供的数据库组件(如ADO)实现数据库查询、插入、更新和删除等功能。
这使得网页能够与后台的数据库系统进行交互,并根据数据库中的数据生成动态内容。
4.文件操作:5.用户认证和会话管理:ASP文件可以实现用户认证和会话管理功能。
开发人员可以使用ASP 提供的会话对象(Session)来跟踪用户的登录状态,并限制特定页面的访问权限。
通过会话管理,ASP文件可以将用户的相关信息存储在服务器端,并在整个网站中共享和使用。
6.错误处理:ASP文件可以处理异常情况和错误信息。
开发人员可以使用ASP提供的错误处理机制来捕获和处理服务器端的错误。
这有助于提高网站的稳定性和可靠性,避免向用户显示不需要的错误信息。
7.缓存管理:ASP文件提供了对网页缓存的管理功能。
开发人员可以使用ASP提供的缓存对象(Cache)来缓存动态生成的内容,以提高网站的响应速度和性能。
通过适当地使用缓存管理,可以减轻服务器的负载和网络传输的负荷。
form提交数据编码梳理之前对form单提交的操作⼀直都是迷迷糊糊,知道怎么⽤,但是随着ajax2的出现,我们有更多的⽅式操作form表单提交,但是底层的原理我们要好好的做个梳理。
常见的form提交有post和get这两种形式,他们对各⾃的编码都有不同的理解,post适合⼤量数据的提交,语义上改变了数据状态,get是⼀种获取获取数据的⼀种形式,两者在编码上是有不同的实现。
关于编码的 form 标签的属性accept-charset:可以指定form编码形式enctype: 规定在发送表单数据之前如何对其进⾏编码。
有三种设置类型默认为application/x-www-form-urlencoded:发送前编码所有字符multipart/form-data:不对字符编码,包含⽂件上传控件的表单时,必须使⽤该值text/plain:空格转换为 "+" 加号,但不对特殊字符编码。
method:规定⽤于发送 form-data 的 HTTP ⽅法。
有 post 和 getmethod浏览器使⽤ method 属性设置的⽅法将表单中的数据传送给服务器进⾏处理。
共有两种⽅法:POST ⽅法和 GET ⽅法。
如果采⽤ POST ⽅法,浏览器将会按照下⾯两步来发送数据。
⾸先,浏览器将与 action 属性中指定的表单处理服务器建⽴联系,⼀旦建⽴连接之后,浏览器就会按分段传输的⽅法将数据发送给服务器。
在服务器端,⼀旦 POST 样式的应⽤程序开始执⾏时,就应该从⼀个标志位置读取参数,⽽⼀旦读到参数,在应⽤程序能够使⽤这些表单值以前,必须对这些参数进⾏解码。
⽤户特定的服务器会明确指定应⽤程序应该如何接受这些参数。
另⼀种情况是采⽤ GET ⽅法,这时浏览器会与表单处理服务器建⽴连接,然后直接在⼀个传输步骤中发送所有的表单数据:浏览器会将数据直接附在表单的action URL 之后。
这两者之间⽤问号进⾏分隔。
form表单提交的⼏种⽅式form表单提交的⼏种⽅式表单提交⽅式⼀:直接利⽤form表单提交html页⾯代码:<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Insert title here</title></head><body><form action="http://localhost:8080/user" method="post">username:<input type="text" name="username" /><br>password:<input type="password" name="password" /> <br><input type="submit" value="登录"></form></body></html>controller页⾯代码:package com.help.demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class UserController {@PostMapping("/user")@ResponseBodypublic String add(String username,String password){System.out.println("返回值是》》"+username+"---->"+password);String str = "返回值是"+username+password;return str;}}完成后启动项⽬并访问http://localhost:8080/query.html 输⼊⽤户名和密码出现下图表⽰成》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》表单提交⽅式⼆:使⽤ajax提交html页⾯代码:<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Insert title here</title></head><body><!-- --><form method="post" onsubmit="return false" action="##" id="formtest">username:<input type="text" name="username" /><br>password:<input type="password" name="password" /> <br><input type="button" value="登录" onclick="login()"></form><script type="text/javascript" src="/js/jquery.min.js"></script><script type="text/javascript" src="/js/jquery.easyui.min.js"></script><script type="text/javascript" src="/js/extJquery.js"></script><script type="text/javascript" src="/js/extEasyUI.js"></script><script type="text/javascript">function login() {$.ajax({//⼏个参数需要注意⼀下type: "POST",//⽅法类型dataType: "text",//预期服务器返回的数据类型如果是对象返回的是json 如果是字符串这⾥⼀定要定义text 之前我就是定义json 结果字符串的返回⼀直到额error中去/*dataType:要求为String类型的参数,预期服务器返回的数据类型。
form表单的action 与url跳转是不一样的:form表单可以给后台传递数据,url跳转到action只能通过url的参数来传递数据,不懂的朋友可以参考下
form表单的action 与url跳转是不一样的:
form表单可以给后台传递数据,在后台直接可以用request对象去向前台请求数据。
form表单传递数据有两种方式:
method="post":这是传递大量数据时用的,在数据传递之前会先将数据打包,因此这种传递数据的方式会效率会比较慢,但是穿过的数据都能正确解析,因此传中文不会有乱码。
method="get":以URL传递的,因为地址栏长度有限,所以对数据量是有限制的,而且传递的数据必须是ASCCI码值范围内的,因此,传中文会有乱码,需特殊处理。
url跳转到action只能通过url的参数来传递数据,action?参数名=参数值&……,在后台也可以用request对象去向前台请求url的参数值(url传中文参数需要进行特殊处理)。
ASP 表单和框架表单在Web网页中用来给访问者填写信息,从而能获得用户信息,使网页具有交互的功能。
一般是将表单设计在一个HTML文档中,当用户填写完信息后做提交(Submit)操作,于是表单的内容就从客户端的浏览器传送到服务器上,经过服务器上的ASP或者CGI等处理程序处理后,再将用户所需信息传送回客户端的浏览器上,这样网页就具有了交互性。
使用框架结构设计的HTML文件,能够将整个窗口分成几个独立的小窗口,每一个窗口可以分别载入不同的文件,并且各窗口之间还可以进行相互的操作。
1.表单标记<form></form>标记对用来创建一个表单,即定义表单的开始和结束位置,在标记对之间的一切都属于表单的内容。
<form>标志具有action、method和target属性,各属性如下:●Method 设定在表单传输的数据时到Web服务器的方法,有两种方法:get和post。
●Action 为了能接受浏览者所发送出的数据,在Web服务器内必须有一个服务程序来接收。
而Action属性则可以指定接收表单数据的程序所在地址。
●target 用来指定目标窗口或者目标帧。
可以使用<input type="">标记定义一个用户输入区域,用户可在其中输入信息。
此标记必须放在<form></form>标记对之间。
<input type="">标记共提供了8种类型的输入区域,具体是哪一种类型由type属性来决定,如表8-3所示。
表8-3 8种类型的输入区域字。
这个名字与输入区域是一一对应的,即一个输入区域对应一个名字。
服务器就是通过调用某一输入区域的名字的value属性来获得该区域的数据的。
而value属性是另一个公共属性,它可用来指定输入区域的缺省值。
使用<select></select>标记对可以创建一个下拉列表框或者可以复选的列表框。
在ASP中执行多个页面的表单提交假设现在你要在站点上建立一个多页面的订货表单,从而执行从站点通过email发给订单书写人,并假定这些单独的页面、页面的个数以及页面上的输入域都可以根据实际要订购的产品而改变。
如果我们将每个页面都分别提交给FrontPage的 email 向导或CGI 的email 程序,那么可怜的订单书写人就要为订单的每一页都收到一个单独的邮件信息。
当然我们可以通过session变量、隐藏域或查询字符串将订货数据从一页传递到另一页,但是在内存中储存这些数据会造成应用程序不平衡,另外潜在地需要大量的脚本。
而且当页面上的域变化时还必须要修改脚本代码,所以代码不太能够再利用。
如果能够写出一套脚本可以用在所有这些订单页面中,只把HTML页面的设计留给WEB设计者,那就太好了。
一个简单的答案是,将每个页面中的数据保存在一个文件中,然后将所有这些文件连接起,再将之用Email方式发送给订单书写人。
这种方法另外还有一个好处是如果愿意可以在硬盘上保持临时文件,那么在晚些时候用户可以继续一个未完成的订单。
最好的一点是,执行这一办法不需要第三方组件,而只需要session变量,ASP脚本和Scripting.FileSystemObject 对象。
首先要为这些单独的页面数据文件确定唯一的名字,这样在订单结束时可以将它们放在一起,并且不会被应用程序中的其它文件所覆盖。
同时,需要从单个session变量表示的文件进行聚合中,这样就不会偶然将一个旧session中的数据包含到当前的订单中。
由IIS所提供的Session变量("SessionID")在一个Session过程中在网络服务器上是唯一识别的,但是到了后面,Session就可以被复制。
(事实上,SessionID在以后会话Session时总是要被复制的,SessionID存储在客户机的一个cookie 中。
当网络服务器从客户机中接收到一个过去会话的SessionID时,若它没有被另一个活动会话所使用,就使用相同的值,这样就不用向浏览器发送另一个cookie了,有关的信息可以参见微软MSDN上的Managing Sessions。
html的两种提交按钮submit和buttonhtml按钮有两种:<input type="button" value="登录" onclick="login()"/>和<button onclick="login()">登录</button>这两种在页⾯上看起来好像⼀样没什么区别,但是这两种是有区别的。
1,如果在<form id="loginForm" name="loginForm" action="<%=path%>/hdlogin/login.action" method="post"></form>标签中,使⽤<input type="button" value="登录" onclick="login()"/>,要想提交form,你必须写成<input type="submit" value="登录" onclick="login()"/>,或者document.loginForm.submit();否则form是不会提交的。
2,如果在form中使⽤<button onclick="login()">登录</button>只要点击就会提交。
<button type="submit" value="登录" onclick="login()"/>。
今天在使⽤<button></button>时,我⼜在js控制表单提交,结果这个action总是莫名其妙的⾛两次!根源就是表单提交了两次,⼀次是<button></button>,⼀次是document.loginForm.submit();这个错误很隐蔽,⼤家以后要注意。