Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象.

Slides:



Advertisements
Similar presentations
第 4 章 配合 例子源代码一起使用 Power point 制作:耿祥义 张跃平 普通高等教育 “ 十一五 ” 国家级规划教材 JSP 内置对象.
Advertisements

第 4 章 JSP 内置对象 本章主要内容:  内置对象的概念  内置对象的作用域和生命期  内置对象的作用和关系  内置对象的使用方法.
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
第 4 课 使用 JSP 处理客户端请求.  掌握 Form 表单的请求处理  掌握 JSP 常用内置对象的用法 out 对象 request 对象 response 对象 本章目标.
LOGO 第 9 章 Java Servlet 和 JSP 编程 孙焘. 重点: servlet 编程原理 1 servlet 的基础类与编程实现 2 JSP 编程原理 3 JSP 的常用语法 4.
Web Maple— 云端计 算 数学学院刘海洋 胡婷婷. 需求 什么是 Web Maple ? Maple : “ 数学家的软件 ” 符号和数值计算 动态编程语言 集成编辑环境与图形输出 Web Maple :网页上的数学家 完整的 Maple 功能 云端计算 网页独特的输入输出格式.
第14章 表单 在制作动态网页时,要实现信息交互,常常用到表单。 常见的表单有搜索表单、用户登录注册表单、调查表 单、留言簿表单等。本章节将和大家一起探讨在表单 的基本概念和各个元素,以及在Dreamweaver CS4中 如何创建表单,并通过实例掌握表单制作的方法。
《计算机网络技术》 动态网页制作技术 常用HTML控件课程积件 杨 姝.
互動表單的應用.
第六章 网页设计与制作基础.
动态网站开发 【HTTP与网络基础】 李博杰
动态Web开发技术--JSP.
第 4 章 PHP 基本語法.
第五章 JSP内置对象 第4章学习了页面组成元素和使用方法。本章学习JSP内置对象的使用。使用JSP内置对象,可以方便操作页面,访问页面环境,实现页面内、页面间、页面与环境之间的通讯。 学习目标 熟悉主要内置对象的概念 理解主要内置对象的作用域和生命期 理解主要内置对象的作用和关系 熟悉主要内置对象的使用方法.
7.5 其他对象 JSP 视频教学课程.
基于JSP搭建Web应用程序.
JavaServer Pages(JSP) 网页程序设计
第5章 HTML 標籤介紹.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
HTML概念 HTML(Hyper Text Markup Language 超文本标识语言) 是一种用来制作超文本文档的简单标记语言。
张孝祥IT课堂 -深入体验Java Web开发内幕
MVC Servlet与MVC设计模式.
第一章 JSP概述 学习目标 JSP技术是目前WEB开发技术中应用最广泛的一种.本章对JSP技术、优点、缺点、应用前景作了简要介绍。
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
第3章 JavaScript语言基础.
第三章 使用XMLHttpRequest对象
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
CT212 (02/03)-Network Programming and design
HTML.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
网页制作 第五讲 Dreamweaver基础.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
建國技術學院資訊管理學系 饒瑞佶 2004/7/5 彰化縣政府補助辦理網頁設計資料庫應用班 建國技術學院資訊管理學系 饒瑞佶 2004/7/5.
Hello World 體驗實作第一個JSP程式.
第9章 过滤器和监听器技术 过滤器(Filter)和监听器(Listener)是两种特殊的Servlet技术。过滤器可以对用户的请求信息和响应信息进行过滤,常被用于权限检查和参数编码统一设置等。监听器可以用来对Web应用进行监听和控制的,增强Web应用的事件处理能力。 本章主要介绍过滤器和监听器的编程接口、基本结构、信息配置、部署和运行,最后通过案例说明过滤器和监听器的典型应用。
第四章 網頁表單與資料傳遞.
Introduction to PHP part3
网络协会2017培训 恶补Web知识训练营 2017/4/7 – Payne.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
专题4:JSP脚本和指令.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
JavaScript 语言3 学习网站:心蕊设计
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
第六讲 JSP中的文件操作(2) 教学目的 本讲继续讲述JSP中使用Java输入、输出流实现文件的读写操作 。 1 文件上传 2 文件下载
JavaScript 靜宜大學 資管系 楊子青.
第12章 JSP的檔案與電子郵件處理 12-1 伺服端的檔案處理 12-2 伺服端檔案的讀取與寫入 12-3 客戶端的檔案上傳
ASP动态网页设计实用教程 主讲教师: 开课单位:.
張智星 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 台大資工系 多媒體檢索實驗室.
第一讲 J2EE基础 博和利初级培训 —开发技能.
网 站 设 计 与 建 设 Website design and developments
PHP 變數、常數與運算子 變數 常數 運算子
网站设计 前端 选择器(复习),表单.
第一章 JSP概述 study-thinking-action.
架站實做—AppServ
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
HTML 103 互動式網頁.
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
Ch09 在網頁之間傳遞資訊 網頁程式設計.
JSP程序设计 第9章 Servlet简介.
第十二章 过滤器.
第4章 ASP.NET服务器控件.
HTTP 1.1 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
HTML 103 互動式網頁 助教:黃毓瑩.
网 站 设 计 与 建 设 Website design and developments
第6章 PHP的数据采集.
HTML表单 JSP借由标签所构成的表单区块中,取得用户在其中特定字段输入的数据內容 。 JSP 动态网页新技术.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

