2013-05-29 3 views
-1

Мне нужна ваша небольшая помощь, я переработал свой код и разместил здесь снова, я хочу редактировать данные на основе нажатия кнопки EDIT. Может ли кто-нибудь помочь мне немного, чтобы связать эту функцию EDIT?Страница не перенаправляется на кнопку нажатием на данные UPDATE

index.jsp

<html> 
    <head> 
     <title>Data insertion form</title> 
    </head> 

    <body> 

    <% 
    String action="/SimpleServlet/DataInsertTable"; 
    String method="get"; 

    if(request.getAttribute("EDIT")!=null) { 
     action="/SimpleServlet/DataUpdateTable"; 
     method="post"; 
    } 
    %> 

    <form method= "<%=method%>" action="<%=action%>"> 
     <h1><center>Enter the required information</center></h1> 

     <table> 
      <tr> 
       <td>Name</td> 
       <td> :- </td> 
       <%if(request.getAttribute("NAME")!=null){ %> 
       <td><input type="text" name="name" value="<%=request.getAttribute("NAME")%>"></input> 

       <%}else{ %> 
       <td><input type="text" name="name"></input> 
       <%} %> 
       </td> 
     </tr> 

     <tr> 
      <td>Roll Number</td> 
      <td> :- </td> 
      <%if(request.getAttribute("ROLL")!=null){ %> 
      <td><input type="text" name="roll" value="<%=request.getAttribute("ROLL")%>"></input> 

      <%}else{ %> 
      <td><input type="text" name="roll"></input> 
      <%} %> 
      </td>  
     </tr> 

     <tr> 
      <td>Class </td> 
      <td> :- </td> 
      <%if(request.getAttribute("CLAS")!=null){ %> 
      <td><input type="text" name="clas" value="<%=request.getAttribute("CLAS")%>"></input> 

      <%}else{ %> 
      <td><input type="text" name="clas"></input> 
      <%} %> 
      </td> 
     </tr> 

     <tr> 
      <td>Mobile Number </td> 
      <td> :- </td> 
      <%if(request.getAttribute("MONO")!=null){ %> 
      <td><input type="text" name="mono" value="<%=request.getAttribute("MONO")%>"></input> 

      <%}else{ %> 
      <td><input type="text" name="mono"></input> 
      <%} %> 
      </td> 
     </tr> 

     <tr> 
      <td></td> 
      <td><input type="submit" value="Submit" width="100%"></input></td> 
     </tr> 

    </table> 

    </form> 

    </body> 
</html> 

DataInsertTable.java

