1、Web运行原理1n客户端同Web服务器之间的协议为httpnHTTP为超文本传输协议nHTPP协议为“请求和响应”协议n客户端请求包括:请求行、头、信息体n客户端请求的方法nGET、POST、HEADnDELETE、TRACE、PUTn提交表单的方法:GET、POSTWeb运行原理2n服务器接收到请求后,返回HTTP响应n每个响应:状态行、头、信息体n常见状态n404 所请求的文件不存在n500 服务器程序出错n200 OK 成功n信息体用于浏览器显示页面访问失败NoImageHTML表单n表单是具有输入域、文本域的页面n用于客户端同服务器端交互n用户在客户端填写表单,然后“提交”n表单中的信
2、息发送到服务器n服务器返回处理情况HTML表单标记n表单主标记n n表单中的标记nn nn n是表单开始标记,结束表单的例子(peixun2.15.jsp)表单 用户登录 用户名: 密码:运行结果NoImageform标记n描述表单的特性,语法nmethod表单传输方法nGET方法将表单信息在URL后传输nPOST方法将表单信息作为信息体传输naction为表单处理方式,通常为一个URLnenctype为编码方式标记n表单中输入信息的区域n属性ntype 类型nname 名称nid 标识nmaxlength 最大字符数nsize 输入域宽度nval
3、ue 域的初始值nbutton 按钮 用javascript响应的类型ntext 文本npasswowrd 口令方式ncheckbox 多选框 name相同nradio 单选按钮 name相同nimage 图片nhidden 隐藏表单 发送数据nsubmit 提交按钮 向服务器提交表单nreset 复位按钮 将表单充置为初始状态文本框:TEXTAREAn多行文本域:n参数nCOLS:宽度nROWS:高度nNAME:名称CPU PIV 1500Memory 512M 下拉框:SELECTn定义列表框:n参数nMULTIPLE 可同时选取多行nNAME 名称nSIZE 可见项目数n每个项目用opt
4、ion标记n属性SELECTED出现在option表示选中select的例子 北京 天津 上海 重庆 表单提交n提交方式:nsubmit类型按钮提交表单n通过普通按钮的javascript函数n传输方法依据中的methodn推荐使用POSTn传输编码依据中的enctypen处理方式依据中的action 表单清除nreset按钮重置表单为初始值 综合例子表单 用户注册用户名: 密码:你喜欢:足球 篮球 性别:男 女 你的计算机CPU PIV 1500Memory 512M 你计算机的操作系统 &
5、nbsp; 你所在地:北京 天津 上海 重庆 运行结果NoImage表单的确认n客户端确认n减少服务器负载n缩短用户等待时间n兼容性难n服务器端确认n统一确认n兼容性强n服务器负载重客户端确认n采用javascript进行确认n常用函数nisBetweennisDatenisTimenisDigitnisEmailnisEmptynisIntnisReal客户端确认例子客户端确认 用户登录 用户名: 密码:function checkform(frm)var flag=true;if(frm.name.value=)alert
6、(姓名不能为空,请输入值!);frm.name.focus();flag=false;return flag;运行结果NoImagen可以获得文本框、文本区域、单选、多选的值n表单中各元素的NAME属性是它的唯一标识,用它获取参数。n参考peixun2.11.jsp及post.jsorequest.getParameter(User);向客户端输出n使用内置对象outout.println(content)n使用“=”n参看peixun2.11.jsp和post.jspout.println(用户名:+User+);n参看peixun2.14.jsp您是第位访问者!表单的服务器端确认n在客户端
7、不能用JSP进行确认n分工:数据处理在服务器端n实效性:客户端得到服务器确认后表明数据已经到达服务器n客户端兼容性好n缺点:加大服务器负载和用户等待时间服务器端确认方法n采用Java类对表单数据进行复杂的检查n采用JSP进行确认服务器端确认的例子服务器端确认 用户登录 用户名: 密码:loginAction.jsp确认JSP%String name=request.getParameter(name);String pwd=request.getParameter(pwd);if(name!=null)&(!name.equals()name=ne
8、w String(name.getBytes(ISO8859_1),gb2312);out.println(用户名:+name+);out.println(密码:+pwd+);else%用户名不能为空 用户登录 用户名:input type=text name=name size=20 value= 密码:input type=password name=pwd size=20 value=运行结果(TOMCAT)NoImage(未输入姓名)直接提交NoImage输入用户名NoImage输入用户名后提交NoImageJSP的汉字问题的原理n客户端和
9、服务器用gb2312nHTTP传输编码用ISO8859_1n服务器需要指示客户端文档的编码方式NoImageISO8859_1ISO8859_1gb2312gb2312JSP的汉字问题出现环节n客户端显示文档时的编码方式(由服务器中的JSP、Servlet指明)n客户端发送汉字时自动转换为iso8859_1n服务器中采用gb2312对汉字编码,接收到客户端汉字需要转换为gb2312n服务器端将JSP转换为Servlet时自动将汉字转换为iso8859_1n服务器端应该告诉客户端汉字的编码方式JSP汉字问题的范围nJSP文件的汉字问题n表单处理的汉字问题nServlet的汉字问题(以后讲解)nJ
10、DBC的汉字问题(以后讲解)JSP文件的汉字问题nJSP中的汉字字符串在服务器端用gb2312n在编译为Servlet时自动转换为iso8859_1n汉字在传输中是正确的n在没有特别指示下,浏览器中无法正确显示n在HTML中指示浏览器文档的编码(myJSPindex.html)nn在JSP中指示JSP引擎文档的编码nn每个要显示汉字的JSP文档都应该包含该语句JSP文件的汉字问题(JSPhanzi.jsp)NoImageJSP中的汉字问题 JSP中的汉字问题 你好JSP中增加编码指示后NoImageJSP中的汉字问题 JSP中的汉字问题 你好表单处理中的汉字问题n表单处理涉及到客户端和服务器的
11、完整交互过程n在客户端和服务器是gb2312,传输用ISO8859_1n在服务器端接收到客户端数据时需要转换为gb2312后进行处理,方法name=new String(name.getBytes(ISO8859_1),gb2312);n服务器端指示客户端汉字的显示编码表单处理的汉字问题(hanzi.jsp)NoImage表单处理的汉字问题 用户登录 用户名:表单处理的汉字问题 用户登录 用户名:处理过程NoImage表单中汉字的处理%String name=request.getParameter(name);/name=new String(name.getBytes(ISO8859_1),gb2312);out.println(用户名:+name+);%表单中汉字的处理 用户名:?处理过程(修改后)NoImage表单中汉字的处理%String name=request.getParameter(name);name=new String(name.getBytes(ISO8859_1),gb2312);out.println(用户名:+name+);%表单中汉字的处理 用户名:测试