1 説明
静的ページ自体は動的ページよりも何倍も高速ですが、動的ページはデータベース内で常にクエリを実行する必要があるため、さらに速度が低下します。
ページの静的化とは、動的ページによって生成されたHTMLをサーバー上のファイルに保存し、同じリクエストが行われたときに動的ページは実行されなくなりますが、前回生成された静的ページは実行されます。ユーザーに直接返信しました。また、静的ページは検索エンジンがあなたを見つけるのにも役立ちます。
2 本のカテゴリを表示するまず、さまざまなカテゴリの本を表示するための小さな例を書いてみましょう。次に、動的ページを静的にする方法を考えます。
index.jsp<body><a href="<c:url value='/BookServlet'/>">全部图书</a><br/><a href="<c:url value='/BookServlet?category=1'/>">JavaSE分类</a><br/><a href="<c:url value='/BookServlet?category=2'/>">JavaEE分类</a><br/><a href="<c:url value='/BookServlet?category=3'/>">Java框架分类</a><br/> </body>
public class BookServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { BookService bookService = new BookService(); List<Book> bookList = null; String param = request.getParameter("category"); if(param == null || param.isEmpty()) { bookList = bookService.findAll(); } else { int category = Integer.parseInt(param); bookList = bookService.findByCategory(category); } request.setAttribute("bookList", bookList); request.getRequestDispatcher("/show.jsp").forward(request, response); }}
<table border="1" align="center" width="50%"> <tr> <th>图书名称</th> <th>图书单价</th> <th>图书分类</th> </tr> <c:forEach items="${bookList }" var="book"> <tr> <td>${book.bname }</td> <td>${book.price }</td> <td> <c:choose> <c:when test="${book.category eq 1}"><p style="color:red;">JavaSE分类</p></c:when> <c:when test="${book.category eq 2}"><p style="color:blue;">JavaEE分类</p></c:when> <c:when test="${book.category eq 3}"><p style="color:green;">Java框架分类</p></c:when> </c:choose> </td> </tr> </c:forEach></table>
ユーザーが初めてページにアクセスしたときに静的ページを生成し、リクエストを静的ページにリダイレクトします。ユーザーが再度アクセスすると、静的ページに直接リダイレクトされます。
さまざまなリクエストに対して静的ページを生成する必要があります。たとえば、ユーザーが BookServlet?category=1 にアクセスするときは、静的ページも生成する必要があります。ページ。つまり、パラメーターが異なれば、異なる静的ページが生成されます。
カテゴリをキーとして使用し、静的ページのパスを値として使用し、それをマップに保存してから、そのマップを ServletContext に保存します。対応する静的ページがない場合は、静的ページを生成し、静的ページが存在する場合は、その静的ページに直接リダイレクトします。