import java.io.*; 
import java.sql.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class DataInsertTable extends HttpServlet { 
    public void doGet(HttpServletRequest req, HttpServletResponse res) 
    throws IOException, ServletException { 

     res.setContentType("text/html"); 
     PrintWriter out = res.getWriter(); 
     PrintWriter pwinsert = res.getWriter(); 

     Connection con = null; 
     PreparedStatement ps = null; 
     ResultSet rs = null; 
     Statement st = null; 


     out.println("<html>"); 
      out.println("<head>"); 
       out.println("<title>User Data</title>"); 
      out.println("</head>"); 

      out.println("<body>"); 
      out.println("<center><u><h1>User Data</h1></u>"); 

      out.println("<form name='form' >"); 


      out.println("<table border="+2+ "> "); 

      out.println("<tr>"); 
       out.println("<td> Select </td>"); 
       out.println("<td> Name </td>"); 
       out.println("<td> Roll No. </td>"); 
       out.println("<td> Class </td>"); 
       out.println("<td> Mobile Number </td>"); 
       out.println("<td> Edit </td>"); 
      out.println("</tr>"); 


      String nm = req.getParameter("name"); 
      String roll = req.getParameter("roll"); 
      String clas = req.getParameter("clas"); 
      String mono = req.getParameter("mono"); 


      try { 
       Class.forName("oracle.jdbc.driver.OracleDriver"); 
      } 
      catch(ClassNotFoundException ex) { 
       System.out.println("driver not loaded"); 
       System.exit(0); 
      } 

      String URL = "jdbc:oracle:thin:@192.168.106.87:1521:ORA11G"; 
      String Username = "pratik"; 
      String Password = "pratik"; 

      try { 
       con = DriverManager.getConnection(URL,Username,Password); 

//    if(req.getParameter("nm")==null && req.getParameter("roll")==null && req.getParameter("clas")==null && req.getParameter("mono")==null) { 


// Insert 
       if(req.getParameter("choise")==null) { 
        ps = con.prepareStatement("INSERT INTO student (name, rollno, class, mobileno) VALUES (?, ?, ?, ?)"); 
        ps.setString(1,nm); 
        ps.setString(2,roll); 
        ps.setString(3,clas); 
        ps.setString(4,mono); 

        int i = ps.executeUpdate(); 
        pwinsert.println(i); 

        if(i!=0) { 
         pwinsert.println("Your data has been stored in the database"); 
        } 
        else { 
         pwinsert.println("Your data could not be stored in the database"); 
        } 
       } 
      } 
      catch(Exception e) { 
       pwinsert.println(e.getMessage()); 

      } 



// Delete   

      String idr=null; 

      if(req.getParameter("choise")!=null) { 
       nm = req.getParameter("choise"); 
       idr = "DELETE from student WHERE name ='"+nm+"'"; 

       try { 
        st=con.createStatement(); 
        rs = st.executeQuery(idr); 
       } 
       catch (Exception e) { 
        e.getMessage(); 
        System.out.println("Error " +e); 
       } 

       System.out.println("Data deleted..."); 
      } 


//   res.sendRedirect("DataInsertTable.java"); 


      idr = "SELECT * FROM student WHERE name IS NOT NULL ORDER BY name"; 

      try { 
       st=con.createStatement(); 
       rs = st.executeQuery(idr); 
      } 
      catch (Exception e) { 
       e.getMessage(); 
       System.out.println("Error " +e); 
      } 


      try { 
       while (rs.next()) { 
        out.println("<tr>"); 
         out.println("<td>" + "<input type=\"radio\" name=\"choise\" value=\"" + rs.getString(1) + "\" /> </br>" + "</td>"); 
         out.println("<td>" + rs.getString(1) + "</td>" + "\t <td>" + rs.getInt(2) + "</td>" + "\t <td>" + rs.getString(3) + "</td>" + "\t <td>" + rs.getString(4)); 
         out.println("<td>" + "<a href='"+req.getContextPath()+"/DataUpdate?mode=EDIT&name="+rs.getString(1)+"&roll="+rs.getInt(2)+"&clas="+rs.getString(3) +"&mono="+rs.getString(4)+"'>Edit</a> </br>" + "</td>"); 
        out.println("</tr>"); 
       } 

      } 
      catch (Exception e) { 
       e.getMessage(); 
       System.out.println("Error" +e); 
      } 



      out.println(""); 
      out.println("<tr>"); 
      out.println("<td> </td>"); 

      out.println("<td>" + "<form>" + "<input type=\"button\" name = \"nw\" value=\"Add More Users\" onClick=\"window.location.href='"+ req.getContextPath()+"/index.jsp'\">" + "<form>" + "<td>"); 


      out.println("<td>" + "<form>" + "<input type=\"button\" name = \"edit\" value=\"Edit userdata\" onClick=\"window.location.href='"+ req.getContextPath()+"/DataUpdateTable'\">" + "<form>" + "<td>"); 


//   out.println("<td>" + "<input type=\"submit\" value = \"Edit\">" + "<a href='/SimpleServlet/'></a> </br>" + "</input>" + "</td>"); 


      out.println("<td>" + "<input type=\"submit\" name=\"del\" value=\"Delete\" />" + "</td>"); 

      out.println("<td>" + "<input type=\"submit\" value=\"Update\" />" + "</td>"); 

      out.println("</tr>"); 





      try { 
       rs.close(); 
      } 
      catch (Exception e) { 
       e.getMessage(); 
       System.out.println("Error" +e); 
      } 

      try { 
       st.close(); 
      } 
      catch (Exception e) { 
       e.getMessage(); 
       System.out.println("Error" +e); 
      } 


      out.println("</table>"); 

      out.println("</form>"); 

      out.println("</center>"); 

      out.println("</body>"); 
     out.println("</html>"); 

    out.close(); 

    } 
} 

