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="重置"/>
<!-- 获取上一页设置的内容 这种获取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(); }
<!-- 获取当前可选择的投票主题 --> <% 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>
注:当使用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(); }