文档章节

39 练习:投票系统

恋佳
 恋佳
发布于 2015/07/22 14:05
字数 880
阅读 32
收藏 1

1 问题设置页面(1) 设置投票主题 问题数量 是否可以多选。利用jsp实现

<form action="TouPiao_SetQuestion2.jsp" method="post">
     主题:    <input type="text" name="theme" /><br><br>
     问题数量:<input type="text" name="count"/><br><br>
      支持多选:<input type="checkbox" name="mutichecked" checked="checked" /> <br><br>

   <input type="submit" value="确定"/>   <input type="reset" value="重置"/>

2 问题设置页面(2)根据前一页面提供的问题数量,显示问题表单,利用jsp实现。向severlet提交表单时,利用<input type="hidden">实现

<!-- 获取上一页设置的内容  这种获取checkbox值的方法太low了~~~~(>_<)~~~~ -->
<%
	String theme1 = "";
	theme1 = request.getParameter("theme");
	int count = 0;
	count = Integer.parseInt(request.getParameter("count"));
	String mutichecked = request.getParameter("mutichecked");
	boolean ifmutichecked = false;
	if (mutichecked != null && mutichecked.equals("on"))
	{
		ifmutichecked = true;
	}
%>

<form action="/test/TouPiao_SaveQuestion" method="post">

请为主题:"<%=theme1 %>"设置问题<br><br>
<%
for(int i=0;i<count;i++)
{
	int a=i+1;
 out.println("问题"+a+": <input type='text' name='question"+i+"'/> <br><br>");


}

%>

<input type="hidden" value=<%=theme1 %> name="theme"/>
<input type="hidden" value=<%=ifmutichecked %> name="mutichecked"/>
<input type="hidden" value=<%=count%> name="count"/>
<input type="submit" value="确定"/>    <input type="reset" value="重置"/>

</form>
3 severlet 接受表单提交信息,并存储在XML文档中

注意:当Web项目引入jdom jar包时,需将jar包放在WEB-INF/lib下面

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		/**
		 * 获取主题 问题数量 支持多选
		 */
		String themeString=request.getParameter("theme");
		int count = 0;
		count = Integer.parseInt(request.getParameter("count"));
		String mutichecked = request.getParameter("mutichecked");
		System.out.println(themeString);
		/**
		 * 获取问题
		 */
		ArrayList <String> questionsArrayList=new ArrayList<String>();
		for (int i=0;i<count;i++)
		{
			
			String question=request.getParameter("question"+i);
			questionsArrayList.add(question);
			System.out.println(question);
		}
		String result="";
		/**
		 * 保存问题至XML
		 */
		try
		{
			Document document = new Document();  
			  
			  Element root = new Element("root");
			  
			  document.addContent(root);
			  //主题
			  Element themeElement=new Element("theme");
			  themeElement.setText(themeString);
			  root.addContent(themeElement);
			  //是否多选
			  Element muticheckElement=new Element("muticheck");
			  muticheckElement.setText(mutichecked);
			  root.addContent(muticheckElement);
			  // 问题
			  Element questionsElement =new Element("question");
			  
			  for (int i=0;i<questionsArrayList.size();i++)
			  {
				  String queString=questionsArrayList.get(i);
				  questionsElement.addContent(new Element("question"+i).setText(queString));
			  }
			  root.addContent(questionsElement);
			
			  //保存XML文档
			  
			  
			  Format format = Format.getPrettyFormat();
			  format.setIndent("    ");	
			  XMLOutputter outXML = new XMLOutputter(format);
			  outXML.output(document, new FileWriter("E:/toupiao/"+themeString+".xml"));
			  result="succes";
		}
		catch (Exception e)
		{
			result=e.getMessage();
		}
		  /**
		 * 向页面返回结果
		 */
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>result</TITLE></HEAD>");
		out.println("  <BODY>");
		out.println(result);
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

4 根据本地拥有的投票主题,初始化选择主题页面。

<!-- 获取当前可选择的投票主题 -->
	
	
	
	<%
	ArrayList<String> allTheme=new ArrayList<String>();
	
	File file=new File("E:/toupiao");
	File [] allXml= file.listFiles();
	
	%>

<body>
   <form action="/test/TouPiao_SetQuestions" method="post">
   欢迎使用投票系统!请选择投票主题:<br>
     主题   
      <select name="check">
   <%
    for(File subfile:allXml)
    {
    	out.print("<option>");
    	out.print(subfile.getName());
    	out.println("</option>");
    }
     %> 
    </select><br>
    <input type="submit">
    </form>
  </body>

5 根据选择的主题结果,现在投票主题

