2016-07-09 3 views
0

JSP кодJava Bean возвращают нулевое значение

<form method="get" action="/asq/searchBox"> 

<select id="searchType" name="searchType"> 
<option id="username" value="username" >Username</option> 
<option id="realName" value="realName">Real name</option> 
<option id="emailAddress" value="emailAddress">Email Address</option> 
<option id="interest" value="interest">Interest</option> 
</select> 
<input type="text" id="searchBox"/> 
<br> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

Java Bean

public class Friends { 
    private String userId; 
    private String firstName; 
    private String lastName; 
    private String displayname; 

    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    public String getDisplayname() { 
     return displayname; 
    } 
    public void setDisplayname(String displayname) { 
     this.displayname = displayname; 
    } 
    public String getUserId() { 
     return userId; 
    } 
    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

} 

Servlet Код

String searchType = request.getParameter("searchType"); 
     String searchText = request.getParameter("searchBox"); 

     Friends searchBean = new Friends(); 

     if(searchType.equals("username") == true){ 
      try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.displayname LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
    else if(searchType.equals("realName")== true){ 
     try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.firstName LIKE '%" + searchText+ "%' OR azq.registration.lastName LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
    else if(searchType.equals("emailAddress")== true){ 
     try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.emailAddress LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
    else if(searchType.equals("interest")== true){ 
     try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.interest LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    request.getSession(true).setAttribute("searchBean", searchBean); 
    request.getRequestDispatcher("resultPage.jsp").forward(request, response); 

} 

Получить код

<jsp:useBean id="searchBean" class="sg.edu.nyp.sit.bean.Friends" scope="session"/> 
<html> 
<head> 
<title>resultPage</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
    <jsp:getProperty name="searchBean" property="firstName" /> 
    <jsp:getProperty name="searchBean" property="lastName" /> 
    <br> 
    <jsp:getProperty name="searchBean" property="displayname" /> 
</body> 
</html> 

Я разрешаю моему пользователю установить, что они хотят искать (например, Имя пользователя, электронная почта и т. Д.) И введите их ввод. Затем, после нажатия кнопки «Отправить», они будут перенаправлены на другую страницу, и страница отобразит все, что они искали. Тем не менее, проблема, с которой я столкнулся в настоящее время, заключается в том, что компонент возвращает мне нулевое значение. Могу я узнать почему?

+0

Не ответ, но стоит отметить, пожалуйста, посмотрите на http://stackoverflow.com/questions/9516625/prevent-sql-injection-attacks-in-a-java-program – Bhushan

+0

тщательно отлаживать конструктор, когда-то есть Исключение, вызывающее его. – user1012506

ответ

0

Проблема здесь находится во входном теге: <input type="text" id="searchBox"/>
Он должен иметь атрибут name. Попробуйте это:
<input type="text" name="searchBox" id="searchBox"/> <br>

+0

Речь идет об объекте, который он возвращает на страницу Jsp. –

+0

@Muhammad в любом случае ему нужен атрибут 'name' для передачи значения из формы в сервлет. Таким образом, не передавая значение, он не задается вопросом, что bean возвращает null для searchBox. –

0

в коде сервлета, вы храните его на сессии,

request.getSession(true).setAttribute("searchBean", searchBean); 

так что используйте это, чтобы получить searchBean вы хранили.

<% request.getSession().getAttribute("searchBean") %> 
+0

Могу я узнать, где я набираю код выше? – Alvin

+0

'<% request.getSession(). GetAttribute (" searchBean ")%>' добавляется в ваш результатPage.jsp. где угодно. это простой скрипт – Apostolos

+0

есть много способов получить ваш bean-компонент. дело в том, чтобы понять, что, поскольку вы храните его на сеансе, вам нужно извлечь его из сеанса. надеюсь, я помог. – Apostolos

0

Просто добавьте этот Тогда вы можете получить объект в JSP странице, как это.

request.setAttribute ("searchBean", searchBean);

<html> 
<head> 
<title>resultPage</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
    ${searchBean.firstName} 
    ${searchBean.lastName} 
    ${searchBean.displayname} 
</body> 
</html> 

или вы можете использовать как этот

<html> 
<head> 
<title>resultPage</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
    ${sessionScope.searchBean.firstName} 
    ${sessionScope.searchBean.lastName} 
    ${sessionScope.searchBean.displayname} 
</body> 
</html>