【问题标题】:Page not being redirected on buttonpress to UPDATE data按下按钮时页面未重定向到更新数据
【发布时间】:2013-05-24 20:23:33
【问题描述】:

我需要你的一点帮助,我已经重新编辑了我的代码并再次发布到这里,我想通过单击 EDIT 按钮来编辑数据。 任何人都可以帮我一点,如何链接该编辑功能?

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

【问题讨论】:

  • 我建议将该数据库代码从 servlet 中取出。将它放在一个基于接口的 POJO 中,您可以在 servlet 之外进行开发和测试。让它工作并将其放在一边。您正在以一种难以调试和维护的方式将数据库和 HTML 生成代码混合在一起。学习 JSP 并从 servlet 中生成 HTML。
  • 提示:我不建议将System.exit(0); 放在您的servlet 代码中。这会关闭整个 VM,包括托管 servlet 的任何内容,因此您的所有其他 Web 应用程序也将停止。
  • 好小费,奥斯汀。你比我读得更仔细。
  • 这样创建单选按钮 out.println("" + "" + "");
  • @Pratik 我没有检查你的 html 代码的细节,我认为它是正确的。您已经有一个提交按钮

标签: java servlets hyperlink


【解决方案1】:

当您第一次进入 jsp 时,您可以轻松打印表单并显示字段(除了结构问题)。但是,在 servlet 中,您直接打印 html,正如我在之前的评论中告诉您的那样,在这种情况下,您不包含任何 name 字段。 所以,不要这样做:

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

你可以这样做:

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

还有,没有form标签,也没有提交按钮,不发数据怎么假装发选中的学生呢?我认为您没有考虑过这一点,因为您真的不了解应用程序正在运行。所以简短的回答是这样做:

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 Web 编程良好实践的教程!

【讨论】:

  • @Pratik 做这些建议你不会在 name 参数中得到 null 并且你可以删除数据
  • 您好先生,我已经完成了收音机和数据库的连接,现在我想更新我已经插入的数据。你能帮我解决一下吗??
【解决方案2】:

在您的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 servlet 映射到 DataUpdateTable,就像您在 action="/SimpleServlet/DataUpdateTable"; 中所做的那样。但我只能确定你是否提供了配置。

另外,我不知道你在这里假装什么,但这是没有意义的,因为你已经在一个 form 中:

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

【讨论】:

  • 您好先生,我需要您的帮助,我已经重新编辑了我的代码并再次发布在这里,我想根据单击编辑按钮来编辑数据。你能帮我一下如何链接那个编辑功能吗?谢谢。
  • @Pratik 为什么你一直把这个
    标签添加到你的按钮上!!?? out.println("&lt;td&gt;" + "&lt;form&gt;" + ...。我告诉过你这是没有意义的,因为你已经在
    中了!!我告诉你在 insert 中添加 'EDIT' 属性,而你在 Update 中做到了!如果您不遵循我的建议,我将无法为您做任何事情,对不起
  • 先生,我真的很抱歉我做错了,但我没有得到,因为我是一个初学者。如果你解释并帮助我会更好。作为 servlet 和 jsp 的初学者,我发现它太难了。我请求您帮助我,先生。请告诉我如何添加编辑功能。对你寄予太多希望,等待你的善意回复。谢谢。
  • @Pratik 用你更新的代码提出一个新问题,听从他们的建议,让其他人帮助你
  • 先生,我已经删除了所有不必要的表格。我们可以继续吗?
猜你喜欢
  • 2020-04-06
  • 1970-01-01
  • 2019-11-16
  • 2018-11-21
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多