在JSP中更新数据库

时间:2015-08-19 05:32:57

标签: java html mysql jsp

我为我的JSP页面编写了这个Java代码,以更新用户的当前登录详细信息。代码未显示任何错误或异常,但未更新MySql数据库。

帮助我实现此功能;

我的代码:

<%
//variable declaration for encrypt and decrypt
byte [] input ;
byte [] keyBytes = "12345678".getBytes();
byte [] ivBytes ="input123".getBytes();

SecretKeySpec key = new SecretKeySpec(keyBytes,"DES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
Cipher cipher;
byte[] cipherText;
int ctLength=0;

Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);

if(request.getParameter("submit")!=null){
    String cuser=request.getParameter("currentusername"); 
    String user = request.getParameter("username");
    String pwd = request.getParameter("password");
    String cpwd = request.getParameter("confirmpassword");

    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
      input = pwd.getBytes();
      key = new SecretKeySpec(keyBytes, "DES");
      ivSpec = new IvParameterSpec(ivBytes);
      cipher = Cipher.getInstance("DES/CTR/NoPadding","BC");

      cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
      cipherText = new byte[cipher.getOutputSize(input.length)];

      ctLength+=cipher.update(input, 0, input.length, cipherText, 0);

      ctLength+= cipher.doFinal(cipherText, ctLength);
      String enpwd = new String(cipherText);


     String sql2 = "update webadmin set username=? ,password=? where username='"+cuser+"' ";

     if((cuser!=null &&cuser.length()>0) 
        && (user!=null &&user.length()>0)  
        && (pwd!=null && pwd.length()>0)
        && cpwd!=null && cpwd.length()>0) {

         if((pwd.equals(cpwd))){
           pst =conn.prepareStatement(sql2);
           pst.setString(1, user);
           pst.setString(2, enpwd);

            pst.executeUpdate();
%>
 <script language="JavaScript">
     alert("Sucessfully Updated");
 </script>
 <%
         }else{
             %>
           <script language="JavaScript">
            alert("Passwords are not matching try again");
            </script>
           <%

     }
    }
  }
}

%> 

注意:我实现加密密码并将加密的密码存储到数据库中。

HTML表单;

<form id="login-form"  action="adminpg-mysettings.jsp" method="post" role="form" style="display: block;">
              <div class="form-group">
                  <input type="text" name="currentusername" id="currentusername" tabindex="1" class="form-control" placeholder="Current Username" value="" required="">
              </div>
              <div class="form-group">
                <input type="text" name="username" id="username" tabindex="1" class="form-control" placeholder="New Username" value="" required="">
              </div>
              <div class="form-group">
                <input type="password" name="password" id="password" tabindex="2" class="form-control" placeholder="New Password" required="">
              </div>
              <div class="form-group">
                <input type="password" name="confirmpassword" id="password" tabindex="2" class="form-control" placeholder="Confirm New Password" required="">
              </div>
              <div class="form-group">
                <div class="row">
                  <div class="col-sm-6 col-sm-offset-3">
                    <input type="submit" name="submit" id="submit" tabindex="4" class="form-control btn btn-login" value="Save">
                  </div>
                </div>
              </div>
            </form>

2 个答案:

答案 0 :(得分:0)

首先,就像每个人都会告诉你的那样,将Java放入JSP中是一个非常糟糕的主意。正确的操作方式是使用Servlet和存储在会话中的请求。它可以防止恶意sql injections

其次,您的安全约束应在web.xmlServlet中处理,这最适合后端维护。遵循良好的编程习惯可以防止你因烦扰日志而疯狂。

我可以帮助您实现您尝试使用Servlet执行的操作,但在此之前,我需要了解以下内容:

  • 显而易见:你有Servlet吗?
  • 您使用JDBC / JNDI连接吗?
  • 您是否有用户的实体和会话课程?
  • 您使用哪个IDE /框架来开发应用程序?
  • 您要部署哪台服务器?

这是完成你想要的最有效的方法。请提供答案,我将用一些代码更新我的答案:)

答案 1 :(得分:0)

    public class UpdateController extends HttpServlet {
    
        
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
    
        }
    
        
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
            int id = Integer.parseInt(request.getParameter("id"));
            request.setAttribute("id", new StudentDAO().getStudent(id));
            request.getRequestDispatcher("update.jsp").forward(request, response);
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
            int id = Integer.parseInt(request.getParameter("id"));
            String name = request.getParameter("name");
            Date dob = Date.valueOf(request.getParameter("dob")); // yyyy-mm-dd
            String gender = request.getParameter("gender");
            Student s = new Student();
            s.setId(id);
            s.setName(name);
            s.setGender(gender);
            s.setDob(dob);
            StudentDAO db = new StudentDAO();
            db.update(s);
            response.sendRedirect("list");
            request.setAttribute("students", new StudentDAO().getAll());
    //        request.getRequestDispatcher("list.jsp").forward(request, response);
    
        }
     public void update(Student s) {
            try {
                String sql = "UPDATE [dbo].[Student]\n"
                        + "   SET [name] = ?\n"
                        + "      ,[gender] = ?\n"
                        + "      ,[dob] = ?\n"
                        + " WHERE id = ?";
                PreparedStatement ps = connection.prepareStatement(sql);
                ps.setString(1, s.getName());
                ps.setString(2, s.getGender());
                ps.setDate(3, s.getDob());
                ps.setInt(4, s.getId());
                ps.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(StudentDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Update</title>
        <%  String id = request.getParameter("id");%>
    </head>
    <body>
        <form action="update" method="post">
            <table>
                <tr>
                    <td>ID: <input type="text" name="id" 
                                   value="<%=id%>" readonly></td>
                </tr>
                <tr>
                    <td>Name: <input type="text" name="name"/></td> 
                </tr>
                <tr>
                    <td>Gender: <input type="radio" name="gender" value="male"/> Male
                        <input type="radio" name="gender" value="female"/> Female </td>
                </tr>
                <tr>
                    <td>Dob: <input type="date" name="dob" /></td>
                </tr>
            </table>
            <input type="submit" value="Create" />
        </form>
    </body>