课外天地 李树青学习天地JavaEE网站开发课件 → [推荐]利用Servlet制作的投票程序代码示例


  共有15321人关注过本帖树形打印复制链接

主题:[推荐]利用Servlet制作的投票程序代码示例

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1938 积分:26572 威望:0 精华:34 注册:2003/12/30 16:34:32
[推荐]利用Servlet制作的投票程序代码示例  发帖心情 Post By:2011/9/5 18:07:09 [只看该作者]

1、使用单选钮界面
Servlet为:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Exec extends javax.servlet.http.HttpServlet implements
                javax.servlet.Servlet {
        String[] names = { "Obama", "McCain" };
        int[] counts;

        public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws IOException, ServletException {
                doGet(request, response);
        }

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws IOException, ServletException {
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();

                String value = request.getParameter("candidate");
                File f = new File("surveys.txt");
                if (f.exists()) {
                        try {
                                ObjectInputStream input = new ObjectInputStream(
                                                new FileInputStream(f));
                                counts = (int[]) input.readObject();
                                input.close();
                        } catch (Exception e) {
                        }
                } else {
                        counts = new int[names.length];                
                }
                for(int i=0;i<names.length;i++)
                {
                        if(names[i].equals(value))
                        {
                                counts[i]++;
                                break;
                        }
                }
                ObjectOutputStream output = new ObjectOutputStream(
                                new FileOutputStream(f));
                output.writeObject(counts);
                output.close();
               
                StringBuffer buf = new StringBuffer();
                buf.append("<html><body>");
                buf.append("结果是:<BR>");
                for(int i=0;i<names.length;i++)
                {
                        buf.append(names[i]+":"+counts[i]+"<br>");
                }              
                buf.append("</body></html>");
                out.println(buf.toString());
        }
}


网页为:
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="http://localhost:8088/myweb/exec">
<table align="center">
        <tr>
                <td align="center">选择候选人</td>
        </tr>
        <tr>
                <td><input type="radio" name="candidate" value="Obama" checked="checked">Obama</td>
        </tr>
        <tr>
                <td><input type="radio" name="candidate" value="McCain">McCain</td>
        </tr>
        <tr>
                <td align="center"><INPUT TYPE=submit VALUE="提交"></td>
        </tr>
</table>
</FORM>
</BODY>
</HTML>

 

2、使用下拉列表框界面
Servlet不变,网页为:
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="http://localhost:8088/myweb/exec">
<table align="center">
        <tr>
                <td align="center">选择候选人</td>
        </tr>
        <tr>
                <td><SELECT name=candidate size=1>
                        <OPTION selected>Obama</OPTION>
                        <OPTION>McCain</OPTION>
                </SELECT></td>
        </tr>
        <tr>
                <td align="center"><INPUT TYPE=submit VALUE="提交"></td>
        </tr>
</table>
</FORM>
</BODY>
</HTML>

3、给下拉列表框增加自动提交功能
Servlet不变,网页为:
<HTML>
<HEAD>
</HEAD>
<script type="text/javascript">
// 该客户端脚本允许在选择完单选按钮列表后即可自动提交表单
function submit()
{
        document.forms[0].submit();
}
</script>
<BODY>
<FORM METHOD="POST" ACTION="http://localhost:8088/myweb/exec">
<table align="center">
        <tr>
                <td align="center">选择候选人</td>
        </tr>
        <tr>
                <td><SELECT name=candidate size=1 >
                        <OPTION selected>Obama</OPTION>
                        <OPTION>McCain</OPTION>
                </SELECT></td>
        </tr>
        <tr>
                <td align="center"><INPUT TYPE=submit VALUE="提交"></td>
        </tr>
</table>
</FORM>
</BODY>
</HTML>

