前台传值过来,获得之后,和后台处理的数据库的值比较,应该如何比较
我想用list来做的,但是list获取不到里面的值package net.itcast;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;public class UserDao {
public List get() throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/srplatform";
Connection connection=DriverManager.getConnection(url,"root","123");
List aList=new ArrayList();
Statement statement= connection.createStatement();
String sql ="select e.ename from exercise e";
ResultSet rs=statement.executeQuery(sql);
while(rs.next()){
UserVO userVO = new UserVO();
userVO.setEname(rs.getString("ename"));
aList.add(userVO);
}
return aList;
}
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */package net.itcast;import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
 *
 * @author xingxing
 */
public class UserVerify extends HttpServlet {
   
    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        UserService userService =new UserService();
        try {
List ali=userService.get();
for(int i=0;i<ali.size();i++){
PrintWriter out = response.getWriter();
        try {
            String param = request.getParameter("userName");
            if (param == null || param.length() == 0) {
                out.println("用户名不能为空");
            } else {
                String userName = URLDecoder.decode(param, "UTF-8");
if (userName.equals(ali.get(i))) {
    out.println("用户名[" + userName + "]已经存在,请使用别的用户名注册");
} else {
    out.println("可以使用用户名[" + userName + "]注册");
}
            }
        } finally { 
            out.close();
        }
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        
    }     // <editor-fold defaultstate="collapsed" desc="HttpServlet">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }     /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>}
比较的时候,应该怎么比较,谢谢了

解决方案 »

  1.   

    在List ali=userService.get();
    ResultSet rs=statement.executeQuery(sql);都设置断点,看看
    返回的rs有没有数据...
      

  2.   

    把前台数值做为参数向数据层传递,把值取到后拼到SQL中,就可得到结果  《java快画》-北京JAVA培训-高薪就业!
      

  3.   

    有数据,但是我在和前台传过来比较的时候,就比较麻烦了,equals()方法比较的是地址,但是我想比的是值
      

  4.   

    equals()方法比较的是地址,但是我想比的是值
    那就,复写 equals方法吧。
      

  5.   

    可以尝试一下 Ajax方式,楼主的应该就是一个用户名的检查吧
      

  6.   

    是的,呵呵,我在做小实验,用的jquery,前台和后台都可以调取值,但是比较那里出问题
      

  7.   

    我感觉你写的应该没什么问题吧,首先List ali=userService.get()有数据吧,其次你使用equals()方法比较应该也没问题吧,如果我没记错的话,String类型已经重写了equals()方法了吧...
      

  8.   

    判断出来了没有,
    如果没有的话,我建议你用个循环去判断:具体代码如下:try {
                List ali=userService.get();
                String param = request.getParameter("userName");
                if (param == null || param.length() == 0) {
                     out.println("用户名不能为空");
                 } else {
                    String userName = URLDecoder.decode(param, "UTF-8");

    for(String st:aList){
    if(st.equals(userName)){
    //操作
    out.println("用户名[" + userName + "]已经存在,请使用别的用户名注册");
    return ;
    }
    }
                                               
                 }
                   
                
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
      

  9.   

    我换方法了,·用booleanpublic boolean get(String username) throws ClassNotFoundException, SQLException{
    List list=new ArrayList();
    Class.forName("com.mysql.jdbc.Driver");
    String url ="jdbc:mysql://localhost:3306/srplatform";
    Connection connection=DriverManager.getConnection(url,"root","123");
    Statement statement= connection.createStatement();
    String sql ="select e.ename from exercise e where e.ename='"+username+"'";
    ResultSet rs=statement.executeQuery(sql);
    while(rs.next()){
    UserVO userVO = new UserVO();
    userVO.setEname(rs.getString("ename"));
    list.add(userVO);
    }
    if(list.isEmpty()){
    return false;
    }else{
    return true;
    }
    } protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            UserService userService =new UserService();
    PrintWriter out = response.getWriter();
            try {
                String param = request.getParameter("userName");
                if (param == null || param.length() == 0) {
                    out.println("用户名不能为空");
                } else {
                    String userName = URLDecoder.decode(param, "UTF-8");
                    try {
    boolean userflag=userService.get(userName);
    if (userflag==true) {
        out.println("用户名[" + userName + "]已经存在,请使用别的用户名注册");
    } else {
        out.println("可以使用用户名[" + userName + "]注册");
    }     
                 } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
                }
          
            } finally{
                 out.close();
                }
        }
      

  10.   


    //注意这里。。你的ali.get(i)获取的是一个ArrayList对象
    //而userName是一个String类型的
    //试问两个不同对象 如何用equals来比较值
    if (userName.equals(ali.get(i))) {
                                    out.println("用户名[" + userName + "]已经存在,请使用别的用户名注册");
                                }
    //所以吧 userName.equals(ali.get(i))改成
    //userName.equals(ali.get(i).getEname())方可