百度的三种解决办法都不是最根本的东西,没有用
问题的出发点是我要从数据库读数据写成jsonarray数组(登录验证),进而引发问题如何判断jsonarray数组为空
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import util.ConnectDatabase;
public class GetInforFormDatabase {
ConnectDatabase db = new ConnectDatabase();
Connection con = db.getConnection();
public JSONArray search(String sql) {
JSONArray array = null;
try {
PreparedStatement pst = null;
pst = con.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int columnCount= metaData.getColumnCount();
if (!rs.wasNull()){ 这有结果集不为空的时候我才实例化array数组
array = new JSONArray();
while(rs.next()){
JSONObject jsonObj = new JSONObject();
for(int i = 1; i <= columnCount;i++)
{
String columnName = metaData.getColumnLabel(i);
String value =rs.getString(columnName);
jsonObj.put(columnName, value);
}
array.add(jsonObj);
System.out.println(array);
}
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return array;
}
}
loginAction.java文件
package action;
import com.opensymphony.xwork2.ActionSupport;
import dao.GetInforFormDatabase;
import net.sf.json.JSONArray;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
struts2,当form提交数据给action时,调用里面的get,set方法,直接给这些成员变量赋值
private String username;
private String password;
String get_username = "";
String get_password = "";
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
方法名必须为这样子,username为input的name名字,且第一个字母为大写
只有get,set都有才会自动给你复制到成员变量
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String execute(){
//this.addFieldError("name","name is error");
///查库操作
String sql = "select S_id,S_password from S where S_id='"+username+"'";
GetInforFormDatabase gifd = new GetInforFormDatabase();
获取Json数据
JSONArray ja = gifd.search(sql);
if(ja.equals(null)) {
/之所以这里的这一行可以用,是因为我在读库的操作中没有new一个jsonarray对象,所以为null
///如果没有我上面那个文件的写法,这个就是不可以判断的
get_username = (String) ja.getJSONObject(0).get("S_id");
get_password = (String) ja.getJSONObject(0).get("S_password");
验证读取到的数据
System.out.println(get_username);
System.out.println(get_password);
///判断密码和用户是否匹配
if(username.equals(get_username) && password.equals(get_password))
return "success";
else return "error";
}else {
System.out.println("为空");
return "error";
}
}
}