使用java中的request.getParameter声明字符串时,检查string是否为null

时间:2013-02-25 07:34:19

标签: java jsp java-ee

我正在尝试检查使用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以防止它重定向到另一页。

谢谢

2 个答案:

答案 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。