DataUpdateTable.java

import java.io.*; 
import java.sql.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class DataUpdateTable extends HttpServlet { 
    public void doGet(HttpServletRequest req, HttpServletResponse res) 
    throws IOException, ServletException { 

     res.setContentType("text/html"); 
     PrintWriter out = res.getWriter(); 
     PrintWriter pwinsert = res.getWriter(); 

     Connection con = null; 
     PreparedStatement ps = null; 
     ResultSet rs = null; 
     Statement st = null; 


     out.println("<html>"); 
      out.println("<head>"); 
       out.println("<title>User Data</title>"); 
      out.println("</head>"); 

      out.println("<body>"); 
      out.println("<center><u><h1>User Data</h1></u>"); 

      out.println("<form name='form' >"); 

//   int a = 2; 
      out.println("<table border="+2+ "> "); 
      out.println("<tr>"); 
       out.println("<td> Name </td>"); 
       out.println("<td> Roll No. </td>"); 
       out.println("<td> Class </td>"); 
       out.println("<td> Mobile Number </td>"); 
      out.println("</tr>"); 


      String nm = req.getParameter("name"); 
      String roll = req.getParameter("roll"); 
      String clas = req.getParameter("clas"); 
      String mono = req.getParameter("mono"); 

      req.setAttribute("NAME", nm); 
      req.setAttribute("ROLL", roll); 
      req.setAttribute("CLAS", clas); 
      req.setAttribute("MONO", mono); 
      req.setAttribute("EDIT", "Y"); 

      req.getRequestDispatcher("/index.jsp").forward(req, res); 

    } 


    public void doPost(HttpServletRequest req, HttpServletResponse res) 
    throws IOException, ServletException { 

     res.setContentType("text/html"); 
     PrintWriter out = res.getWriter(); 
     PrintWriter pwinsert = res.getWriter(); 
//  PrintWriter pwdelete = res.getWriter(); 

     Connection con = null; 
     PreparedStatement ps = null; 
     ResultSet rs = null; 
     Statement st = null; 


     try { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
     } 
     catch(ClassNotFoundException ex) { 
      System.out.println("driver not loaded"); 
      System.exit(0); 
     } 

     String URL = "jdbc:oracle:thin:@192.168.106.87:1521:ORA11G"; 
     String Username = "pratik"; 
     String Password = "pratik"; 

     try { 
      con = DriverManager.getConnection(URL,Username,Password); 

      String nm = req.getParameter("name"); 
      String roll = req.getParameter("roll"); 
      String clas = req.getParameter("clas"); 
      String mono = req.getParameter("mono"); 


      if(req.getParameter("choise")==null) { 
       ps = con.prepareStatement("update student set name=?, rollno=?, class=?, mobileno=? where rollno=?"); 
       ps.setString(1,nm); 
       ps.setString(2,roll); 
       ps.setString(3,clas); 
       ps.setString(4,mono); 
       ps.setString(5,roll); 

       int i = ps.executeUpdate(); 
       pwinsert.println(i); 


       if(i!=0) { 
        pwinsert.println("Your data has been stored in the database"); 
       } 
       else { 
        pwinsert.println("Your data could not be stored in the database"); 
       } 

       res.sendRedirect(req.getContextPath()+ "/DataInsertTable"); 
//    res.sendRedirect("https://www.google.co.in/"); 

      } 
     } 
     catch(Exception e) { 
      pwinsert.println(e.getMessage()); 
     } 
    } 
} 
+0

Я бы рекомендовал принимать этот код базы данных из сервлета. Поместите его в POJO на основе интерфейса, который вы можете разработать и протестировать вне сервлета. Получите эту работу и отложите ее. Вы смешиваете базу данных и код генерации HTML вместе таким образом, который будет трудно отлаживать и поддерживать. Изучите JSP и выведите HTML-код из сервлета. – duffymo

+1

Только совет: я бы не рекомендовал поместить 'System.exit (0);' в ваш код сервлета. Это отключает всю виртуальную машину, включая все, что размещает сервлет, поэтому все остальные веб-приложения также прекратятся. – austin

+0

Хороший совет, аустин. Вы читали его более тщательно, чем я. – duffymo

ответ

0