Java Web 开发 授课人:张鸽

第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象  ·out ,输出对象  ·config ,配置对象  ·page ,页面对象  ·exception ,例外对象

重点介绍  request ,请求对象  session ,会话对象  application ,应用程序对象

综述  有几种对象看起来和 ASP 的内置对象差 不多,功能也类似,这是因为这些内置 对象的构建基础是标准化的 HTTP 协议。 如果使用过 ASP ,那么对这几种 JSP 内 置对象的使用应该能迅速掌握。需要注 意的问题是对象名的写法,包括这些对 象方法的调用时也要书写正确,因为 Java 语言本身是大小写敏感的。

request 和 response  “request” 对象代表的是来自客户端的请求,例如我们在 FORM 表单中填写的信息等,是最常用的对象。关于它 的方法使用较多的是 getParameter 、 getParameterNames 和 getParameterValues ,通过调用这几个方法来获取请求对 象中所包含的参数的值  “response” 对象代表的是对客户端的响应,也就是说可以 通过 “response” 对象来组织发送到客户端的数据。但是由 于组织方式比较底层,所以不建议使用,需要向客户端 发送文字时直接使用 “out” 对象即可。

request 对象示例 <html><body> 姓名 <input type="text" 姓名 <input type="text" name="UserName"> name="UserName"> <input type="submit" <input type="submit" value=" 提交 "> value=" 提交 "> </body></html>

request 对象示例( Hello_req.jsp <HTML> 你好, 你好, <% <% Name=request.getParameter("UserName"); Name=request.getParameter("UserName"); %> %>,, 今天是 今天是 <% <% Date today=new Date(); Date today=new Date(); %> %> 号,星期 号,星期 </HTML>

request 对象示例(输出结果) <HTML> 你好, 你好, 独孤求败, 今天是 今天是 9 号,星期 1 9 号,星期 1 </HTML>

session 对象  “session” 对象代表服务器与客户端所建 立的会话,当需要在不同的 JSP 页面中 保留客户信息的情况下使用,比如在线 购物、客户轨迹跟踪等。 “session” 对象 建立在 cookie 的基础上,所以使用时应 注意判断一下客户端是否打开了 cookie 。 常用的方法包括 getId 、 getValue 、 getValueNames 和 putValue 等。

session 对象  概要  Web Server 对每一个客户端请求都没有历史记忆;  Session 用来保存客户端状态信息;  由 Web Server 写入;  存于客户端;  客户端的每次访问都把上次的 session 记录传递给 Web Server ;  Web Server 读取客户端提交的 session 来获取客户 端的状态信息;

session 对象示例 (Form 表单 -Logon_session.html) <html><body> 姓名 姓名 </body></html>

session 对象示例 Logon_session.jsp <HTML> <% <% String Name=request.getParameter("UserName"); String Name=request.getParameter("UserName"); session.putValue("LogName", Name); session.putValue("LogName", Name); %> %> 你的名字 " " 已经写入 session 你的名字 " " 已经写入 session check check </HTML>

session 对象示例 (Check_session.jsp) <HTML><BODY> <% <% String yourName=(String)session.getValue("LogName"); String yourName=(String)session.getValue("LogName"); if (yourName= =null) if (yourName= =null) { %> 您还未登录 %> 您还未登录 <% <% }else }else { %> %> " " 已经登录 " " 已经登录 <% <% } %> %></BODY></HTML>

