2013-03-11 26 views
0

我的问题与我正在为报表跟踪系统获取以下错误信息的tomcat日志访问重定向到“ userloginmid.jsp“。代码如下所示在同一个窗口中。在提交响应之后获取无法调用sepirectirect()

如果可能,请提供相同的解决方案。

<%@ page import="java.sql.*,java.util.*,java.text.*,java.text.SimpleDateFormat" %> 
<% 

    String userName = request.getParameter("userName"); 
    String password = request.getParameter("password"); 

    System.out.println("MySQL Connect Example."); 
    Connection conn = null; 
    String url = "jdbc:mysql://localhost:3306/"; 
    String dbName = "report_tracking"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String username = "root"; 
    String userPassword = "root"; 

     java.util.Date now = new java.util.Date(); 
     String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss"; 
     SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); 

    String strDateNew = sdf.format(now) ; 


    try { 
     Class.forName(driver).newInstance(); 
     conn = DriverManager.getConnection(url+dbName,username,userPassword); 
     Statement st = conn.createStatement(); 
     String strQuery = "select * from userregister where username='"+userName+"' and password='"+password+"'"; 
     out.println(strQuery); 
     ResultSet rs = st.executeQuery(strQuery); 

     if(rs.next()) 
     { 

      int userid=rs.getInt(1); 
      String user=rs.getString(2); 

      session.setAttribute("userid",userid); 
      session.setAttribute("username",user); 
      session.setAttribute("intime",strDateNew); 

      String queryString = "INSERT INTO admin set userid="+userid+",intime='"+strDateNew+"'"; 
      int i = st.executeUpdate(queryString); 

      if(i>0) 
      { 
       response.sendRedirect("welcome.jsp"); 
      } 

     } 

     response.sendRedirect("login.jsp"); 
     conn.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
%> 
+0

没有足够的细节来回答你的问题。每个问题在这里被视为独立的实体。 – 2013-03-11 08:16:46

回答

0

由于所有说,有你的代码很多loopholes

但回答你quesion是

sendRedirect requires a return statement 

因此改变你的代码行

response.sendRedirect("welcome.jsp"); return;

response.sendRedirect("login.jsp"); return; 

又读this

+0

嘿苏雷什感谢您的建议,但其实际上不工作 – 2013-03-12 07:06:02

+0

意味着仍然有相同的例外? – 2013-03-12 07:07:39

+0

是在catalina服务器日志中仍然收到相同的错误代码 – 2013-03-12 07:26:48

0

你的代码有很多问题。

首先,您所陈述的问题的说明,提交响应后重定向:

当HTTP标头已经发送给客户端(阅读有关HTTP协议,如果你不知道它),他们出去,不能被拉回来。您正在将样本编码到您的架构的VIEW部分 - 至少在“页面导入”和代码部分之间有一个可能触发服务器将缓冲区刷新到客户端的换行符。一旦完成,HTTP标头消失了,你不能再重定向了。

解决方法:不要在jsp中实现这个例程,而是在一个servlet中实现(或者使用一个体面的框架来处理这个问题,任何当前的就足够了)。

现在一些有关你的代码有问题:

  • 请阅读有关SQL injection。认为有人张贴 用户名像someone';someone' OR '0' = '0或类似(只是 做起来,因为我去)
  • 的一旦你的连接,以及任何错误运行,你会不干净 建立连接(例如,你会泄漏任何例外情况下的连接)
  • 您似乎在存储明文密码。这绝对是一个很快就没有去,因为 因为别人比你有一个帐户
相关问题