Hi all,
I am having a little problem with displaying results from a search html form which forwards onto a servlet for processing, then the results are displayed in a jsp web page. The html form contains a
<select>
for a drop down list to select what term to search for e.g. a user enters a name into the text field, and selects "Username" from the drop down selection box.
The problem is the results are turning back null on the results page.
Here is my code:
// Servlet
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
import java.sql.*;
import beans.*;
public class QuickSearchServlet extends HttpServlet
{
Connection conn; // variable to connect to the database
Statement stmt; // variable to execute SQL statements
public void init( ) throws ServletException
{
try
{
Class.forName( "com.mysql.jdbc.Driver" ).newInstance(); // load the JDBC mysql driver
}
catch (Exception ex)
{
System.out.println( "Exception is: " + ex.toString( ));
}
}
public void doPost( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
{
try
{
// connect to the database on the server called w1172769_0 with mysql username and password
conn = DriverManager.getConnection( "jdbc:mysql://localhost/" + "memberdb?user=root&password=hotfuzzbun") ;
stmt = conn.createStatement( );
}
catch (SQLException ex)
{
System.out.println("SQLException: " + ex.getMessage());
}
// extract the field libraryResourceInputField from the results.jsp webpage
String strLookupMember = request.getParameter( "lookupMemberField" );
String strKeywordSelection = request.getParameter( "keywordSelection" ) ;
String strDatabase = request.getParameter( "Database" ) ;
// create new Searchbean
LookupBean lookup = new LookupBean();
// create a boolean for validation
boolean bValid = true;
// create a new http session
HttpSession session = request.getSession( );
// used to hold the error message displayed to a user
String strError = (String) session.getAttribute( "error" );
// test if libraryResourceInputField has been filled in from the quich search form
if ( strLookupMember.length( ) == 0 )
{
strError = "Try again - Please Enter a Search Term"; // provide appropriate error message
bValid = false;
}
// lookup the database for the search item
if ( bValid )
{
if ( strKeywordSelection == "All Keywords" )
{
try
{
int count = 0;
String strQuery = "SELECT * from member_list WHERE fullname = '" + strLookupMember + "'" ;
ResultSet rs = stmt.executeQuery( strQuery ) ;
while ( rs.next( ) )
{
count++ ;
lookup.setUsername( rs.getString( "username" ) ) ;
lookup.setFullName( rs.getString( "fullname" ) ) ;
lookup.setJobTitle( rs.getString( "jobtitle" ) ) ;
}
if ( count != 1 )
{
bValid = false ;
strError = "Nothing matches your Quick Search criteria" ;
}
if ( stmt != null )
{
stmt.close( ) ;
}
if ( conn != null )
{
conn.close( ) ;
}
}
catch ( SQLException ex )
{
System.out.println( "SQLException: " + ex.getMessage( ) ) ;
}
}
else if ( strKeywordSelection == "Username" )
{
try
{
int count = 0;
String strQuery = "SELECT * from member_list WHERE username = '" + strLookupMember + "'" ;
ResultSet rs = stmt.executeQuery( strQuery ) ;
while ( rs.next( ) )
{
count++ ;
lookup.setUsername( rs.getString( "username" ) ) ;
lookup.setFullName( rs.getString( "fullname" ) ) ;
lookup.setJobTitle( rs.getString( "jobtitle" ) ) ;
}
if ( count != 1 )
{
bValid = false ;
strError = "Nothing matches your Quick Search criteria" ;
}
if ( stmt != null )
{
stmt.close( ) ;
}
if ( conn != null )
{
conn.close( ) ;
}
}
catch ( SQLException ex )
{
System.out.println( "SQLException: " + ex.getMessage( ) ) ;
}
}
else if ( strKeywordSelection == "FullName" )
{
try
{
int count = 0;
String strQuery = "SELECT * from member_list WHERE fullname = '" + strLookupMember + "'" ;
ResultSet rs = stmt.executeQuery( strQuery ) ;
while ( rs.next( ) )
{
count++ ;
lookup.setUsername( rs.getString( "username" ) ) ;
lookup.setFullName( rs.getString( "fullname" ) ) ;
lookup.setJobTitle( rs.getString( "jobTitle" ) ) ;
}
if ( count != 1 )
{
bValid = false ;
strError = "Nothing matches your Quick Search criteria" ;
}
if ( stmt != null )
{
stmt.close( ) ;
}
if ( conn != null )
{
conn.close( ) ;
}
}
catch ( SQLException ex )
{
System.out.println( "SQLException: " + ex.getMessage( ) ) ;
}
}
}
if ( bValid )
{
session.setAttribute( "lookup", lookup ) ;
RequestDispatcher dispatcher = getServletContext( ).getRequestDispatcher( "/results.jsp" ) ;
dispatcher.forward( request, response ) ;
}
else
{
session.setAttribute( "error", strError ) ;
RequestDispatcher dispatcher = getServletContext( ).getRequestDispatcher( "/results.jsp" ) ;
dispatcher.forward( request, response ) ;
}
}
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
{
doPost( request, response ) ;
}
}
// LookupBean
package beans;
public class LookupBean
{
private String username ;
private String fullname ;
private String jobtitle ;
public LookupBean()
{
}
public void setUsername( String str )
{
username = str ;
}
public String getUsername()
{
return username ;
}
public void setFullName( String str )
{
fullname = str ;
}
public String getFullName()
{
return fullname ;
}
public void setJobTitle( String str )
{
jobtitle = str ;
}
public String getJobTitle()
{
return jobtitle ;
}
}
<!-- results.jsp -->
<%@ page language="java"%>
<html>
<head>
<title>Results Page</title>
</head>
<body>
<h3>Results Page</h3>
<h3><font color="red">
<% String e = (String) session.getAttribute( "error" );
if ( e != null )
{ %>
<font color="red">
<% out.print( e );
} %>
</font></h3>
<table>
<tr>
<td><b>Username</b></td>
<td></td>
<td><b>FullName</b></td>
<td></td>
<td><b>Job Title</b></td>
</tr>
<tr>
<jsp:useBean id="lookup" class="beans.LookupBean" scope="session" />
<td><jsp:getProperty name="lookup" property="username" /></td>
<td><font color="white">--------</font></td>
<td><jsp:getProperty name="lookup" property="fullname" /></td>
<td><font color="white">--------</font></td>
<td><jsp:getProperty name="lookup" property="jobtitle" /></td>
</tr>
</table>
</body>
</html>
In the results page in the table all the fields in the table show null. Any reason why it is doing this? Also can you help me to get it to display the correct result?
Thanks.