任务三  实现单篇新闻内容的显示

任务三 实现单篇新闻内容的显示

学习目标

知道request对象的常用方法。

知道在URL中带参数的参数格式。

知道out对象的常用方法。

会在页面之间传递参数。

会使用JSP脚本查询数据库,并将查询的结果显示在JSP中。

能实现新闻内容的查询与显示。

任务描述

任务二实现了在首页上显示数据库中最新存储的新闻信息,如果浏览者对其中某一条新闻感兴趣,需要单击新闻标题进入到具体的新闻浏览页面。本次任务要求完成单篇新闻的显示,如图1-3-1所示。

整个新闻显示分为4个区域:标题区域、作者或来源区域、正文区域和返回链接区域。

978-7-111-44979-9-Chapter01-108.jpg

图1-3-1 单篇新闻显示效果图

任务分析与相关知识

1.网页中的参数级别

网页之间经常需要传递参数,按照参数有效时间的长短,可以分为如下几种:

1)请求级别的参数。例如,单击感兴趣的产品图片,能进入到这个产品的描述页面,说明第一个页面传递了一个产品编号给第二个页面,这样产品描述页面才能判断要显示哪一件产品的信息。又如注册页面需要传递一个用户注册的所有信息到注册处理页面。像这种参数传递都是依靠Web服务器中的“请求”对象来实现的,这些参数在请求处理结束后就不再有效了。

2)会话级别的参数。在用户访问同一个网站的时候,从一个网页跳到另一个网页,会话级别的参数都是有效的,除非超过了一定的时间或是用户关闭了浏览器,网站服务器由此判定用户这次与网站之间“活跃”的访问已经停止了,用户已经不再关注本网站了,那么会话级别的参数就随着会话一起失去了时效。最典型的会话级别的参数就是购物车,用户在网页之间穿梭,购买各种各样的商品,购物车一直有效,并记录用户所购买的商品信息,直到用户去结算,才清空了购物车;或者是用户关闭了浏览器,购物车自然就失效了。

3)应用级别的参数。只要网站服务器不重新启动,这种参数一直是持续有效的,无论客户机什么时间访问该网站,这种级别的参数都一直是可以使用的。它是生命周期最长的参数,所以一般用来存放全局的、公共的变量,如访问网站的累计人数等。

2.网页传送参数的方式

网页中的请求参数有两种来源:一种是超链接传递的,另一种是通过表单提交过来的。

1)超链接带的请求参数直接以“?参数名=参数值”的形式实现传递,如下所示。

978-7-111-44979-9-Chapter01-109.jpg

“&”用于连接多个参数。单击超链接文本“带参数跳转”之后,页面就跳转到to.jsp,并且to.jsp有两个请求级别的参数a和b可以被访问。

2)表单通过表单域的名称和值来实现参数传递,如下所示。

978-7-111-44979-9-Chapter01-110.jpg

这个表单的运行效果如图1-3-2所示,在表单的文本框中输入如图所示的文本,单击“提交”按钮之后,页面也要跳转到to.jsp,并且也带着两个请求参数a和b,相当于实现了类似“http://ip:端口/项目名/路径/to.jsp?a=test1&b=test2”的URL跳转。

978-7-111-44979-9-Chapter01-111.jpg

图1-3-2 表单运行效果图

3.网页获取参数的方式

在JSP页面中请求级别的参数都是靠内置对象request来获取的。request对象如同前面使用的out对象一样都来自Web服务器,它们是“天生”的“服务员”,无需定义和实例化,直接使用即可。

从本质上看,request对象就是用户请求的数据和处理数据的方法的集合体,要使用这个对象,就要先了解这个对象有哪些常用的方法,分别可以用来做什么。request实际上是HttpServletRequest类型的对象,它的常用方法可以参考任务四的表1-4-2,其中getParameter用来取参数。下面通过一个演示,来学习请求对象request如何获取参数。

演示 from.html传递参数给to.jsp。

1)在Hello项目中添加一个html文件from.html,代码如下所示。

代码1-3-1 from.html *

978-7-111-44979-9-Chapter01-112.jpg

2)在Hello项目中添加一个JSP文件to.jsp,代码如下所示。

代码1-3-2 to.jsp

978-7-111-44979-9-Chapter01-113.jpg

运行Hello网站项目,在地址栏输入“http://localhost:8080/Hello/from.html”,在表单填写如图1-3-2所示的数据,单击“提交”按钮,出现如图1-3-3所示的效果,如果在from.html页面直接单击超链接,进入to.jsp,出现如图1-3-4所示的效果。

978-7-111-44979-9-Chapter01-114.jpg

图1-3-3 to.jsp效果图1

978-7-111-44979-9-Chapter01-115.jpg

图1-3-4 to.jsp效果图2

演示一说明,无论是表单提交还是超链接,request都使用统一的方法来取数据,而且取出来的数据类型统一为字符串,如果取不到,则返回一个null值。

任务实施

1.任务单

本次任务的任务清单见表1-3-1。

表1-3-1 任务三的任务清单

978-7-111-44979-9-Chapter01-116.jpg

2.实施步骤

在项目GreenBar中添加一个JSP文件news_detail.jsp,代码如下所示。

代码1-3-3 news_detail.jsp

978-7-111-44979-9-Chapter01-117.jpg

978-7-111-44979-9-Chapter01-118.jpg

978-7-111-44979-9-Chapter01-119.jpg

【操作提示】

1)请模仿代码1-3-2的第11~13行代码的写法,完成第63行的代码。

2)请结合任务二所学知识,完成第72~89行的代码。

注意 本网页需要访问的数据库是任务二中创建的GreenBar数据库,以后凡是GreenBar网站项目运行,都需要这个数据库的支持,所以在运行GreenBar项目之前要确认MySQL是运行状态,并且创建好相关的数据表。

运行GreenBar网站,测试index_news.jsp页面的输出结果,如图1-3-5所示。单击该网页中的第一篇新闻标题超链接,效果如图1-3-6所示。

978-7-111-44979-9-Chapter01-120.jpg

图1-3-5 index_news.jsp页面效果

978-7-111-44979-9-Chapter01-121.jpg

图1-3-6 news_detail.jsp页面效果

自我评价

978-7-111-44979-9-Chapter01-122.jpg

思考与练习

一、填空题

1.设计一个超链接,连接路径是user.jsp,要求带一个参数,参数名为uid,参数的值存储在一个变量uid中,完成如下超链接的编写:

<ahref=<%%____>>用户</a>

2.request对象要取出参数uid,应该如何写:

Stringuid=____

3.网页之间传递的参数,根据有效时间的长短,可以分为3种类型:____、____、。

二、操作题

1.在原有的GreenBar数据库中添加一个表words(该表的结构如任务一中的表1-1-5所示),并向该表中插入10条测试数据。

2.实现产品描述页面product_detail.jsp。当浏览者单击任务二中图1-2-33所示的产品图片超链接时,进入到某一件产品的具体描述页面,如图1-3-7所示。

978-7-111-44979-9-Chapter01-123.jpg

图1-3-7 product_detail.jsp页面效果