server side validation problem
[nobr]Hi,
Trying to do server-side validation for a table with usernames, where if the username exists, a simple message in red is posted back to the JSP.
I was only able to get it to work if 1 (out of about 23) usernames was entered, because for some reason my results set, while being looped, was only returning 1 value all the time.
My servlet looks like the following, with a few if conditions to trigger the RequestDispatcher object appropriately.
publicclass ChangeControlUserAcctServletSPCallextends HttpServlet{
private Connection connection;
publicvoid doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException{
//req parameters from html/jsp form(Admin) page
String username = request.getParameter("user_name_fld");
String userpwd = request.getParameter("user_pwd_fld");
String userrole = request.getParameter("user_role_fld");
String useremail1 = request.getParameter("usr_email1");
String useremail2 = request.getParameter("usr_email_suf");
String userfinemail = useremail1+useremail2;
String userbranch = request.getParameter("user_branch");
String errmsg ="";
String usernameret ="";
//boolean userexists = false;
HttpSession session = request.getSession();
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
String dbURL ="jdbc:oracle:thin:@xxx.xxx.xx.xxx:1521:SID";
String usernm ="aaa_dfg";
String pwd ="********";
connection = DriverManager.getConnection(dbURL, usernm, pwd);
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String prepquer ="select user_name from users";
PreparedStatement preps = connection.prepareStatement(prepquer);
ResultSet rst = preps.executeQuery();
while (rst.next()){
usernameret = rst.getString(1);
if (usernameret.equals(username)){
errmsg ="<font face='arial' size='2'>This username</font>, <font face='arial' color='red' size='2'><b> " +username+" </b>,already exists. <br>"
+"Please enter another username.</font>";
session.setAttribute("message", errmsg);
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(
"/chngctrl/admin/change_ctrl_users.jsp");
dispatcher.forward(request, response);
}
else{
CallableStatement cstmt = connection.prepareCall("{call cctrl_passwords_proc (?,?,?,?,?)}");
cstmt.setString(1,username);
cstmt.setString(2,userpwd);
cstmt.setString(3,userfinemail);
cstmt.setString(4,userrole);
cstmt.setString(5,userbranch);
cstmt.executeUpdate();
System.out.println("SQL Stmt: " +cstmt);
}
}
rst.close();
stmt.close();
}
if (username==null || username.equals("") || username.equals(" ")){
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(
"/chngctrl/admin/change_ctrl_users.jsp");
dispatcher.forward(request, response);
System.out.print("first request");
}
elseif (usernameret.equals(username)){
errmsg ="This username, <font face='arial' color='red'>" +username+"already exists. <br>"
+"Please enter another email address.</font>";
session.setAttribute("message", errmsg);
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(
"/chngctrl/admin/change_ctrl_users.jsp");
dispatcher.forward(request, response);
System.out.print("first request");
}
else{
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(
"/chngctrl/insert_users_success.jsp");
dispatcher.forward(request, response);
System.out.print("2nd request");
}
}
}
publicvoid doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{
System.out.println("working here doPost method on Approval Servlet?");
doGet(request, response);
}
// final curly brace
}
Any feedback would be appreciated if you see something glaringly wrong, or just wrong in general! : )
Thanks![/nobr]

