用jsp将xml文件解析到网页显示,并把数据提交保存到数据库

来源:岁月联盟 编辑:exp 时间:2012-09-19
<?xml version="1.0" encoding="UTF-8"?> 
<questions id="1">   
   <question id="1" type="1"> 
       <title><![CDATA[你是哪个国家的人?]]></title>
       <answer>
        <it><![CDATA[1、中 国]]></it>  
        <it><![CDATA[2、日 本]]></it>  
        <it><![CDATA[3、韩 国]]></it>
        <it><![CDATA[4、其 他]]></it>       
       </answer>         
   </question>   
   <question id="3" type="2">
      <title><![CDATA[你是什么样的人?]]></title>
       <answer>
        <it><![CDATA[1、文 静]]></it>  
        <it><![CDATA[2、干 净]]></it>  
        <it><![CDATA[3、豪 爽]]></it> 
        <it><![CDATA[4、不 丑]]></it>            
       </answer>         
   </question>
   <question id="4" type="2">
      <title><![CDATA[你是什么样的人?]]></title>
       <answer>
        <it><![CDATA[1、文 静]]></it>  
        <it><![CDATA[2、干 净]]></it>  
        <it><![CDATA[3、豪 爽]]></it> 
        <it><![CDATA[4、不 丑]]></it>             
       </answer>         
   </question>
   <question id="5" type="3"> 
       <title><![CDATA[你怎样评价自己?]]></title>
       <answer>
        <it><![CDATA[例如,我是一个很牛逼的人!]]></it>               
       </answer>
   </question> 
   <question id="6" type="3"> 
       <title><![CDATA[你怎样评价自己?]]></title>
       <answer>
        <it><![CDATA[例如,我是一个很牛逼的人!]]></it>               
       </answer>
   </question>            
</questions>
questions.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="javax.xml.parsers.*,org.w3c.dom.*"%>
<%
 
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%>">  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    
    <title>QUESTION</title>
  </head> 
  <body bgcolor="#79CDCD">
   <%  
    DocumentBuilderFactory questionDBF=DocumentBuilderFactory.newInstance();   
 DocumentBuilder questionDB = questionDBF.newDocumentBuilder();
    Document document=questionDB.parse(pageContext.getServletContext().getResourceAsStream ("question.xml"));
    Element element = document.getDocumentElement();       
    NodeList questions = element.getElementsByTagName("question");
    %>
    <form name="questionform" id="questionform" action="questionsave.jsp" method="POST">     
    <%
    out.println("<input type="+"/"hidden/""+" name="+"/"question_id/""+" value="+"/""+element.getAttribute("id")+"/""+"/>");
    for (int i = 0; i < questions.getLength(); i++) {
   Element questionElement = (Element) questions.item(i);     
   if(Integer.parseInt(questionElement.getAttribute("type"))==1){
    NodeList childNodes = questionElement.getChildNodes();    
    for (int j = 0; j< childNodes.getLength(); j++) {
     //Element answerElement = (Element)answers.item(j);
     if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {
      if ("title".equals(childNodes.item(j).getNodeName())) {
       out.println("<h3>"+questionElement.getAttribute("id")+"、"+childNodes.item(j).getFirstChild().getNodeValue()+"</h3>");
       //out.println("<input type="+"/"hidden/""+" name="+"/"question_single_"+questionElement.getAttribute("id")+"/""+" value="+"/""+questionElement.getAttribute("id")+"/""+"/>");  
      }else if ("answer".equals(childNodes.item(j).getNodeName())) {
          NodeList itemNodes=childNodes.item(j).getChildNodes();
       for(int k=0;k<itemNodes.getLength();k++){
        //Element itemElement=(Element)itemNodes.item(k);
        if(itemNodes.item(k).getNodeType()==Node.ELEMENT_NODE){
         if("it".equals(itemNodes.item(k).getNodeName())){
          out.println("<input name="+"/"sing_"+questionElement.getAttribute("id")+"_"+questionElement.getAttribute("type")+"/" "+" type="+"/"radio/""+" value="+"/""
          +itemNodes.item(k).getFirstChild().getNodeValue()+"/""+">"+itemNodes.item(k).getFirstChild().getNodeValue()+"</input>");         
         }
        }
       }     
      }
     }
     }
   }
   if(Integer.parseInt(questionElement.getAttribute("type"))==2){
    NodeList childNodes = questionElement.getChildNodes();    
    for (int j = 0; j< childNodes.getLength(); j++) {    
     if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {
      if ("title".equals(childNodes.item(j).getNodeName())) {
       out.println("<h3>"+questionElement.getAttribute("id")+"、"+childNodes.item(j).getFirstChild().getNodeValue()+"</h3>");
       //out.println("<input type="+"/"hidden/""+" name="+"/"question_chebox_"+questionElement.getAttribute("id")+"/""+" value="+"/""+questionElement.getAttribute("id")+"/""+"/>");  
      }else if ("answer".equals(childNodes.item(j).getNodeName())) {
          NodeList itemNodes=childNodes.item(j).getChildNodes();
       for(int k=0;k<itemNodes.getLength();k++){
        //Element itemElement=(Element)itemNodes.item(k);
        if(itemNodes.item(k).getNodeType()==Node.ELEMENT_NODE){
         if("it".equals(itemNodes.item(k).getNodeName())){
          out.println("<input name="+"/"che_"+questionElement.getAttribute("id")+"_"+questionElement.getAttribute("type")+"/" "+" type="+"/"checkbox/""+" value="+"/""
          +itemNodes.item(k).getFirstChild().getNodeValue()+"/""+">"+itemNodes.item(k).getFirstChild().getNodeValue()+"</input>");
         }
        }
       }     
      }
     }
     }
   }
   if(Integer.parseInt(questionElement.getAttribute("type"))==3){
    NodeList childNodes = questionElement.getChildNodes();       
    for (int j = 0; j< childNodes.getLength(); j++) {    
     if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {
      if ("title".equals(childNodes.item(j).getNodeName())) {
       out.println("<h3>"+questionElement.getAttribute("id")+"、"+childNodes.item(j).getFirstChild().getNodeValue()+"</h3>");
       //out.println("<input type="+"/"hidden/""+" name="+"/"question_answer_"+questionElement.getAttribute("id")+"/""+" value="+"/""+questionElement.getAttribute("id")+"/""+"/>");
      }else if ("answer".equals(childNodes.item(j).getNodeName())) {
          NodeList itemNodes=childNodes.item(j).getChildNodes();
       for(int k=0;k<itemNodes.getLength();k++){
        //Element itemElement=(Element)itemNodes.item(k);
        if(itemNodes.item(k).getNodeType()==Node.ELEMENT_NODE){
         if("it".equals(itemNodes.item(k).getNodeName())){
          out.println("<textarea name="+"/"te_"+questionElement.getAttribute("id")+"_"+questionElement.getAttribute("type")+"/" "+" rows="+"/"4/""+" cols="+"/"100/""+" value="+"/""
          +itemNodes.item(k).getFirstChild().getNodeValue()+"/""+">"+itemNodes.item(k).getFirstChild().getNodeValue()+"</textarea>"+"<br>");
         }
        }
       }     
      }
     }
     }
   }  
    }
   %>
   <br/>   
     用户名:<input type="text" name="username" id="username" value="" size="20" />&nbsp;&nbsp;                               
          <input type="submit" value="提交" name="submit" />&nbsp;&nbsp;
          <input type="reset" value="重置" name="reset" />              
      </form>
  </body>
</html>
questionsave.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="javax.xml.parsers.*,org.w3c.dom.*"%>
<%@ page import="com.mysql.jdbc.Driver"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.text.*"%>
<%@ page language="java" import="java.util.*"%>
<%
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%>">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>QUESTION_SAVES</title>
 </head>
 <body background="#123456">
  <%        
     //驱动程序名
  String driverName="com.mysql.jdbc.Driver";
  //数据库用户名
  String userName="root";
  //密码
  String userPasswd="520123412";
  //数据库名
  String dbName="xml";  
  //连接字符串
  String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd+"&useUnicode=true&characterEncoding=UTF-8";
 //加载驱动程序
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  Connection conn=null;
  Statement stmt=null;
  ResultSet rs=null;
  request.setCharacterEncoding("UTF-8");
  String question_id=request.getParameter("question_id");
  String username=request.getParameter("username");
  if(username!=null&&username!=""){  
   Map map=request.getParameterMap();  
   Iterator iter = map.entrySet().iterator();
   while (iter.hasNext()) { 
       Map.Entry entry = (Map.Entry) iter.next();         
         // Object val = entry.getValue();
         if(((String)entry.getKey()).matches("sing_[0-99]_[0-99]")){        
          try{
           String  sing= request.getParameter((String)entry.getKey());
           String[] str=((String)entry.getKey()).split("_");
           //out.println("<p>"+str[0]+":"+str[1]+":"+str[2]+"</p>");
           //out.println("<p>"+entry.getKey()+":"+request.getParameter((String)entry.getKey())+"</p>");
           conn=DriverManager.getConnection(url);
      //创建执行语句 
     String sql="insert into question(question_id,username,q_id,q_type,qanswer)"
      +" values('"+question_id
      +"','"+username
      +"','"+str[1]
      +"','"+str[2]
      +"','"+sing
      +"')";    
     stmt=conn.createStatement();
     stmt.execute(sql);    
     stmt.close(); //关闭连接、释放资源
     conn.close();
     out.println("<p>保存问卷"+question_id+": 单选题"+str[1]+"成功!"+"</p>");
     }catch(SQLException e){
       e.printStackTrace();
     }
         }else if(((String)entry.getKey()).matches("che_[0-99]_[0-99]")){
          try{
           String[]  ches= request.getParameterValues((String)entry.getKey());
           String cheanswer="";
           for(int i=0;i<ches.length;i++){
            cheanswer+=ches[i]+" ";
           }
           String[] str=((String)entry.getKey()).split("_");
           conn=DriverManager.getConnection(url);
      //创建执行语句 
     String sql="insert into question(question_id,username,q_id,q_type,qanswer)"
      +" values('"+question_id
      +"','"+username
      +"','"+str[1]
      +"','"+str[2]
      +"','"+cheanswer
      +"')";    
     stmt=conn.createStatement();
     stmt.execute(sql);    
     stmt.close(); //关闭连接、释放资源
     conn.close();
     out.println("<p>保存问卷"+question_id+": 多选题"+str[1]+"成功!"+"</p>");
     }catch(SQLException e){
       e.printStackTrace();
     }
         }else if(((String)entry.getKey()).matches("te_[0-99]_[0-99]")){
          try{
           String  te= request.getParameter((String)entry.getKey());
           String[] str=((String)entry.getKey()).split("_");          
           conn=DriverManager.getConnection(url);
      //创建执行语句 
     String sql="insert into question(question_id,username,q_id,q_type,qanswer)"
      +" values('"+question_id
      +"','"+username
      +"','"+str[1]
      +"','"+str[2]
      +"','"+te
      +"')";    
     stmt=conn.createStatement();
     stmt.execute(sql);    
     stmt.close(); //关闭连接、释放资源
     conn.close();
     out.println("<p>保存问卷"+question_id+": 问答题"+str[1]+"成功!"+"</p>");
     }catch(SQLException e){
       e.printStackTrace();
     }
         }         
     }
    
     }else{
      out.println("<p>保存失败,没有输入用户名</p>");
  }  
    %> 
 </body>
</html>