html
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>password</title> 8</head> 9<body> 10<form action="/webkensyu/pass" method="get"> 11<p><label>id<input type="text" name="text1"></label></p><br> 12<p><label>ユーザー名<input type="text" name="text2"></label></p><br> 13<p><label>新しいパスワード<input type="text" name ="text3"></label></p> 14<button type="submit">確認</button> 15</form> 16</body> 17</html>
java
1package servlet; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12import dao.DBIO; 13 14/** 15 * Servlet implementation class pass 16 */ 17@WebServlet("/pass") 18public class pass extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 22 public pass() { 23 super(); 24 // TODO Auto-generated constructor stub 25 } 26 27 28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 request.setCharacterEncoding("UTF-8"); 30 String text1 = request.getParameter("text1"); 31 String text2 = request.getParameter("text2"); 32 String text3 = request.getParameter("text3"); 33 DBIO dbio = new DBIO(); 34 boolean result = dbio.Passchange(text1,text2,text3); 35 36 if(result == true) { 37 //成功すればパスワード変更 38 39 RequestDispatcher dispatcher = request.getRequestDispatcher("/passchange.jsp"); 40 dispatcher.forward(request, response); 41 }else { 42 //失敗すればもう一度パスワード変更画面へ 43 RequestDispatcher dispatcher = request.getRequestDispatcher("/password.jsp"); 44 dispatcher.forward(request, response); 45 } 46 } 47 48 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 49 // TODO Auto-generated method stub 50 doGet(request, response); 51 } 52 53} 54
java
1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9 10public class DBIO { 11 12 private static final String DBNAME = "jdbc:mysql://localhost:3306/webkensyu?useUnicode =true&characterEncoding=utf8"; 13 private static final String DBUSER = "user"; 14 private static final String DBPASS = "pass"; 15 private Connection conn; 16 17 18 public DBIO(){ 19 this.connect(); 20} 21 22 public void connect() { 23 try { 24 25 Class.forName("com.mysql.jdbc.Driver"); 26 27 conn = DriverManager.getConnection(DBNAME,DBUSER,DBPASS); 28 29 30 } catch(SQLException e) { 31 32 e.printStackTrace(); 33 34 }catch(ClassNotFoundException e) { 35 36 e.printStackTrace(); 37 38 } 39 } 40 41 42 //ユーザー一覧表示 43 public ArrayList<String> getUser(){ 44 45 ArrayList<String> result = new ArrayList<String>(); 46 47 try { 48 this.connect(); 49 50 String sql ="SELECT user_name FROM users"; 51 PreparedStatement pstmt = conn.prepareStatement(sql); 52 ResultSet rs = pstmt.executeQuery(); 53 54 while(rs.next()) { 55 56 result.add(rs.getString("user_name")); 57 } 58 }catch(SQLException e) { 59 60 e.printStackTrace(); 61 }finally { 62 63 this.close(); 64 } 65 66 67 return result; 68 } 69 70 71 72 //パスワード変更 73 public boolean Passchange(String id, String name, String pass){ 74 75 try{ 76 this.connect(); 77 String sql ="UPDATE users SET password = ? WHERE user_id = ? && user_name = ?"; 78 PreparedStatement pstmt = conn.prepareStatement(sql); 79 pstmt.setString(1, pass); 80 pstmt.setString(2, id); 81 pstmt.setString(3, name); 82 ResultSet rs = pstmt.executeQuery(); 83 if(rs != null) { 84 return true; 85 }else { 86 return false; 87 } 88 }catch (SQLException e) { 89 90 e.printStackTrace(); 91 }finally { 92 93 this.close(); 94 } 95 96 return false; 97 } 98 99 //ログインで入力されたユーザー名、パスワードの確認 100 public boolean Authentication(String name, String pass) { 101 try { 102 103 this.connect(); 104 105 String sql ="SELECT user_name,password FROM users WHERE user_name = ? && password = ? "; 106 PreparedStatement pstmt = conn.prepareStatement(sql); 107 pstmt.setString(1, name); 108 pstmt.setString(2, pass); 109 ResultSet rs = pstmt.executeQuery(); 110 111 if(rs != null) { 112 return true; 113 }else { 114 return false; 115 } 116 }catch (SQLException e) { 117 118 e.printStackTrace(); 119 }finally { 120 121 this.close(); 122 } 123 return false; 124 } 125 126 127 128 public void close() { 129 130 if(conn != null) { 131 try { 132 conn.close(); 133 }catch(SQLException e) { 134 e.printStackTrace(); 135 } 136 } 137 } 138} 139 140 141
jspから渡されたパスワードでデータベースのパスワードを更新したいのですが(ログインしている人の)
実行すると
at dao.DBIO.Passchange(DBIO.java:82) ResultSet rs =pstmt.executeQuery();
at servlet.pass.doGet(pass.java:38)boolean result =dbio.Passchange(text1,text2,text3);
とエラーが出てしまいます。
解決出来なかったのでアドバイス頂けると助かります
java
1 2 //パスワード変更 3 public boolean Passchange(String id, String name, String pass){ 4 5 try{ 6 this.connect(); 7 String sql ="UPDATE users SET password = ? WHERE user_id = ? && user_name = ?"; 8 PreparedStatement pstmt = conn.prepareStatement(sql); 9 pstmt.setString(1, pass); 10 pstmt.setString(2, id); 11 pstmt.setString(3, name); 12 ResultSet rs = pstmt.executeQuery(); 13 if(rs != null) { 14 return true; 15 }else { 16 return false; 17 } 18 }catch (SQLException e) { 19 20 e.printStackTrace(); 21 }finally { 22 23 this.close(); 24 } 25 26 return false; 27 }
--追記--
java
1//ユーザーの作成 2 public int Make_user(String id, String name, String pass) { 3 try { 4 5 this.connect(); 6 String sql ="INSERT INTO users(user_id,user_name,password)VALUES(?,?,?)"; 7 PreparedStatement pstmt = conn.prepareStatement(sql); 8 pstmt.setString(1, id); 9 pstmt.setString(2, name); 10 pstmt.setString(3, pass); 11 int rs = pstmt.executeUpdate(sql); 12 if(rs == 1) { 13 return 0; 14 }else { 15 16 return -1; 17 } 18 19 }catch (SQLException e) { 20 21 e.printStackTrace(); 22 }finally { 23 24 this.close(); 25 } 26 27 return -1; 28 } 29
新しくユーザー作成機能を作ろうとしたのですが
at dao.DBIO.Make_user(DBIO.java:137) int rs = pstmt.executeUpdate(sql);
at servlet.Makeuser.doGet(Makeuser.java:40) int result = dbio.Make_user(text1,text2,text3); (サーブレット呼び出し側)
のところでエラーが出てしまいます。
回答2件
あなたの回答
tips
プレビュー