application 对象  “application” 对象负责提供应用程序 在服务器中运行时的一些全局信息, 常用的方法有 getMimeType 和 getRealPath 等。 MIME 表示多用途 Internet 邮件扩允协议。 MIME 扩允了基本的面向 文本的 Internet 邮件系统,以便可以在消息中包含二进制附件。 MIME 类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型, 当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

out  “ out ” 对象代表了向客户端发送数据的对象,与 “ response ” 对象不同,通过 “ out ” 对象发送的内容将是浏 览器需要显示的内容,是文本一级的,可以通过 “ out ” 对 象直接向客户端写一个由程序动态生成 HTML 文件。常用 的方法除了 pirnt 和 println 之外,还包括 clear 、 clearBuffer 、 flush 、 getBufferSize 和 getRemaining ,这是因为 “ out ” 对 象内部包含了一个缓冲区,所以需要一些对缓冲区进行 操作的方法。

config 、 page 、 exception  “config” 对象提供一些配置信息,常用的方法有 getInitParameter 和 getInitParameterNames ,以 获得 Servlet 初始化时的参数。  “page” 对象代表了正在运行的由 JSP 文件产生的 类对象,不建议一般读者使用。  “exception” 对象则代表了 JSP 文件运行时所产 生的例外对象,此对象不能在一般 JSP 文件中直 接使用,而只能在使用了 “ ” 的 JSP 文件中使用

request 请求对象  1 . getAttribute getAttribute(String name) :获得指定名字的 属性,如果该属性不存在,将会返回 null 。

request 请求对象  如果所给名称的属性不存在将返回空值。  属性名应该遵循和包命名方式同样的约 定,不要采用如 “java.*” 、 “ javax.*” 及 “sun.*”. 这样的命名。  参数: name 一个标示属性名的字符串  返回值:一个包含属性值的对象,当属性 不存在是为空。

request 对象使用示例( test3.1.jsp ) <html><head><title>request</title></head><body> 用户登录 用户登录 用户名: 密码: 密码:

浏览器类型 : IE Netscape Netscape 资料选项: 资料选项: 标题 标题 详细 详细 </form></body></html>

Post.jsp 代码 <html><head><title>test</title></head><body><% out.println(" 用户名: "+request.getParameter("User")+" "); out.println(" 密码: "+request.getParameter("pwd")+" "); out.println(" 浏览器: "+request.getParameter("radio")+" "); out.println(" 标题: "+request.getParameter("check1")+" "); out.println(" 详细: "+request.getParameter("check2")+" "); out.println(" 隐含: "+request.getParameter("hidden")+" "); out.println("getContentLength()="+request.getContentLength()+"<br>");

out.println("getContentType()="+request.getContentType()+"<br>");out.println("getRequestURI()="+request.getRequestURI()+"<br>");out.println("getServerPort()="+request.getServerPort()+"<br>");out.println("getServerName()="+request.getServerName()+"<br>");out.println("getProtocol()="+request.getProtocol()+"<br>");out.println("getRemoteAddr()="+request.getRemoteAddr()+"<br>");out.println("getHeaderNames()="+request.getHeaderNames()+"<br>");out.println("getMethod()="+request.getMethod()+"<br>");out.println("getServletPath()="+request.getServletPath()+"<br>"); out.println("isRequestedSessionIdValid()="+request.isRequestedSessionIdVa lid()+ " "); " ");%></body></html>

