我正在尝试在我的servlet上获取3个参数,我将代码拆分为3个类以实现代码可读性,但在我的query_a1
类的DatabaseQuery
方法中,我始终得到false
并且我不明白为什么!
这是我的servlet类:
DatabaseQuery 公共类DatabaseQuery {
//Query i aktivitetit 1
public static boolean query_a1(String user,String pass) {
if (user== "andi" & pass=="andi")
return true;
else
return false;
}
//ky do te jete query i aktivitetit 2
public static void query_a2() {
}
}
的Servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/web2")
public class Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//merr aktivitetitn nga i cili vijne parametrat
int activiteti=Integer.parseInt(req.getParameter("activitetiNR").toString());
//krijo nje switch per cdo parameter
switch (activiteti){
case 1:{
//marrim te dhenat qe i perkasin aktivitetit
String user = req.getParameter("user").toString();
System.out.println(user);
String pass = req.getParameter("pass").toString();
System.out.println(pass);
//i kalojme ne metoden e klases Aktiviteti1 dhe marrim pergjigje dhe me pas japim response
response(resp,Aktiviteti1.kontrolloDhenat(user,pass));
}
break;
}
}
private void response(HttpServletResponse resp, String msg)
throws IOException {
PrintWriter out = resp.getWriter();
out.println(msg);
}
}
Aktiviteti
public class Aktiviteti1 {
//ketu vendosen kontrollet llogjike te aktivitetit
public static String kontrolloDhenat(String user,String pass){
//ndersa ketu therrasim queryn nga klasa database
if (DatabaseQuery.query_a1(user,pass)==true){
return "Succes!";
}else{
System.out.println(DatabaseQuery.query_a1(user,pass));
return "Failure!";
}
}
}
你有什么想法吗?
答案 0 :(得分:1)
String
比较==
个对象,但因为它们是对象,所以必须按照以下方式进行比较string1.equals(string2)
&
),但此处必须使用逻辑一个(&&
)。这里更正了if语句:
if (user.equals("andi") && pass.equals("andi")) then {
//foo
}
答案 1 :(得分:1)
您需要重新访问字符串比较。使用equals()
方法而非==
运算符完成字符串比较。所以线下是错误的。进一步&
是按位AND运算符,对于逻辑AND,您需要使用&&
运算符。
if (user== "andi" & pass=="andi")
你应该使用
if (user.equals("andi") && pass.equals("andi"))
答案 2 :(得分:1)
不使用==
使用equals
来比较字符串。
您的代码: if(user ==" andi"& pass ==" andi") 写得像:
if(user.equals("andi")&&pass.equals("andi"))
如果你想要Ingore案例(like ANDI or Andi)
,你应该使用:
if(user.equalsIgnoreCase("andi")&&pass.equalsIgnoreCase("andi"))