简体   繁体   English

无法使用request.getParameter()或request.getAttributes()从Same Servlet检索数据,尝试两者都只获取null

[英]Can't retrieve data from the Same Servlet using request.getParameter() or request.getAttributes(), tried both get null only

I am sending flag=update to call update method with URL and also send the id of current record which user want to edit the record. 我发送flag = update来调用URL的更新方法,并发送用户想要编辑记录的当前记录的id。 Here my problem is I am unable to get parameters (fname, lname, email, pass, cno) values from the edit method . 这里我的问题是我无法从编辑方法获取参数(fname,lname,email,pass,cno)值。 Every time it returns null from update method. 每次从update方法返回null。

I think something wrong at update method or edit method. 我认为更新方法或编辑方法有问题。 Please look into the matter. 请调查此事。 I want to understand why this problem occurs since I'm trying from last many hours. 我想知道为什么会出现这个问题,因为我正在尝试从最后几个小时。

I know that I can use request.getAttributes(); 我知道我可以使用request.getAttributes(); instead of request.getParameter(); 而不是request.getParameter(); to get data in the same servlet but let me know if their is any simple way or not? 在同一个servlet中获取数据但让我知道它们是否有任何简单的方法? and please help to solve my problem. 请帮助解决我的问题。 Thanks in advance. 提前致谢。

Registration.html Registration.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Registration Page</title>
</head>
<body>

<form action="Controller1" >

First Name : <input type="text" name="fName"><br/> 
Last Name : <input type="text" name="lName"><br/>
Email : <input type="text" name="eMail"><br/>
Password : <input type="password" name="password"><br/>
Contact No : <input type="text" name="cNo"><br/><br/>

<input type="submit"  value="Register">
<input type="hidden" name="flag" value="register">

 &nbsp;&nbsp;&nbsp;<a href="Controller1?flag=login">Login</a>
</form>

</body>
</html>

Login.html 的login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login Page</title>
</head>
<body>

<form action="Controller1">

Email : <input type="text" name="lin_Email" value="insert your registered EmailID"><br/>
Password : <input type="text" name="lin_Pass" value="enter your registered password"><br/>

<input type="submit" value="Login">
<input type="hidden" name="flag" value="loginValidate">

</form>

</body>
</html>

Controller1.java Controller1.java

import java.io.IOException;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Controller1
 */
@WebServlet("/Controller1")
public class Controller1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
    int id;
    String fname, lname, email, pass, cno, flag;
    PrintWriter out;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Controller1() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        flag = request.getParameter("flag");

        if (flag.equals("register")) {
            register(request, response);
        } else if (flag.equals("login")) {
            response.sendRedirect("/JDBC_Registration/Login.html");
        }

        else if (flag.equals("loginValidate")) {
            loginValidate(request, response);
        } else if (flag.equals("view")) {
            try {
                view(request, response);
            } catch (SQLException e) {
                                e.printStackTrace();
            }
        } else if (flag.equals("edit")) {
            try {
                edit(request, response);
            } catch (SQLException e) {

                e.printStackTrace();
            }
        } else if (flag.equals("delete")) {
            delete(request, response);
        }
        else if (flag.equals("update")) {
            try {
                update(request, response);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    private void update(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException, ServletException {
        response.setContentType("text/html");
        out = response.getWriter();

        id = Integer.parseInt(request.getParameter("id"));
//
//      String fname = request.getParameter("t1");
//      String lname = request.getParameter("t2");
//      String email = request.getParameter("t3");
//      String pass = request.getParameter("t4");
//      String cno = request.getParameter("t5");

        fname = (String) request.getAttribute("t1");
        lname = (String) request.getAttribute("t2");
        email = (String) request.getAttribute("t3");
        pass = (String) request.getAttribute("t4");
        cno = (String) request.getAttribute("t5");
        System.out.println("updated values... "+fname+"  "+lname+" "+email+" "+pass+" "+cno);
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2","root","root");
            Statement stm = con.createStatement();

            stm.executeUpdate("update registration set FirstName='"+fname+"',LastName='"+lname+"',Email='"+email+"',Password='"+pass+"',ContactNo='"+cno+"' where id='"+id+"'");
            view(request, response);

        } catch (ClassNotFoundException e) {

            e.printStackTrace();
        }
    }

    private void delete(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        out = response.getWriter();
        id = Integer.parseInt(request.getParameter("id"));
        System.out.println("delete record ID....."+id);

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2","root","root");
            Statement stm = con.createStatement();

            stm.executeUpdate("delete from registration where id='"+id+"'");
            System.out.println("successfully deleted...record ID : "+id);
            view(request, response);
        }catch (Exception e) {
            System.out.println(e);
        }
    }

    private void edit(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException {
        response.setContentType("text/html");
        out = response.getWriter();
        id = Integer.parseInt(request.getParameter("id"));
        System.out.println(""+id);

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2","root","root");
            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("select * from registration where id='"+id+"'");

            out.println("<form action='Controller1'><table border=2>");
            out.println(
                    "<tr><td>ID</td><td>FirstName</td><td>LastName</td><td>Email</td><td>Password</td><td>ContactNo</td><td>Action</td></tr>");
            while (rs.next()) {
                out.println("<tr><td>" + rs.getString(1) + "</td><td><input type='text' name='t1' value=" + rs.getString(2) + "></td><td><input type='text' name='t2' value=" + rs.getString(3) + "></td><td><input type='text' name='t3' value=" + rs.getString(4) + "></td><td><input type='text' name='t4' value=" + rs.getString(5) + "></td><td><input type='text' name='t5' value=" + rs.getString(6) + "></td><td>&nbsp;&nbsp;<a href=Controller1?flag=update&id=" + rs.getString(1)
                        + ">Update</a>&nbsp;&nbsp;</td></tr>");
            }

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

        } catch (ClassNotFoundException e) {

            e.printStackTrace();
        }
    }

    private void view(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException, ServletException {
        response.setContentType("text/html");
        out = response.getWriter();
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2", "root", "root");
            Statement stmt = con.createStatement();

            // RequestDispatcher rd =
            // request.getRequestDispatcher("Welcome.html");
            // rd.include(request, response);

            ResultSet rs = stmt.executeQuery("select * from registration");
            out.println("<form><table border=2>");
            out.println(
                    "<tr><td>ID</td><td>FirstName</td><td>LastName</td><td>Email</td><td>Password</td><td>ContactNo</td><td>Action</td></tr>");
            while (rs.next()) {
                out.println("<tr><td>" + rs.getString(1) + "</td><td>" + rs.getString(2) + "</td><td>" + rs.getString(3)
                        + "</td><td>" + rs.getString(4) + "</td><td>" + rs.getString(5) + "</td><td>" + rs.getString(6)
                        + "</td><td>&nbsp;&nbsp;<a href=Controller1?flag=edit&id=" + rs.getInt(1)
                        + ">Edit</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href=Controller1?flag=delete&id=" + rs.getInt(1)
                        + ">Delete</a>&nbsp;&nbsp;</td></tr>");
            }

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

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    private void loginValidate(HttpServletRequest request, HttpServletResponse response) throws IOException {

        response.setContentType("text/html");
        out = response.getWriter();

        try {
            email = request.getParameter("lin_Email");
            pass = request.getParameter("lin_Pass");
            System.out.println("" + email + pass);

            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2", "root", "root");
            Statement stmt = con.createStatement();

            ResultSet rs = stmt
                    .executeQuery("select * from registration where Email='" + email + "'and Password='" + pass + "'");

            if (!rs.next()) {
                out.println("<h4 style='color:red'>Please Enter correct Email ID & Password...sq</h4><br/><br/>");
                // response.sendRedirect("/JDBC_Registration/Login.html");
                RequestDispatcher rd = request.getRequestDispatcher("Login.html");
                rd.include(request, response);
            } else {
                // System.out.println("else if called....");
                out.println("<h1>Welcome User :</h1><h3>" + rs.getString(2)
                        + "</h3>&nbsp;&nbsp;&nbsp;<a href=Controller1?flag=view>view</a>");
                RequestDispatcher rd = request.getRequestDispatcher("Welcome.html");
                rd.include(request, response);
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    private void register(HttpServletRequest request, HttpServletResponse response) throws IOException {

        response.setContentType("text/html");
        out = response.getWriter();

        try {
            fname = request.getParameter("fName");
            lname = request.getParameter("lName");
            email = request.getParameter("eMail");
            pass = request.getParameter("password");
            cno = request.getParameter("cNo");

            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2", "root", "root");
            Statement stmt = con.createStatement();

            stmt.executeUpdate("insert into registration(FirstName,LastName,Email,Password,ContactNo) values('" + fname
                    + "','" + lname + "','" + email + "','" + pass + "','" + cno + "')");
            System.out.println(" INSERT  : : : " + fname + " " + lname + " " + email + " " + pass + " " + cno);

            response.sendRedirect("/JDBC_Registration/Login.html");

            // view(request, response);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

it worked for me when i put submit button instead of URL to call update method. 当我把提交按钮而不是URL调用更新方法时,它对我有用

<input type='submit'>
<input type='hidden' name='flag' value='update'>
<input type='hidden' name='id' value='"+id+"'>

what happened here, Hyperlink value doesn't append with the remaining parameters t1,t2,t3,t4 & t5. 这里发生的事情,超链接值不附加剩余参数t1,t2,t3,t4和t5。 By putting Submit button it takes all the parameter as consider as by default get() method. 通过放置提交按钮,它将所有参数视为默认的get()方法。

You have used a form in your jsp page. 您在jsp页面中使用过表单。 By default, it goes to the overridden doGet method. 默认情况下,它将转到重写的doGet方法。 Here the function you've used is update(), So, try calling the getAttributes in the doGet method and pass it over to any other function of your choice. 这里你使用的函数是update(),所以,尝试在doGet方法中调用getAttributes并将其传递给你选择的任何其他函数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM