2017-04-22 72 views
0

我被给了代码,我不得不做其他事情。当我去编译我的servlet时,它不能识别我的bean。我从所有不同的目录中删除,重新编译并尝试过。我不知道为什么这不起作用。错误:找不到符号,找不到我的豆

import BH.*; 
import java.io.IOException; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
import java.util.function.*; 
import static java.util.Arrays.asList; 
import java.text.DateFormat; 
import java.util.concurrent.locks.ReentrantLock; 
import java.util.Random; 
public class sessionServlet extends HttpServlet { 
    private List<String[]> the_sessions; 
    private DateFormat df; 
    public static ReentrantLock thelock = new ReentrantLock(); 


    public void init() throws ServletException { 
     the_sessions=new ArrayList<String[]>(); 
     df=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); 
    } 
    protected void doGet(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException 
    {  
     if ((!(req.getParameter("task")==null))&&(req.getParameter("task").trim().equals("deploy"))) { 
      PrintWriter out = res.getWriter(); 
      out.println("<html>"); 
      out.println("<body>"); 
      out.println("<hr /><center><h1>sessionServlet Deployed</h1></center><hr />"); 
      out.println("</body>"); 
      out.println("</html>"); 
      return; 
     } 
     Consumer <String> forwardTo =(s) ->ForwardTo(s,req,res); 
     boolean is_first_visit=true; 
     String[] this_session=new String[3]; 
     String manager = req.getParameter("manager"); 
     for (String [] a_session :the_sessions) { 
      if (a_session[0].equals(manager)) { //Found an active session 
       is_first_visit=false; 
       this_session=a_session; 
       break; 
      } 
     } 
     if ((req.getParameter("task")==null)&&(!is_first_visit)) { 
      the_sessions.remove(this_session); 
      is_first_visit=true; // just used http://hoare.cs.umsl.edu/servlet/js_test/sessionServlet 
     } 
     req.setAttribute("thesessioncount",the_sessions.size()); 
     if (is_first_visit) { 
      if (the_sessions.size()==10) { 
       forwardTo.accept("noSessions.jsp"); //No Available Sessions 
       return; 
      } 
      String randomStr = getRandomString(); 
      String[] new_session = {randomStr,df.format(new Date()),"need a name"}; 
      the_sessions.add(new_session); 
      this_session=new_session; 
      req.setAttribute("manager",randomStr); 
      forwardTo.accept("startSession.jsp"); 
      return; 
     } 
     String the_name=""; 
     String the_pw=""; 

     if (this_session[2].equals("need a name")) { //No name given yet 
      the_name=req.getParameter("whoisit"); 
      the_pw=req.getParameter("passwd"); 

      if ((the_name==null)||(the_name.trim().length()==0)||checkPW(the_name,the_pw)) {  //checkPW returns false if correct 
       the_sessions.remove(this_session); 
       req.setAttribute("thesessioncount",the_sessions.size()); 
       forwardTo.accept("startSession.jsp"); 
       return; // didn't enter a name in startSession 
      } 
     } 
     this_session[2]=the_name.trim(); 
     req.setAttribute("thename", this_session[2]); 
     if (tooLong(this_session[1],df.format(new Date()))) { //Has the session timed out? 
      the_sessions.remove(this_session); 
      forwardTo.accept("Expired.jsp"); 
      return; 
     } else { 
      this_session[1]=df.format(new Date()); //reset the last session activity time 
      NotesBean thesenotes=new NotesBean(); 

      if(req.getParameter("task").trim().equals("9")){ 
       the_sessions.remove(this_session); 
       forwardTo.accept("exit.jsp"); 
       return; 
      } 

      thelock.lock(); 
      if (!req.getParameter("task").trim().equals("0")) {             //add ACC here, also show/update posts    
       thesenotes.setAll(req.getParameter("java_source"),Integer.parseInt(req.getParameter("version"))); 
       if (req.getParameter("task").trim().equals("2")) { 
        thesenotes.setNotes(req.getParameter("notes"),req.getParameter("java_source"),Integer.parseInt(req.getParameter("version"))); 
       } 
      } 
      req.setAttribute("thesessioncount",the_sessions.size()); 
      req.setAttribute("theBean",thesenotes); 
      req.setAttribute("manager",manager); 
      //req.setAttribute("theURL", "http://www.umsl.edu/~siegelj/turing.jpg"); 
      forwardTo.accept("getNotes.jsp"); 
      thelock.unlock(); 
      return; 
     } 
    }//end doGet 

    boolean tooLong(String now,String then){ 
     //Check amount of time that passed 
     return false; 
    } 
    boolean checkPW(String name,String password){ 
     AccountBean theAccount = new AccountBean(); 
     theAccount.setAccount(name); 

     if(theAccount.isPassword(password)) 
      return false; 

     return true; 
    } 

    public void log(String s){ 
     FileWriter fileWriter = null; 
     try { 
      String content =s+" at :"+new Date(System.currentTimeMillis()).toString()+"\n"; 
      File theLogFile = new File("C:/Tomcat/webapps/js_test/session.log"); 
      fileWriter = new FileWriter(theLogFile,true); 
      fileWriter.write(content); 
     } catch (IOException ex) { 
     } finally { 
      try { 
       fileWriter.close(); 
      } catch (IOException ex) { 

      } 
     } 

    } 

    void ForwardTo(String s,HttpServletRequest req, HttpServletResponse res) 
    { 
     RequestDispatcher rd= req.getRequestDispatcher(s); 
     try { 
      rd.forward(req, res); 
     } catch (IOException|ServletException is) { 
      log(" req from "+s+" not forwarded at "); 
      try { 
       throw is; 
      } catch (Exception e) { 
      } 
     } 
    } 

    public void destroy() 
    { 
     log("The instance was destroyed"); 
    } 
    public String getRandomString(){ 
     byte[] randbyte=new byte[10]; 
     Random rand = new Random(System.currentTimeMillis()); 
     for (int idx = 0; idx <10; ++idx) { 
      int randomInt = rand.nextInt(26); //0<=randomInt<26 
      //System.out.println(randomInt); 
      randbyte[idx]=(byte)(randomInt+65); 
     } 
     try { 
      String rs=new String(randbyte, "UTF-8"); 
      //System.out.println(rs); 
      return rs; 
     } catch (Exception e) { 
      //System.out.println("bad string"); 
      return "bad"; 
     } 
    } 

} 

AccountBean.java

package mybeans; 
import BH.*; 
import java.util.Iterator; 
import java.util.List; 
import java.util.ListIterator; 
import java.util.ArrayList; 
import java.util.Arrays; 
import static java.util.Arrays.asList; 
import java.sql.*; 

public class AccountBean implements java.io.Serializable { 
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://localhost/cs4010"; 
    static final String USER = "cs4010"; 
    static final String PASS = "cs4010"; 

    private String account=""; 
    private String password=""; 

    public AccountBean(){ 

    } 

     public void setAccount(String a) 
    { 
     account = a; 
    } 

    public String getAccount() 
    { 
     return account; 
    } 

    public void setPassword(String p) 
    { 
     password = p; 
    } 

    public String getPassword(){ 
     return password; 
    } 

    public void createAccount() 
    { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection conn = DriverManager.getConnection(DB_URL,USER,PASS); 
      Statement stmt = conn.createStatement(); 
     //  System.out.println("here: "+Bytes_Hex.String2HexString(n)); 
      String this_query="INSERT INTO ries_userpass (username, password) VALUES ("+account+","+password+");"; 
     //  System.out.println(this_query); 
      stmt.executeUpdate(this_query); 
      stmt.close(); 
      conn.close(); 
     } catch (Exception e) { 

     } 
     return ; 
    } 

    public boolean isPassword(String p)   //make this to use 
    { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection conn = DriverManager.getConnection(DB_URL,USER,PASS); 
      Statement stmt = conn.createStatement(); 
      String this_query=" SELECT * from ries_userpass WHERE username="+account+";"; 
      ResultSet rs = stmt.executeQuery(this_query); 

      while (rs.next()) {         
       password=Bytes_Hex.HexString2String(rs.getString("posts")); 

       if(password.equals(p)) 
       { 
        rs.close(); 
        stmt.close(); 
        conn.close(); 
        return true; 
       } 
      } 

      rs.close(); 
      stmt.close(); 
      conn.close(); 
     } 
     catch (Exception e) { 
      return false; 
     } 

     return false; 
    } 
} 
+2