运行结果

session 对象示例 <html><head><title>session</title></head><body> 请输入您的姓名: </body></html>

post1.jsp <html><head><title>post.jsp</title></head><body> <p><% name = request.getParameter("username"); // 将 username 存入 session session.putValue("username", name); %> 您的姓名是: 您的姓名是: 您最喜欢的娱乐是: </form></body></html>

post11.jsp <html><head><title>post1.jsp</title></head><body> <%amuse=request.getParameter("amuse"); String user=(String)session.getValue("username"); %> 您的姓名是: 您的姓名是: 您喜欢的娱乐是: 您喜欢的娱乐是: </body></html>

运行结果

提交后

输入值

再次提交(保存名字)

application 对象运行示例 <html><head><title>application</title><head><body> <% out.println("Java Servlet API Version "+application.getMajorVersion() +"."+application.getMinorVersion()+"<br>"); out.println(“test3.3.jsp's MIME type is:"+application.getMimeType(“test3.3.jsp") +"<br>"); out.println("URL of ‘test3.3.jsp' is: "+application.getResource(“/test3.3.jsp")+" "); out.println("getServerInfo()="+application.getServerInfo()+"<br>"); out.println(application.getRealPath(" ")); application.log("Add a Record to log_file"); %> </body></html>

运行结果

application 对象实现网页计数器 <html> 网页计数器 网页计数器 <body> <% if (application.getAttribute("counter")==null) application.setAttribute("counter","1");else{ String strnum=null; strnum=application.getAttribute("counter").toString(); int icount=0; icount=Integer.valueOf(strnum).intValue();icount++;application.setAttribute("counter",Integer.toString(icount)); } %> 您是第 位访问者! </body></html>

运行结果 ( 第一次访问 )

刷新一次

内置对象小结  全面介绍了 JSP 的几种内置对象。熟练使 用这些内置对象是开发 JSP 应用程序的基 本要求,尤其是对于 request 、 session 和 application 对象更是必须要掌握的。  会使用对象所具有的方法,能熟练使用每 一种对象的几种常用方法。

参考: HTML 表单  复习 Web 运行原理  HTML 表单的概念  表单元素介绍  HTML 表单的客户端确认  客户端表单确认实例

Web 运行原理- 1  客户端同 Web 服务器之间的协议为 http  HTTP 为超文本传输协议  HTPP 协议为 “ 请求和响应 ” 协议  客户端请求包括:请求行、头、信息体  客户端请求的方法  GET 、 POST 、 HEAD  DELETE 、 TRACE 、 PUT  提交表单的方法: GET 、 POST

Web 运行原理- 2  服务器接收到请求后,返回 HTTP 响应  每个响应:状态行、头、信息体  常见状态  404 所请求的文件不存在  500 服务器程序出错  200 OK 成功  信息体用于浏览器显示

页面访问失败

HTML 表单  表单是具有输入域、文本域的页面  用于客户端同服务器端交互  用户在客户端填写表单,然后 “ 提交 ”  表单中的信息发送到服务器  服务器返回处理情况

HTML 表单标记  表单主标记    表单中的标记    是表单开始标记, 结束

表单的例子 <html> 表单 表单 <body> 用户登录 用户登录 用户名: 密码: 密码: </form></body></html>

运行结果

form 标记  描述表单的特性,语法  method 表单传输方法  GET 方法将表单信息在 URL 后传输  POST 方法将表单信息作为信息体传输  action 为表单处理方式,通常为一个 URL  enctype 为编码方式

标记 标记  表单中输入信息的区域  属性  type 类型  name 名称  id 标识  maxlength 最大字符数  size 输入域宽度  value 域的初始值  button 按钮 用 javascript 响应

的类型 的类型  text 文本  passwowrd 口令方式  checkbox 多选框 name 相同  radio 单选按钮 name 相同  image 图片  hidden 隐藏表单 发送数据  submit 提交按钮 向服务器提交表单  reset 复位按钮 将表单充置为初始状态

