2017-02-19 24 views
2

Я отправляю flag = update, чтобы вызвать метод обновления с URL-адресом, а также отправить идентификатор текущую запись, которую пользователь хочет отредактировать запись. Здесь моя проблема в том, что я не могу получить значения параметров (fname, lname, email, pass, cno) из метода редактирования . Каждый раз, когда он возвращает null из метода обновления.Не удается получить данные из того же сервлета, используя request.getParameter() или request.getAttributes(), попробовал оба получить только нуль

Я думаю, что что-то не так в методе обновления или методе редактирования. Пожалуйста, изучите этот вопрос. Я хочу понять, почему эта проблема возникает с тех пор, как я пробую последние несколько часов.

Я знаю, что могу использовать request.getAttributes(); вместо request.getParameter();, чтобы получить данные в том же сервлете, но дайте мне знать, если они есть какой-либо простой способ или нет? и, пожалуйста, помогите решить мою проблему. Заранее спасибо.

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

<!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

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); 
     } 
    } 
} 
+0

Знаете ли вы, что вы используете неправильные имена параметров при обновлении? Я имею в виду, что они называются fName и т. Д., И вы получаете доступ к t1, это просто, например, или во время выполнения? А также доступ к атрибутам, пока они фактически являются параметрами, неверен –

+2

Он применим для выполнения. Но когда я попробовал его с Button вместо Hyperlink «Update», я получил параметры. поэтому я думаю, что возможно, я ошибаюсь при отправке параметров с URL-адресом. –

+2

Пожалуйста, покажите нам страницу, из которой обновление называется –

ответ

3

он работал для меня, когда я положил кнопку отправки вместо URL-адреса для вызова метода обновления.

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

, что здесь произошло, значение гиперссылок не добавляет с t1 остальные параметры, t2, t3, t4 t5 &. Путем нажатия кнопки «Отправить» он принимает все параметры как считанные по умолчанию методом get().

+3

Конечно, это не так, ссылка не отправляет форму –

+2

@DmytroGrynets, если я хочу передать параметр со ссылкой «&», может быть полезным или нет ... например.

+1

Да, конечно, но так вы не сможет динамически устанавливать эти значения без javascript –

0

Вы нас вы можете создать форму на странице jsp. По умолчанию он переходит к переопределенному методу doGet. Здесь вы используете функцию update(), поэтому попробуйте вызвать getAttributes в методе doGet и передать его любой другой функции по вашему выбору.

+0

Он по-прежнему не «по умолчанию», а зависит от метода формы. Также получение атрибутов из представленной формы ничего не приведет к тому, что она представит параметры, а не атрибуты –

+0

Я имел ввиду, что он не указал, будет ли метод формы «get» или «post» по умолчанию переходить к методу doGet. –