Первый раз, когда вы получаете в СПЯ вы распечатайте форму и показать свои поля без особых проблем (кроме структурных проблем). Тем не менее, в сервлете вы печатаете непосредственно свой html, и, как я сказал вам в предыдущем комментарии, в этом случае вы не включаете какое-либо поле . Таким образом, вместо того, чтобы сделать это:

out.println("<td>" + "<input type=\"radio\" name=\"choise\" value=\"choise\" /> </br>" + "</td>"); 

Вы не могли бы сделать это:

out.println("<td>" + "<input type=\"radio\" name=\"name\" value=\"choise\" /> </br>" + "</td>"); 

А также, нет формы тегов и нет кнопки отправки, так, как вы притворяетесь отправить выбранного студента, если вы не отправляете данные? Я думаю, вы об этом не думали, потому что вы действительно не понимаете, что приложение течет. Поэтому короткий ответ это сделать:

out.println("<form method=\"get\" action=\"/datainsert/DataInsertTable\">"); //added line 
out.println("<tr>"); 
while (rs.next()) { 
    ...//you get the idea 
} 
out.println("</form>"); //added line 

Но для того, чтобы исправить такого рода проблемы, вы должны читать учебники по передовой практике на веб-программирования на Java!

+0

@Pratik, выполняющий эти рекомендации, вы не получите _null_ в параметре _name_, и вы сможете удалить данные. – fGo

+0

Здравствуйте, сэр, я сделал подключение к радио и базе данных, теперь я хочу обновить данные, которые уже вставленный мной. Не могли бы вы помочь мне в этом? – Pratik

+0

@Pratik обязательно, обновите вопрос с помощью вашего нового кода – fGo

0

Внутри вашего DataInsertTable только после этой линии

out.println("</html>"); 

вы должны добавить

response.setAttribute("EDIT", "yes"); 

Потому что вы изменяете назначения на основе параметра EDIT, но вы действительно никогда не устанавливая его. Кроме того, вместо того, чтобы сделать это:

out.println("<td>" + "<input type=\"submit\" value = \"Edit\">" + "<a href='"+req.getContextPath()+"/DataUpdate'></a> " + "</input>"); 

вы должны сделать

out.println("<td>" + "<input type=\"submit\" value = \"Edit\">" + "<a href='"+req.getContextPath()+"/DataUpdateTable'></a> " + "</input>"); 

ПРИМЕЧАНИЕ: Я предполагаю, что вы сопоставляются ваш DataUpdateTable сервлет DataUpdateTable, как вы делали в action="/SimpleServlet/DataUpdateTable";. Но я могу быть уверен, только если вы предоставите свой конфиг.

Кроме того, я понятия не имею, что вы делали вид здесь, но это не имеет никакого смысла, потому что вы уже в формы:

out.println("<td>" + "<FORM>" + "<INPUT Type=\"BUTTON\" VALUE=\"Add More Users\" ONCLICK=\"window.location.href='"+ req.getContextPath()+"/index.jsp'\">" + "<FORM>" + "<td>"); 
+0

Здравствуйте, сэр, мне нужна ваша небольшая помощь, я переписал свой код и разместил здесь снова, я хочу редактировать данные на основе нажатия кнопки EDIT. \t Не могли бы вы мне немного помочь, как связать эту функцию EDIT? Спасибо. – Pratik

+0

@Pratik, почему вы продолжаете добавлять этот тег

к своим кнопкам !! ?? 'out.println (" "+" «+ ...». Я сказал вам, что это не имеет смысла, поскольку вы уже находитесь в !! и я сказал вам добавить атрибут «EDIT» в _insert_, и вы сделал это в _Update_! Если вы не следуете моим рекомендациям, чем я ничего не могу сделать для вас, извините – fGo

+0

Сэр. Мне очень жаль, что я сделал по ошибке, но я не получаю, поскольку я новичок. если вы объясните и поможете мне. Будучи новичком в сервлете и jsp, я нахожу это слишком сложным. Прошу вас помочь мне сэр. Пожалуйста, расскажите мне, как добавить функцию редактирования. Слишком много надежд от вас , Ожидание вашего доброго ответа. Спасибо. – Pratik

Смежные вопросы