(1)编写index.jsp页面,用于收集投票信息
<%@ page language="java" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>应用EL表达式显示投票结果</title> <link rel="stylesheet" type="text/css" href="CSS/style.css"> </head> <body><form name="form1" method="post" action="PollServlet"> <table width="403" height="230" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666"> <tr> <td height="30" bgcolor="#EFEFEF">·您最需要哪方面的编程类图书?</td> </tr> <tr> <td bgcolor="#FFFFFF"> <input name="item" type="radio" class="noborder" value="基础教程类" checked> 基础教程类</td> </tr> <tr> <td bgcolor="#FFFFFF"> <input name="item" type="radio" class="noborder" value="实例集锦类"> 实例集锦类 </td> </tr> <tr> <td bgcolor="#FFFFFF"> <input name="item" type="radio" class="noborder" value="经验技巧类"> 经验技巧类</td> </tr> <tr> <td bgcolor="#FFFFFF"> <input name="item" type="radio" class="noborder" value="速查手册类"> 速查手册类</td> </tr> <tr> <td bgcolor="#FFFFFF"> <input name="item" type="radio" class="noborder" value="案例剖析类"> 案例剖析类</td> </tr> <tr> <td align="center" bgcolor="#FFFFFF"> <input name="Submit" type="submit" class="btn_grey" value="投票"> <input name="Submit2" type="button" class="btn_grey" value="查看投票结果" onClick="window.location.href='showResult.jsp'"></td> </tr> </table> </form> </body> </html>
界面如下:
(2)编写投票功能的Servlet
package com.wuyudong.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.*; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class PollServlet extends HttpServlet { private static final long serialVersionUID = -7264414153802032772L; /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to * post. * * @param request * the request send by the client to the server * @param response * the response send by the server to the client * @throws ServletException * if an error occurred * @throws IOException * if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("GBK"); // 设置请求的编码方式 String item = request.getParameter("item"); // 获取投票项 ServletContext servletContext = request.getSession() .getServletContext(); // 获取ServletContext对象该对象在application范围内有效 Map map = null; if (servletContext.getAttribute("pollResult") != null) { map = (Map) servletContext.getAttribute("pollResult"); // 获取投票结果 map.put(item, Integer.parseInt(map.get(item).toString()) + 1); // 将当前的投票项加1 } else { // 初始化一个保存投票信息的Map集合,并将选定投票项的投票数设置为1,其他为0 String[] arr = { "基础教程类", "实例集锦类", "经验技巧类", "速查手册类", "案例剖析类" }; map = new HashMap(); for (int i = 0; i < arr.length; i++) { if (item.equals(arr[i])) { // 判断是否为选定的投票项 map.put(arr[i], 1); } else { map.put(arr[i], 0); } } } servletContext.setAttribute("pollResult", map); // 保存投票结果到ServletContext对象中 response.setCharacterEncoding("GBK"); // 设置响应的编码方式,如果不设置弹出的对话框中的文字将乱码 PrintWriter out = response.getWriter(); out.println("<script>alert('投票成功!');window.location.href='showResult.jsp';</script>"); } }
(3)编写showResult.jsp页面
<%@ page language="java" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>显示示投票结果页面</title> <link rel="stylesheet" type="text/css" href="CSS/style.css"> </head> <body> <table width="403" height="230" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666"> <tr> <td height="30" colspan="2" bgcolor="#EFEFEF">·您最需要哪方面的编程类图书?</td> </tr> <tr> <td width="79" align="center" bgcolor="#FFFFFF"> 基础教程类</td> <td width="321" bgcolor="#FFFFFF"> <img src="bar.gif" width='${220*(applicationScope.pollResult["基础教程类"]/(applicationScope.pollResult["基础教程类"]+applicationScope.pollResult["实例集锦类"]+applicationScope.pollResult["经验技巧类"]+applicationScope.pollResult["速查手册类"]+applicationScope.pollResult["案例剖析类"]))}' height="13"> (${empty applicationScope.pollResult["基础教程类"]? 0 :applicationScope.pollResult["基础教程类"]})</td> </tr> <tr> <td align="center" bgcolor="#FFFFFF"> 实例集锦类 </td> <td bgcolor="#FFFFFF"> <img src="bar.gif" width='${220*(applicationScope.pollResult["实例集锦类"]/(applicationScope.pollResult["基础教程类"]+applicationScope.pollResult["实例集锦类"]+applicationScope.pollResult["经验技巧类"]+applicationScope.pollResult["速查手册类"]+applicationScope.pollResult["案例剖析类"]))}' height="13"> (${empty applicationScope.pollResult["实例集锦类"] ? 0 :applicationScope.pollResult["实例集锦类"]})</td> </tr> <tr> <td align="center" bgcolor="#FFFFFF"> 经验技巧类</td> <td bgcolor="#FFFFFF"> <img src="bar.gif" width='${220*(applicationScope.pollResult["经验技巧类"]/(applicationScope.pollResult["基础教程类"]+applicationScope.pollResult["实例集锦类"]+applicationScope.pollResult["经验技巧类"]+applicationScope.pollResult["速查手册类"]+applicationScope.pollResult["案例剖析类"]))}' height="13"> (${empty applicationScope.pollResult["经验技巧类"] ? 0 :applicationScope.pollResult["经验技巧类"]})</td> </tr> <tr> <td align="center" bgcolor="#FFFFFF"> 速查手册类</td> <td bgcolor="#FFFFFF"> <img src="bar.gif" width='${220*(applicationScope.pollResult["速查手册类"]/(applicationScope.pollResult["基础教程类"]+applicationScope.pollResult["实例集锦类"]+applicationScope.pollResult["经验技巧类"]+applicationScope.pollResult["速查手册类"]+applicationScope.pollResult["案例剖析类"]))}' height="13"> (${empty applicationScope.pollResult["速查手册类"] ? 0 : applicationScope.pollResult["速查手册类"]})</td> </tr> <tr> <td align="center" bgcolor="#FFFFFF"> 案例剖析类</td> <td bgcolor="#FFFFFF"> <img src="bar.gif" width='${220*(applicationScope.pollResult["案例剖析类"]/(applicationScope.pollResult["基础教程类"]+applicationScope.pollResult["实例集锦类"]+applicationScope.pollResult["经验技巧类"]+applicationScope.pollResult["速查手册类"]+applicationScope.pollResult["案例剖析类"]))}' height="13"> (${empty applicationScope.pollResult["案例剖析类"] ? 0 :applicationScope.pollResult["案例剖析类"]})</td> </tr> <tr> <td colspan="2" align="center" bgcolor="#FFFFFF"> 合计:${applicationScope.pollResult["基础教程类"]+applicationScope.pollResult["实例集锦类"]+applicationScope.pollResult["经验技巧类"]+applicationScope.pollResult["速查手册类"]+applicationScope.pollResult["案例剖析类"]}人投票! <input name="Button" type="button" class="btn_grey" value="返回" onClick="window.location.href='index.jsp'"></td> </tr> </table> </body> </html> l>
最后运行界面如下: