实战2--应用EL表达式显示投票结果

简介:

(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="投票">
&nbsp;
<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">&nbsp;<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">&nbsp;<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">&nbsp;<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">&nbsp;<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">&nbsp;<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>

最后运行界面如下:

目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
《深入浅出:图解淘宝分布式数据库TDDL(及开源替代方案)》
本文图解+源码深度剖析淘宝TDDL分布式数据库中间件,揭秘其分库分表、读写分离与柔性事务原理,并横向对比ShardingSphere、MyCAT、Vitess、TiDB等主流开源方案,助你掌握分布式数据库演进脉络与选型策略。(239字)
|
5月前
|
运维 供应链 编译器
国产芯片生态:从设计到量产,到底难在哪?
国产芯片生态:从设计到量产,到底难在哪?
312 7
|
机器学习/深度学习 人工智能 知识图谱
视觉分词器突破天花板!GigaTok:港大字节联手打造3B参数视觉分词器,突破图像生成瓶颈
GigaTok是香港大学与字节跳动联合研发的3B参数视觉分词器,通过语义正则化技术和创新架构设计,解决了图像重建与生成质量间的矛盾,显著提升自回归模型的表示学习能力。
407 4
视觉分词器突破天花板!GigaTok:港大字节联手打造3B参数视觉分词器,突破图像生成瓶颈
|
5月前
|
机器学习/深度学习 人工智能 移动开发
ai搜索工具正在重构搜索流量入口
通义千问AI搜索通过算法优化、多模态理解与动态分发,重构流量入口。融合结构化数据、场景化设计与推荐联动,实现跨端协同与实时热点响应,提升搜索转化与用户体验。(238字)
269 0
|
12月前
|
机器学习/深度学习 算法 API
淘宝图片搜索API秘籍!轻松获取相似商品数据
淘宝图片搜索API是基于深度学习和计算机视觉技术的图片搜索工具,支持通过上传图片或URL搜索淘宝相似商品。其核心接口如`taobao.image.search`适用于电商购物、商品推荐及竞品分析等场景。该API具备高效性、准确性和易用性,用户只需提供一张图片即可快速获取相似商品,极大提升购物体验与效率。同时,商家也可借此优化商品展示以提高曝光率和销售机会。使用时,用户可通过Python代码调用API,上传图片并获取搜索结果。
|
缓存 前端开发 IDE
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
514 0
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
存储 算法 安全
硬盘数据恢复工具,测评八款软件 帮你恢复删除的文件
在日常使用电脑的时候,很多用户都有过误删除重要文件、硬盘无法访问或是格式化后丢失重要数据的经历。幸运的是,这些重要的数据并非在删除或硬盘格式化后就完全消失不见了,我们借助硬盘数据恢复工具仍然有很大几率恢复丢失的数据。今天会和大家讨论一下硬盘数据恢复工具的工作原理和局限性,并且测评几款常用的工具软件,希望可以帮助大家在丢失数据的时候可以快速找得解决方案。
【Qt项目专栏】贪吃蛇小游戏1.0
【Qt项目专栏】贪吃蛇小游戏1.0
679 5