我正在尝试检查使用request.getParameter声明的字符串是空还是空。
但是当我尝试执行此代码时,我仍然遇到错误: 错误是nullexception错误。
<%
String name = request.getParameter("name");
String acctnum = request.getParameter("acctnum");
String pin = request.getParameter("pin");
String balance = request.getParameter("balance");
out.println(name+acctnum+pin+balance);
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/jsp", "root", "");
String sql = "Insert into users(name, account_numer, pin, balance) values('"+name+"', '"+acctnum+"', '"+pin+"', '"+balance+"')";
Statement stmt = conn.createStatement();
stmt.execute(sql);
conn.close();
if(name != null){
response.sendRedirect("index.jsp");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
%>
我也试过.equals(“”),但无济于事。
我在这里做错了,我想检查字符串是空还是null以防止它重定向到另一页。
谢谢
答案 0 :(得分:2)
我相信你在到达if(name != null)
之前就得到了例外。您在初始化sql
变量时使用参数。您是否期望在执行此操作时出现null
个字符串?
我认为在进行任何与数据库相关的操作之前,您应该进行空检查:
if (nullChecksPassed) {
Class.forName("");
Connection conn = DriverManager.getConnection("");
String sql = "";
Statement stmt = conn.createStatement();
stmt.execute(sql);
conn.close();
}
if (name != null) {
response.sendRedirect("index.jsp");
}
答案 1 :(得分:2)
可能值得查看Apache的StringUtils
类,更具体地说是isEmpty(String str)
方法:
public static boolean isEmpty(String str)检查String是否为空 (“”)或null。
StringUtils.isEmpty(null)= true
StringUtils.isEmpty(“”)= true
StringUtils.isEmpty(“”)= false
StringUtils.isEmpty(“bob”)= false
StringUtils.isEmpty(“bob”)= false注意:此方法在Lang 2.0版中已更改。它不再修剪String。该功能在isBlank()中可用。
参数:str - 要检查的String,可以为null
返回:如果String为空或null
,则返回true
此外,您可能希望为SQL查询使用预准备语句。你拥有的那个很容易注入SQL。