4、给单选钮增加自动提交功能
Servlet不变,网页为:
<HTML>
<HEAD>
</HEAD>
<script type="text/javascript">
// 该客户端脚本允许在选择完单选按钮列表后即可自动提交表单
function submit()
{
        document.forms[0].submit();
}
</script>
<BODY>
<FORM METHOD="POST" ACTION="http://localhost:8088/myweb/exec">
<table align="center">
        <tr>
                <td align="center">选择候选人</td>
        </tr>
        <tr>
                <td><input type="radio" name="candidate" value="Obama"
                        checked="checked" >Obama</td>
        </tr>
        <tr>
                <td><input type="radio" name="candidate" value="McCain"
                        >McCain</td>
        </tr>
        <tr>
                <td align="center"><INPUT TYPE=submit VALUE="提交"></td>
        </tr>
</table>
</FORM>
</BODY>
</HTML>

5、改变显示为百分比
网页不变,Servlet为:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.text.DecimalFormat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Exec extends javax.servlet.http.HttpServlet implements
                javax.servlet.Servlet {
        final int size = 2;
        String[] names = { "Obama", "McCain" };
        int[] counts;

        public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws IOException, ServletException {
                doGet(request, response);
        }

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws IOException, ServletException {
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();

                double total = 0;
                double[] percents = new double[size];
                String value = request.getParameter("candidate");
                File f = new File("surveys.txt");
                if (f.exists()) {
                        try {
                                ObjectInputStream input = new ObjectInputStream(
                                                new FileInputStream(f));
                                counts = (int[]) input.readObject();
                                input.close();
                        } catch (Exception e) {
                        }
                } else {
                        counts = new int[size];
                }

                for (int i = 0; i < size; i++) {
                        if (names[i].equals(value)) {
                                counts[i]++;
                                break;
                        }
                }
                ObjectOutputStream output = new ObjectOutputStream(
                                new FileOutputStream(f));
                output.writeObject(counts);
                output.close();

                for (int i = 0; i < size; i++) {
                        total = total + counts[i];
                }
                for (int i = 0; i < size; i++) {
                        percents[i] = counts[i] / total;
                }
                DecimalFormat df = new DecimalFormat("#0.00");
                StringBuffer buf = new StringBuffer();
                buf.append("<html><body>");
                buf.append("结果是:<BR>");
                for (int i = 0; i < size; i++) {
                        buf.append(names[i] + ":" + df.format(percents[i]) + "%<br>");
                }
                buf.append("</body></html>");
                out.println(buf.toString());
        }
}


6、改变显示为比例图(需要一个纯红色的图片文件,放在当前项目的img文件夹下,名称为red.jpg)
网页不变,Servlet为:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.text.DecimalFormat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Exec extends javax.servlet.http.HttpServlet implements
                javax.servlet.Servlet {
        final int size = 2;
        String[] names = { "Obama", "McCain" };
        int[] counts;

        public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws IOException, ServletException {
                doGet(request, response);
        }

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws IOException, ServletException {
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();

                double total = 0;
                double[] percents = new double[size];
                String value = request.getParameter("candidate");
                File f = new File("surveys.txt");
                if (f.exists()) {
                        try {
                                ObjectInputStream input = new ObjectInputStream(
                                                new FileInputStream(f));
                                counts = (int[]) input.readObject();
                                input.close();
                        } catch (Exception e) {
                        }
                } else {
                        counts = new int[size];
                }

                for (int i = 0; i < size; i++) {
                        if (names[i].equals(value)) {
                                counts[i]++;
                                break;
                        }
                }
                ObjectOutputStream output = new ObjectOutputStream(
                                new FileOutputStream(f));
                output.writeObject(counts);
                output.close();

                for (int i = 0; i < size; i++) {
                        total = total + counts[i];
                }
                for (int i = 0; i < size; i++) {
                        percents[i] = counts[i] / total;
                }
                DecimalFormat df = new DecimalFormat("#0.00");
                StringBuffer buf = new StringBuffer();
                buf.append("<html><body>");
                buf.append("<table>");
                buf.append("<tr colspan='2'><td>结果是:</td></tr>");
                for (int i = 0; i < size; i++) {
                        buf.append("<tr><td>" + names[i]
                                        + ":</td><td><img src='img/red.jpg' width='" + percents[i]
                                        * 400 + "' height=10></td></tr>");
                }
                buf.append("</table>");
                buf.append("</body></html>");
                out.println(buf.toString());
        }
}


 回到顶部