filter案例:页面静态化(图书馆)

页面静态化:

1.第一步: 写一个小项目,图书管理

**页面:

jsp:

-link.jsp链接页面,四个超链接

///查询所有

///查看SE分类.

///查看EE分类

///查看框架分类3

-show.jsp .

显示查询结果

servlet:

-BookServlet

--findAll()  -->查看所有图书

--findByCategory --> 按照分类进行查询

BOOKServlet: 略

BookDao :

--List<Book> findAll()

--List<Book> findByCategory (int category)

domain :Book 类

2.第二步: 什么事页面静态化

首次访问去数据库获取数据,然后把数据保存到一个HTML页面中,

二次访问,就不再去数据库获取了,而是直接显示HTML


页面静态化:

1.目标

 给出一个过滤器,把servlet请求的资源所做输出保存到html中,重定向到html页面。

 两次访问时,这个html已经存在,则直接重定向,无需再访问servlet!

(第一次访问时,查找请求对应的html页面是否存在。若存在,则重定向到html;若不存在,则放行,放行的目的,即把servlet访问数据库后,输出给客户端的数据保存到一个html文件中,再重定向到html)

一.获取category参数

category的四种可能:

1.     null--->null.html

2.     1--->1.html

3.     2--->2.html

4.     3--->3.html

html页面保存路径应放在htmls目录下

判断对应的html文件是否存在,若存在,直接重定向


页面静态之生成html页面

一、如果html文件不存在,需要生成html

1.放行

show.jsp 会做出许多输出,阻止它输出给客户端而输出到指定的 html 文件

2、调包 response

使 getwriter()与一个 html 文件绑定,show.jsp会输出到了 html 文件中

3、调包 StaticResponse

创建一个流对象使它与 html 文件路径绑定,返回一个与html绑定在一起的printwriter 对象,jsp 会使用它进行输出,使得数据均输出到 html 文件中

4、完成调包工作 

创建 StaticResponse,因为不存在才放行,所以在给予出 response 之后,需给予不存在的绝对文件路径(注意:构造器会自动生成文件)继而完成放行,放行之后即回城。

Statcresponse sr = new statcresponse (res, destrile.getAbsolutePath());chain.doFilter (request, sz);//放行,即生成了 html 文件

//这时页面已经存在,重定向到 htm 文件。

res. sendRedirect(req. get 文本路径 () + "/ htmls / " = html 页面);

 

 

 

阅读剩余
THE END