注:当使用File初始化方法时,本地文件夹路径应为“/E:/toupiao” 而不是“E:/toupiao”。如果使用后者,将会使得路径变为tomcat的根目录+“E:/toupiao”。

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		/**
		 * 获得参数
		 */

		String choose = request.getParameter("check");

		/**
		 * 解析XML文档
		 */
		SAXBuilder builder = new SAXBuilder();
		org.jdom.Document doc;
		/**
		 * 获得所有问题
		 */
		ArrayList<String> allquestionArrayList = new ArrayList<String>();
		String themeString = "";
		String ifmuticheckString = "";

		try
		{
			doc = builder.build(new File("/E:/toupiao/" + choose ));
			org.jdom.Element element = doc.getRootElement();

			themeString = element.getChild("theme").getText();
			ifmuticheckString = element.getChild("muticheck").getText();
			org.jdom.Element questions = element.getChild("question");

			java.util.List list = questions.getChildren();
			for (int i = 0; i < list.size(); i++)
			{
				org.jdom.Element element2 = (org.jdom.Element) list.get(i);
				allquestionArrayList.add(element2.getText());
			}

		}
		catch (JDOMException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		/**
		 * 构造HTML文档
		 */
		String htmlQuestion = "";
		for (int i = 1; i <= allquestionArrayList.size(); i++)
		{
			if (ifmuticheckString.equals("true"))
			{
				htmlQuestion += "<input type='checkbox' name='question'"+i+" />Q "+ i + ":"
						+ allquestionArrayList.get(i - 1)
						+ "<br>";
			}
			else
			{
				htmlQuestion +="<input type='radio' name='question' /> Q" + i + ":"
						+ allquestionArrayList.get(i - 1)
						+ "<br>";
			}
		}
		String formQuestion="<form action='TouPiao_GetResult.jsp' method='post'>" +
				"please chose the question about '"+themeString+"'<br>"+
				htmlQuestion+
				"<input type='submit' value='submit'>"+"</form>";
		/**
		 * 在页面上显示
		 */

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print(formQuestion);
		
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}



版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

下一篇: 31HTTP Telnet
恋佳
粉丝 0
博文 76
码字总数 62107
作品 0
大连
私信 提问
python 抓取免费IP,并验证是否有真实

python 抓取免费IP,并验证是否有真实 Run - 学习练习复习2016-01-30189 阅读 python抓取免费IP验证 python把这些IP爬下来时,就可以批量爬站,投票,模拟用户等操作 用到python 组件 Mysql,...

Run - 学习练习复习
2016/01/30
0
0
DoceboLMS 4.0.2 发布,在线学习系统

DoceboLMS是一个e-learning套件与CMS系统。采用PHP+MySQL开发并且遵循scorm1.2标准。DoceboLMS提供了50多种功能包括论坛,聊天,测验,视频会议,课程展示,投票,FAQ,电子报,消息收发,多...

红薯
2010/11/16
630
0
以太坊DApp开发理论入门到实战

1、初识以太坊 1、课程概述 本课程面向初学者,内容涵盖以太坊开发相关的基本概念,并将手把手地教大家如何构建一个 基于以太坊的完整去中心化应用 —— 区块链投票系统。 通过本课程的学习,...

Oo若离oO
2018/05/02
636
1
“追涨杀跌”,短线也可以这样玩?

最近对三九课程的学习,认知在不断的升级,可这还远远不够,因为还没有通过刻意练习,使其内化成自己的东西,所以说知识暂时还是别人的,只有通过不断的练习,能够在自己的投资实践中得以运用...

六弦起舞
2018/07/21
0
0
缓冲区溢出——练习题3.43B解答

题目 《深入理解计算机系统(原书第2版)》第3章 程序的机器级表示 (a) C code (b) Disassembly up through call to gets Figure 3.32 C and disassembled code for Problem 3.43. 练习器3.4...

小小浪把_Dont_know拍
2018/01/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 他只能用这个办法劝你注意身体了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# Kodaline《High Hopes》 《High Hopes》- Kodaline 手机党少年们想听歌,请使劲儿戳(这里) @xiaoshiyue :仙女...

小小编辑
5分钟前
163
6
Spring Boot Actuator 整合 Prometheus

简介 Spring Boot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等。这一节结合 Prometheus 、Grafana 来更加直观...

程序员果果
14分钟前
3
0
Linux文件查找命令详解

对于文件查找,我们最好用的还是属于find命令了,在说find命令之前,先把另外几个查找命令介绍一下。 目录 0x01 查询命令介绍 0x02 find命令介绍 0x01 查询命令介绍 在介绍之前,首先先了解一...

无心的梦呓
14分钟前
3
0
快速掌握的测试用例优先级划分方法

怎么样的设计才能算测试用例 引自:IEEE Standard 610 (1990): A set of test inputs, execution conditions, and expected results developed for a particular objective, such as to exe......

测者陈磊
17分钟前
3
0
[mycat]Attribute value "roadNodeId,version" of type NMTOKEN must be a name token

不能逗号配两个字段的主键 primaryKey="roadNodeId,version" Caused by: io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 105; Attrib......

Danni3
23分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部