我的问题再次与我正在为报告跟踪系统做的相同的项目有关,在访问重定向到“userloginmid.jsp”的登录页面后,在tomcat日志中获得以下错误。代码如下所示同一个窗口。
如果可能,请提供相同的解决方案。
<%@ 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 :(得分:0)
您的代码存在很多问题。
首先,解释你陈述的问题,在做出回应后重定向:
当HTTP标头已经发送到客户端时(如果您还不知道它,请阅读HTTP协议),它们已经关闭,无法撤回。您在jsp中对样本进行编码,这是您的架构的VIEW部分 - 至少在&#34;页面导入&#34;之间。并且代码部分有一个换行符,可能触发服务器将其缓冲区刷新到客户端。一旦完成,HTTP标头就会消失,您无法再重定向。
解决方法:不要在jsp中实现这个例程,而是在servlet中(或者使用一个适合你的问题来处理这个问题。任何一个当前的就足够了。)
现在谈谈您的代码存在的一些问题:
someone';
someone' OR '0' = '0
或类似名称(只是
让我们一起去吧)答案 1 :(得分:0)
正如所有人所说,代码中有很多loopholes
。
但你问题的答案是
sendRedirect requires a return statement
因此,请将您的代码行更改为
response.sendRedirect( "welcome.jsp"); return;
和
response.sendRedirect("login.jsp"); return;
另请阅读this。