文本框: TEXTAREA  多行文本域:  多行文本域:  参数  COLS :宽度  ROWS :高度  NAME :名称 CPU PIV 1500 Memory 512M

下拉框: SELECT  定义列表框:  定义列表框:  参数  MULTIPLE 可同时选取多行  NAME 名称  SIZE 可见项目数  每个项目用 option 标记  属性 SELECTED 出现在 option 表示选中

select 的例子 北京 北京 天津 天津 上海 上海 重庆 重庆 </select>

表单提交  提交方式:  submit 类型按钮提交表单  通过普通按钮的 javascript 函数  传输方法依据 中的 method  推荐使用 POST  传输编码依据 中的 enctype  处理方式依据 中的 action

表单清除  reset 按钮重置表单为初始值

综合例子 <html> 表单 表单 <body> 用户注册 用户注册 用户名: 密码: 密码: 你喜欢: 你喜欢: 足球 足球 篮球 篮球

性别: 男 男 女 女 你的计算机 你的计算机 CPU PIV 1500 Memory 512M 你计算机的操作系统 你计算机的操作系统

你所在地: 北京 北京 天津 天津 上海 上海 重庆 重庆 </select> </form></body>

运行结果

表单的确认  客户端确认  减少服务器负载  缩短用户等待时间  兼容性难  服务器端确认  统一确认  兼容性强  服务器负载重

客户端确认  采用 javascript 进行确认  常用函数  isBetween  isDate  isTime  isDigit  is  isEmpty  isInt  isReal

客户端确认例子 <html> 客户端确认 客户端确认 <body> 用户登录 用户登录 用户名: 密码: 密码: </form>

function checkform(frm){ var flag=true; if(frm.name.value==""){ alert(" 姓名不能为空,请输入值! "); alert(" 姓名不能为空,请输入值! "); frm.name.focus(); frm.name.focus(); flag=false; flag=false;} return flag; }</SCRIPT></body></html>

运行结果

2.3.4 JSP 与客户机的交互  从表单中获得参数  返回参数  表单的服务器端确认

从表单中获得参数  JSP 通过 request 内置对象获取表单信息  用不同的方法获取不同种类的信息  获取参数的主要方法:  getParameter() 获取参数的值  getParameterNames() 获取参数的名称  getParameterValues() 获取多个值

getParameter()  可以获得文本框、文本区域、单选、多选 的值  表单中各元素的 NAME 属性是它的唯一标 识,用它获取参数。  参考 peixun2.11.jsp 及 post.jso request.getParameter("User");

向客户端输出  使用内置对象 out out.println(content)  使用 “=”

表单的服务器端确认  在客户端不能用 JSP 进行确认  分工:数据处理在服务器端  实效性:客户端得到服务器确认后表明数 据已经到达服务器  客户端兼容性好  缺点:加大服务器负载和用户等待时间

服务器端确认方法  采用 Java 类对表单数据进行复杂的检查  采用 JSP 进行确认

服务器端确认的例子 <html> 服务器端确认 服务器端确认 <body> 用户登录 用户登录 用户名: 密码: 密码: </form></body></html>

