2015-08-19 3 views
4

Я закодировал этот код Java для своей страницы JSP, чтобы обновлять текущие данные пользователя. Код не показывает никаких ошибок или исключений, но не обновляет базу данных MySql.Обновление базы данных в JSP

Помогите мне реализовать эту функциональность;

Мой код:

<% 
//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> 
+1

распечатайте запрос и попробуйте его на консоли объявлений. возможно, вы получите ожидаемые данные. – Jens

+0

Проверьте условия отладки, убедитесь, что все условия выполнены для обновления. Кроме того, убедитесь, что существует cuser в db, иначе условие sql не будет совпадать. – drgPP

+2

только зачем в jsp? почему пароль для подключения имени пользователя также находится в jsp? –

ответ

0

Во-первых, как вам все скажут, это очень плохая идея поместить Java в JSP. Правильный способ работы - это Servlet и запросы, хранящиеся в сеансе. Это предотвратит злонамеренный sql injections.

Во-вторых, ваши ограничения безопасности должны обрабатываться в web.xml и Servlet, что лучше всего подходит для обслуживания на заднем плане. Следуя хорошей практике программирования, вы не сможете сходить с ума из-за прослушивания журналов.

Я могу помочь вам осуществить то, что вы пытаетесь сделать с Servlet, но прежде, чем я, мне нужно знать следующее:

  • Очевидный: У вас есть сервлет?
  • Вы используете соединение JDBC/JNDI?
  • Есть ли у вас классы сущности и сеанса для пользователя?
  • Какую среду IDE/рамки вы используете для разработки своего приложения?
  • На какой сервер вы развертываете?

Это самый эффективный способ выполнить то, что вы хотите. Пожалуйста, дайте ответы, и я уточню свой ответ с помощью кода :)