带有角色的java servlet登录

时间:2014-05-24 09:18:10

标签: java servlets roles

我从java开始,我很难实现登录。 我希望我的servlet以不同的方式重定向用户,具体取决于角色(在DB中注册) 我尝试了很多不同的版本,我进行了最后的尝试。 我不明白为什么不起作用(如果我以管理员身份登录用户的页面上的servlet重定向) 如果还有其他错误(也是合乎逻辑的)请告诉我。我想改进。 谢谢大家的答案。

我的道:

public String esisteAccount (Account a) {
        Account acc = new Account();
        String query = "SELECT * FROM account WHERE username = '?' and password='?'";
        query=query.replaceFirst("[?]", (a.getUsername()));
        query=query.replaceFirst("[?]",(a.getPassword()));
        Vector<Object> v =db.executeSelect(query, "Account");
        acc = (Account)v.get(0);
        String ruolo;
        if (v.size()>0){
            ruolo=acc.getRuolo();
            }
        else { 
            ruolo="nonAutorizzato";
            }
        return ruolo;}

我的dbManager

if ( type.equals("Account") )
                {
                    Account a;
                    a = new Account();
                    a.setUsername( rs.getString("username") );
                    a.setPassword( rs.getString("password") );
                    a.setRuolo( rs.getString("ruolo") );
                    v.add(a);
                }

和我的servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        Account a = new Account();
        a.setUsername (username);
        a.setPassword (password);
        AccountDAO accountDAO =new AccountDAO();
        String esito= accountDAO.esisteAccount(a);
        if (esito=="nonAutorizzato"){       
            request.getRequestDispatcher("../errore.jsp").forward(request, response);
        }
        else {
            HttpSession session=request.getSession();
            if (esito=="Admin"){
                session.setAttribute("autorizzatoAdmin","true");
                request.getRequestDispatcher("autorizzatoAdmin.jsp").forward(request, response);
            }
            else{
                session.setAttribute("autorizzato","true");
                request.getRequestDispatcher("indexPL.jsp").forward(request, response);
            }
        }

1 个答案:

答案 0 :(得分:2)

这是问题

if (esito=="Admin")

用算术运算符检查两个字符串是不正确的。 而不是像这样使用。

if (esito.equalsIgnoreCase("Admin"))