目录

  • 1 阶段1模块一Java Web编程准备
    • 1.1 学习导航
    • 1.2 任务一进行系统需求分析与总体设计
    • 1.3 任务二搭建开发环境
    • 1.4 任务三制作静态页面
    • 1.5 任务四部署并运行第一个JSP文件
    • 1.6 模块一课件
    • 1.7 模块一习题
  • 2 阶段1模块二Java Web编程入门
    • 2.1 学习导航
    • 2.2 任务一认识JSP页面组成元素
    • 2.3 任务二认识JSP的内置对象
    • 2.4 任务三使用out对象输出信息
    • 2.5 任务四获取客户端请求数据
    • 2.6 任务五实现页面跳转
    • 2.7 任务六实现访问控制
    • 2.8 任务七制作网页计数器
    • 2.9 模块二 课件
    • 2.10 模块二习题
  • 3 阶段1模块三JavaWeb数据库编程
    • 3.1 学习导航
    • 3.2 任务一使用MySQL
    • 3.3 任务二使用SQL操作数据
    • 3.4 任务三认识连接数据库的步骤
    • 3.5 任务四使用Statement处理数据
    • 3.6 任务五使用PreparedStatement处理数据
    • 3.7 模块三课件
    • 3.8 模块三习题
  • 4 阶段1模块四JavaWeb基础阶段实训
    • 4.1 课件
    • 4.2 IT新闻资讯系统
  • 5 阶段2模块五Java Web应用优化
    • 5.1 学习导航
    • 5.2 任务一认识软件设计分层架构
    • 5.3 任务二使用分层架构实现管理员登录
    • 5.4 模块五课件
    • 5.5 模块五习题
  • 6 阶段2模块六Java Web开发业务应用
    • 6.1 学习导航
    • 6.2 任务一实现页面的分页显示
    • 6.3 任务二使用SmartUpload组件实现文件上传下载
    • 6.4 任务三使用图表组件显示动态数据图表
    • 6.5 模块六课件
    • 6.6 模块六习题
  • 7 阶段2模块七Servlet技术基础
    • 7.1 学习导航
    • 7.2 任务一认识Servlet
    • 7.3 任务二创建并运行一个简单的Servlet
    • 7.4 任务三使用Filter解决中文乱码问题
    • 7.5 模块七课件
    • 7.6 模块七习题
  • 8 阶段2模块八MVC开发模式
    • 8.1 学习导航
    • 8.2 任务一认识MVC模式
    • 8.3 任务二使用MVC模式实现用户登录
    • 8.4 模块八课件
    • 8.5 模块八习题
  • 9 阶段2模块九  Java Web进阶阶段实训
    • 9.1 模块九课件
    • 9.2 在线收藏夹
  • 10 阶段3模块十学生会网站项目开发
    • 10.1 模块十课件
  • 11 实训题库
    • 11.1 网络留言板系统1
    • 11.2 网络留言板系统2
    • 11.3 猜数游戏
    • 11.4 学生成绩查询系统
    • 11.5 场馆管理系统
    • 11.6 物资管理系统
    • 11.7 网络书签
    • 11.8 商品库存系统
    • 11.9 火车车次管理系统
    • 11.10 会议室预定系统
    • 11.11 人员档案管理系统
    • 11.12 新闻资讯系统
任务四获取客户端请求数据
  • 1 知识链接
  • 2 任务实现
  • 3 同步实训

【问题引入】

动态网页具有交互性,而能够处理客户端请求是与用户进行信息交互的基础。那么服务器是如何获取客户端请求数据的呢?

【实现思路】

request对象是JSP中最常用的对象之一,用于封装客户端的请求信息,通过调用相应的方法可以获取客户端提交的信息。用户可以使用HTML表单提交客户端数据,也可以采用请求参数的方式将客户端数据提交给服务器。下面通过案例方式来深入学习如何使用request对象的相关方法获取表单数据及请求参数。

【知识链接】

1  Web网页中表单格式

用户通常使用HTML表单向服务器的某个JSP页面提交信息,表单一般格式为:

<formmethod="get/post" action="表单要提交到的地点">

[接收数据的表单组件]

[数据提交控件]

</form>

若采用post方式:

post方式会将表单的内容通过http发送,在地址栏中看不到表单的提交信息,而且使用post方式发送信息没有字符长度的限制。

若采用get方式:

那么表单内容经过编码之后通过URL发送(可以在地址栏中看到表单信息,不安全,一般不建议使用get方式)。使用get方式发送信息时有255个字符的限制。

2  获取HTML表单提交的数据

使用request对象的getParameter方法获得上一个页面表单中文本框、密码框、单选框、下拉框所提交的单个参数值,使用request对象的getParameterValues方法获得上一个页面中复选框所提交的多个参数值。

使用方法:

request.getParameter("表单组件名");           //获取单个值

request.getParameterValues("表单组件名");        //获取多个值

表单中输入或选择的数据有可能是中文的,为了避免出现乱码问题,需要使用request对象的setCharacterEncoding方法,指定请求的编码方式,一般为GBKUTF-8。调用request对象的setCharacterEncoding方法的语句一定要在页面中没有调用任何request对象的方法时才能使用,否则该语句将不起作用。

处理表单中中文数据方法:

request.setCharacterEncoding("GBK");               //表单中中文数据处理

 

3  请求参数

在表单中采用get方式提交数据时,在地址栏中显示的地址为:

http://localhost:8080/MyWeb/ch02/doreg.jsp?uname=greatwall&pwd=123456&sex=male&study=%B2%A9%CA%BF&like=%B3%AA%B8%E8&like=%D4%C4%B6%C1

我们发现客户端要传递给目标文件的数据在“?”后面,也就是数据和目标文件之间用“?”隔开,数据的格式为“请求参数名=参数值”。

如果有多个请求参数要传递,多个参数值对之间通过“&”分隔开。

4  获取访问请求参数

request对象用于处理HTTP请求中的各项参数。在这些参数中,最常用的就是获取访问请求参数。使用请求参数形式传递数据的方法通常用在超级链接中,当传递数据不多时,可以直接通过链接来传递数据。

使用方法:

request.getParameter("请求参数名");

使用超级链接进行数据传递时采用get方式提交请求,如果在传递数据中存在中文,由于请求参数采用的是ISO-8859-1编码,不支持中文,若使用request对象直接获取时容易产生乱码问题,为避免乱码问题,需要对获取的数据重新进行编码。由于使用request对象获取的数据类型均是String类型,因而可以将获取到的数据通过String构造方法使用UTF-8GBK编码重新构造一个String对象,才可以正确显示出中文。

解决请求参数中中文数据代码:

newString(request.getParameter("请求参数名").getBytes("iso-8859-1"),"utf-8") ;