欢迎来到Stack Overflow!请[参观](http://stackoverflow.com/tour)以查看网站的工作原理和问题,并相应地编辑您的问题。另请参见:[如何创建最小,完整和可验证的示例](http://stackoverflow.com/help/mcve) –

+0

只需在框中复制并粘贴您的代码,我们将编辑该代码以使语法突出显示 –

+0

您在哪里导入mybeans包? –

回答

0

添加此语句import mybeans.*;,因为你正在使用AccountBean,但你是不是进口该类包;

import BH.*; 
import mybeans.*; 
import java.io.IOException; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
import java.util.function.*; 
import static java.util.Arrays.asList; 
import java.text.DateFormat; 
import java.util.concurrent.locks.ReentrantLock; 
import java.util.Random; 
public class sessionServlet extends HttpServlet { 
    private List<String[]> the_sessions; 
    private DateFormat df; 
    public static ReentrantLock thelock = new ReentrantLock(); 


    public void init() throws ServletException { 
     the_sessions=new ArrayList<String[]>(); 
     df=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); 
    } 
    protected void doGet(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException 
    {  
     if ((!(req.getParameter("task")==null))&&(req.getParameter("task").trim().equals("deploy"))) { 
      PrintWriter out = res.getWriter(); 
      out.println("<html>"); 
      out.println("<body>"); 
      out.println("<hr /><center><h1>sessionServlet Deployed</h1></center><hr />"); 
      out.println("</body>"); 
      out.println("</html>"); 
      return; 
     } 
     Consumer <String> forwardTo =(s) ->ForwardTo(s,req,res); 
     boolean is_first_visit=true; 
     String[] this_session=new String[3]; 
     String manager = req.getParameter("manager"); 
     for (String [] a_session :the_sessions) { 
      if (a_session[0].equals(manager)) { //Found an active session 
       is_first_visit=false; 
       this_session=a_session; 
       break; 
      } 
     } 
     if ((req.getParameter("task")==null)&&(!is_first_visit)) { 
      the_sessions.remove(this_session); 
      is_first_visit=true; // just used http://hoare.cs.umsl.edu/servlet/js_test/sessionServlet 
     } 
     req.setAttribute("thesessioncount",the_sessions.size()); 
     if (is_first_visit) { 
      if (the_sessions.size()==10) { 
       forwardTo.accept("noSessions.jsp"); //No Available Sessions 
       return; 
      } 
      String randomStr = getRandomString(); 
      String[] new_session = {randomStr,df.format(new Date()),"need a name"}; 
      the_sessions.add(new_session); 
      this_session=new_session; 
      req.setAttribute("manager",randomStr); 
      forwardTo.accept("startSession.jsp"); 
      return; 
     } 
     String the_name=""; 
     String the_pw=""; 

     if (this_session[2].equals("need a name")) { //No name given yet 
      the_name=req.getParameter("whoisit"); 
      the_pw=req.getParameter("passwd"); 

      if ((the_name==null)||(the_name.trim().length()==0)||checkPW(the_name,the_pw)) {  //checkPW returns false if correct 
       the_sessions.remove(this_session); 
       req.setAttribute("thesessioncount",the_sessions.size()); 
       forwardTo.accept("startSession.jsp"); 
       return; // didn't enter a name in startSession 
      } 
     } 
     this_session[2]=the_name.trim(); 
     req.setAttribute("thename", this_session[2]); 
     if (tooLong(this_session[1],df.format(new Date()))) { //Has the session timed out? 
      the_sessions.remove(this_session); 
      forwardTo.accept("Expired.jsp"); 
      return; 
     } else { 
      this_session[1]=df.format(new Date()); //reset the last session activity time 
      NotesBean thesenotes=new NotesBean(); 

      if(req.getParameter("task").trim().equals("9")){ 
       the_sessions.remove(this_session); 
       forwardTo.accept("exit.jsp"); 
       return; 
      } 

      thelock.lock(); 
      if (!req.getParameter("task").trim().equals("0")) {             //add ACC here, also show/update posts    
       thesenotes.setAll(req.getParameter("java_source"),Integer.parseInt(req.getParameter("version"))); 
       if (req.getParameter("task").trim().equals("2")) { 
        thesenotes.setNotes(req.getParameter("notes"),req.getParameter("java_source"),Integer.parseInt(req.getParameter("version"))); 
       } 
      } 
      req.setAttribute("thesessioncount",the_sessions.size()); 
      req.setAttribute("theBean",thesenotes); 
      req.setAttribute("manager",manager); 
      //req.setAttribute("theURL", "http://www.umsl.edu/~siegelj/turing.jpg"); 
      forwardTo.accept("getNotes.jsp"); 
      thelock.unlock(); 
      return; 
     } 
    }//end doGet 

    boolean tooLong(String now,String then){ 
     //Check amount of time that passed 
     return false; 
    } 
    boolean checkPW(String name,String password){ 
     AccountBean theAccount = new AccountBean(); 
     theAccount.setAccount(name); 

     if(theAccount.isPassword(password)) 
      return false; 

     return true; 
    } 

    public void log(String s){ 
     FileWriter fileWriter = null; 
     try { 
      String content =s+" at :"+new Date(System.currentTimeMillis()).toString()+"\n"; 
      File theLogFile = new File("C:/Tomcat/webapps/js_test/session.log"); 
      fileWriter = new FileWriter(theLogFile,true); 
      fileWriter.write(content); 
     } catch (IOException ex) { 
     } finally { 
      try { 
       fileWriter.close(); 
      } catch (IOException ex) { 

      } 
     } 

    } 

    void ForwardTo(String s,HttpServletRequest req, HttpServletResponse res) 
    { 
     RequestDispatcher rd= req.getRequestDispatcher(s); 
     try { 
      rd.forward(req, res); 
     } catch (IOException|ServletException is) { 
      log(" req from "+s+" not forwarded at "); 
      try { 
       throw is; 
      } catch (Exception e) { 
      } 
     } 
    } 

    public void destroy() 
    { 
     log("The instance was destroyed"); 
    } 
    public String getRandomString(){ 
     byte[] randbyte=new byte[10]; 
     Random rand = new Random(System.currentTimeMillis()); 
     for (int idx = 0; idx <10; ++idx) { 
      int randomInt = rand.nextInt(26); //0<=randomInt<26 
      //System.out.println(randomInt); 
      randbyte[idx]=(byte)(randomInt+65); 
     } 
     try { 
      String rs=new String(randbyte, "UTF-8"); 
      //System.out.println(rs); 
      return rs; 
     } catch (Exception e) { 
      //System.out.println("bad string"); 
      return "bad"; 
     } 
    } 

} 
+0

我收录了它,它仍然没有编译。它也没有必要为我使用的其他bean工作。新错误显示为“错误:对NotesBean的引用不明确” – CRies

+0

请发布错误。 –

+0

感谢你们的帮助,我想我已经把它覆盖了。 – CRies