loginAction.jsp <html> 确认 JSP 确认 JSP <body><% String name=request.getParameter("name"); String pwd=request.getParameter("pwd"); if((name!=null)&&(!name.equals(""))){ name=new String(name.getBytes("ISO8859_1"), "gb2312"); out.println(" 用户名: " +name+" "); out.println(" 密码: "+pwd+" "); }else{%>

用户名不能为空 用户名不能为空 用户登录 用户登录 用户名: "> 密码: "> 密码: "> </form><%}%></body></html>

运行结果( TOMCAT )

( 未输入姓名 ) 直接提交

输入用户名

输入用户名后提交

JSP 的汉字问题的原理  客户端和服务器用 gb2312  HTTP 传输编码用 ISO8859_1  服务器需要指示客户端文档的编码方式 ISO8859_1 gb2312

JSP 的汉字问题出现环节  客户端显示文档时的编码方式(由服务器 中的 JSP 、 Servlet 指明)  客户端发送汉字时自动转换为 iso8859_1  服务器中采用 gb2312 对汉字编码,接收到 客户端汉字需要转换为 gb2312  服务器端将 JSP 转换为 Servlet 时自动将汉 字转换为 iso8859_1  服务器端应该告诉客户端汉字的编码方式

JSP 汉字问题的范围  JSP 文件的汉字问题  表单处理的汉字问题  Servlet 的汉字问题(以后讲解)  JDBC 的汉字问题(以后讲解)

JSP 文件的汉字问题  JSP 中的汉字字符串在服务器端用 gb2312  在编译为 Servlet 时自动转换为 iso8859_1  汉字在传输中是正确的  在没有特别指示下,浏览器中无法正确显示  在 HTML 中指示浏览器文档的编码( myJSP\index.html )    在 JSP 中指示 JSP 引擎文档的编码    每个要显示汉字的 JSP 文档都应该包含该语句

JSP 文件的汉字问题 ( JSPhanzi.jsp ) JSP 中的汉字问题 <% String HelloMsg=" 你好 "; out.println(HelloMsg); %> JSP 中的汉字问题 你好

JSP 中增加编码指示后 page contentType="text/html; charset=gb2312"%> JSP 中的汉字问题 <% String HelloMsg=" 你好 "; out.println(HelloMsg); %> JSP 中的汉字问题 你好

表单处理中的汉字问题  表单处理涉及到客户端和服务器的完整交 互过程  在客户端和服务器是 gb2312 ,传输用 ISO8859_1  在服务器端接收到客户端数据时需要转换 为 gb2312 后进行处理,方法 name=new String(name.getBytes("ISO8859_1"), "gb2312");  服务器端指示客户端汉字的显示编码

表单处理的汉字问题 (hanzi.jsp) 表单处理的汉字问题 <form method="POST" name="frm1" action="hanziAction.jsp"> 用户登录 用户名: 表单处理的汉字问题 <form method="POST" name="frm1“ action="hanziAction.jsp"> 用户登录 用户名:

处理过程 contentType="text/html; charset=gb2312"%> 表单中汉字的处理 <% String name=request.getParameter("name"); //name=new String(name.getBytes("ISO8859_1"), "gb2312"); out.println(" 用户名: " +name+" "); %> 表单中汉字的处理 用户名: ????

处理过程(修改后) contentType="text/html; charset=gb2312"%> 表单中汉字的处理 <% String name=request.getParameter("name"); name=new String(name.getBytes("ISO8859_1"), "gb2312"); out.println(" 用户名: " +name+" "); %> 表单中汉字的处理 用户名:测试

综合练习 综合练习:我的网上商店 myshop ,具有以下功能 综合练习:我的网上商店 myshop ,具有以下功能  用户登录、注册  口令空转向 loginError.jsp (采用 )  建立 web 应用 myshop ,参考 softshop 目录结构  体会表单的两种发送方法 页面设计:  完成首页、用户登录、注册( index.jsp 、 login.jsp 、 registor.jsp )  首页 index.jsp 包括简介、商品分类、新注册用户、登录用户计数, 按钮:用户登录、注册  用户计数采用 application 对象  login.jsp 包括输入用户名、口令的表单,用户名是否为空由服务 器端确认,口令是否为空由客户端确认,处理表单的 jsp 为 check.jsp ,当口令为空时转向显示错误页面,登录成功时显示用 户名和口令(表单采用 GET 方法发送)

实践:练习 JSP 编程- 综合练习  registor.jsp 中录入用户信息,综合使用表单的功能: form 标记(表单采用 POST 方法发送) text :用户名、口令 radio 按钮:性别 select :出生年月、所在地、行业 其中会使用到 option 标记 checkbox :选择兴趣 textarea :自我介绍 按钮:提交和重新输入  处理 registor.jsp 的 jsp 为 record.jsp , record.jsp 接收 text 、 textarea 、 radio 、 select 的数据,并显示出来(注意汉字问题)。  record.jsp 中用 session 存储新注册的用户名。  record.jsp 包含返回首页 index.jsp 的超链接  index.jsp 中用 session 提取新注册用户并显示