39 练习:投票系统

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();
	}



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

转载于:https://my.oschina.net/900116/blog/482220

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值