【问题标题】:JSP variable that is not a variable不是变量的 JSP 变量
【发布时间】:2017-03-21 20:41:35
【问题描述】:

我对变量 COMICI 有一些问题,因为我需要它处于两种不同的状态(连接到变量用户名)我把它放在 if 的内部和外部,但是当我调用它时,eclipse 告诉我它不能考虑一个变量。 知道为什么吗?

String username = request.getParameter("username");

if(username!= null){
    String dbURL = "jdbc:mysql://localhost:3306/login";
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = (Connection)    
    DriverManager.getConnection("jdbc:mysql://localhost:3306/login",  "root", "");
    Statement st1 = con.createStatement();
    ResultSet rs1;
    st1.executeQuery("SELECT 'COMICI' from categorie WHERE UTENTE_ID = '"+username+"' ");       
    PreparedStatement ps=(PreparedStatement)con.prepareStatement("SELECT COMICI from categorie WHERE UTENTE_ID = '"+username+"' ");
    ResultSet rs=ps.executeQuery();
    rs.next();
    String COMICI=rs.getString("COMICI");
} else {
    String COMICI=("null");
}

%>

<%
   if(username!=null)     {
%>
<%      
 //select * from categorie where UTENTE_ID='
        out.print("Hello, "+username+" Welcome to Profile");
        out.print("Hello,"+ COMICI +"  Welcome to Profile");
   }
%>

【问题讨论】:

  • 超出范围。您需要在if 之前声明它(并初始化它)。 格式化您的代码!这读起来很痛苦,而且充满了语法错误。
  • 我明白了,以后我会小心的。非常感谢您的帮助。
  • 既然您已经添加了else 块,您在声明它时不需要对其进行初始化,因为它已被所有路径初始化。
  • 是的,我尝试了这个解决方案,但现在在代码行`out.print("Hello,"+ COMICI +" Welcome to Profile") Eclipse 给我这个错误消息:COMICI 无法解决到一个变量
  • 您尝试了哪种解决方案?

标签: java jsp jdbc


【解决方案1】:

你的代码有很多问题:

第一
您必须在 if 或 else 块之外声明变量:

String COMICI = "";
if (username != null) {
   COMICI = rs.getString("COMICI");
   ...
}else{
   COMICI = null;
}

第二
要初始化您的变量,您不需要加括号:

COMICI = ("null");

改为使用:

COMICI = "null";

第三
不要使用 Statement 这可能会导致语法错误或 SQL 注入,您必须使用 PreparedStatement,它更安全、更有帮助。

第四
要从 ResultSet 中获取结果,您必须使用:

if(rs.next()){
   COMICI = rs.getString("COMICI");
}

【讨论】:

    【解决方案2】:

    这个好用,试试看

    String username = request.getParameter("username");
    string COMICI=null;
    
        if(username!= null){
            String dbURL = "jdbc:mysql://localhost:3306/login";
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = (Connection)    
            DriverManager.getConnection("jdbc:mysql://localhost:3306/login",  "root", "");
            Statement st1 = con.createStatement();
            ResultSet rs1;
            st1.executeQuery("SELECT 'COMICI' from categorie WHERE UTENTE_ID = '"+username+"' ");       
            PreparedStatement ps=(PreparedStatement)con.prepareStatement("SELECT COMICI from categorie WHERE UTENTE_ID = '"+username+"' ");
            ResultSet rs=ps.executeQuery();
    
           if( rs.next())
          {
            COMICI=rs.getString("COMICI");
        } else {
             COMICI="null";
    
    
        }
    
        %>
    
        <%
           if(username!=null)     {
        %>
        <%      
         //select * from categorie where UTENTE_ID='
                out.print("Hello, "+username+" Welcome to Profile");
                out.print("Hello,"+ COMICI +"  Welcome to Profile");
           }
        %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多