0

如何在成功注册后显示的页面中显示用户名和密码。

我为注册开发的代码如下

<%@page import="java.io.*,java.sql.*;" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Halcyon Technologies Pvt. Ltd.</title>
</head>
<body bgcolor="#D9EEFB">
    <p
      <% try
      {
       String Username;
       String Password;
       ResultSet rs;
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection con=DriverManager.getConnection("jdbc:odbc:OnlineExam");
       Statement st=con.createStatement();
       Statement st2=con.createStatement();
       Statement st3=con.createStatement();
       String status="s";
       st2.executeUpdate("insert into Login values('"+request.getParameter("username")+"','"
                                                     +request.getParameter("password")+"','"
                                                     +status+"')");
       st.executeUpdate("insert into Details values('"+request.getParameter("username")+"','"
                                                      +request.getParameter("name")+"','"
                                                      +request.getParameter("gender")+"','"
                                                      +request.getParameter("sel_cat")+"')");
       if(request.getParameter("sel_cat").equals("Experienced"))
       {
                  st3.executeUpdate("insert into Experienced values('"+request.getParameter("username")+"','"+request.getParameter("expyears")+"','"+request.getParameter("company")+"','"+request.getParameter("designation")+"','"+request.getParameter("salary")+"','"+request.getParameter("comAddress")+"')");
       }
        String s1 = request.getParameter("username");
        String s2 = request.getParameter("password");

        session.setAttribute("s1", s1);
        session.setAttribute("s2", s2);
        rs = st.executeQuery("select Username, Password from Login where Username='" + s1 + "'");

       if (rs.next()) 
        {
            Username=rs.getString(1);
            Password=rs.getString(2);
            System.out.println(Username);
            System.out.println(Password);
        }
       st.close();
       st2.close();
       st3.close();
       }

       catch(Exception e)
               {
           out.println(e);
               }
%>
  <font color="red" size="5"> You have registered successfully!!!<br></font>
  <font color="red" size="5"> Username :  <br></font>
  <font color="red" size="5"> Password :  <br></font>
  <p><a href="Login.jsp"><strong>Go Forward</strong></a></p>
</body>
</html>

我可以在控制台上获取用户名和密码,但是如何在 JSP 上显示它们。

这里要在控制台上显示的代码是

if (rs.next()) 
        {
            Username=rs.getString(1);
            Password=rs.getString(2);
            System.out.println(Username);
            System.out.println(Password);
        }

显示 JSP 的代码如下。在这个 JSP 中,我想显示用户名和密码。

 <font color="red" size="5"> You have registered successfully!!!<br></font>
  <font color="red" size="5"> Username :  <br></font>
  <font color="red" size="5"> Password :  <br></font>
  <p><a href="Login.jsp"><strong>Go Forward</strong></a></p>

如何编写代码以在 JSP 中显示用户名和密码?

4

1 回答 1

0

这不是一个有效的 SQL 查询:

"select Username and  Password from Login where Username='" + c1 +"'"

它应该是:

"select Username, Password from Login where Username='" + c1 +"'"

但是,您应该使用PreparedStatement而不是简单的语句,因为您当前的 SQL 非常适合SQL 注入攻击:想想如果变量c1具有值,查询会给出什么样的结果:(' or '1'='1这是典型和最基本的示例这种攻击)。

要纠正它,请执行以下操作:

PreparedStatement st = con.prepareStatement("select Username, Password from Login where Username=?");
st.setString(1, c1);
ResultSet rs = st.executeQuery();

其他备注:

  • 永远不要以纯文本形式存储密码,你应该对它们进行哈希处理,有很多工具可以加密和验证密码。
  • 尝试为您的变量/属性/等使用有意义的名称,否则您的代码最终将无法阅读。使用命名变量比使用变量username要好得多,c1并且可以帮助其他人理解您的代码在做什么。
于 2013-06-04T08:50:32.370 回答