お世話になります。
会員登録の更新部分を作っています。
一度目は更新できるのですが、連続して更新しようとすると
ClassCastExceptionの例外が発生してしまいます。
オブジェクトからのキャストミスの部分が分かりません。
もしお分かりの方がいらっしゃればご教授よろしくお願いいたします。
以下がソースです。
java
1HTTPステータス 500 - java.lang.Integer cannot be cast to java.lang.String 2 3type 例外レポート 4 5メッセージ java.lang.Integer cannot be cast to java.lang.String 6 7説明 The server encountered an internal error that prevented it from fulfilling this request. 8 9例外 10 11java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 12 update.UpdateDb.doPost(UpdateDb.java:42) 13 javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 14 javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 15 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 16 encoding.EncodingFilter.doFilter(EncodingFilter.java:26)
java
1package update; 2 3import java.io.IOException; 4import java.sql.Connection; 5import java.sql.PreparedStatement; 6import java.sql.SQLException; 7 8import javax.servlet.RequestDispatcher; 9import javax.servlet.ServletConfig; 10import javax.servlet.ServletException; 11import javax.servlet.annotation.WebServlet; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15import javax.servlet.http.HttpSession; 16 17import connect.ConnectMySql; 18 19 20@WebServlet("/UpdateDb") 21public class UpdateDb extends HttpServlet 22{ 23 private static final long serialVersionUID = 1L; 24 25 protected PreparedStatement ps = null; 26 protected Connection con = null; 27 28 29 30 public void init(ServletConfig config) throws ServletException 31 { 32 // データベースへ接続 33 con= ConnectMySql.getConnection(); 34 } 35 36 37 protected void doPost(HttpServletRequest request, 38 HttpServletResponse response) throws ServletException, IOException 39 { 40 HttpSession session = request.getSession(true); 41 42 String oldname =(String) session.getAttribute("name");//パラメータでユーザーIDをゲットする 43 String oldpass =(String) session.getAttribute("pass");//パラメータでいれたパスワードをゲットする 44 45 String newname = request.getParameter("user"); 46 String newpass = request.getParameter("password"); 47 String meruado = request.getParameter("address"); 48 String denwa = request.getParameter("denwa"); 49 String syokusyu = request.getParameter("syokugyo"); 50 51 int ocupation = Integer.parseInt(syokusyu); 52 53 try 54 { 55 con.setAutoCommit(false); 56 57 String sql = "UPDATE PERSONALS SET USERID=?,PASSWORD=?," 58 + "MAILADDRESS=?,PHONENUMBER=?,OCUPATIONID=? WHERE USERID=? && PASSWORD=?"; 59 ps = con.prepareStatement(sql); 60 ps.setString(1, newname); 61 ps.setString(2, newpass); 62 ps.setString(3, meruado); 63 ps.setString(4, denwa); 64 ps.setInt(5, ocupation); 65 ps.setString(6, oldname); 66 ps.setString(7, oldpass); 67 68 int num = ps.executeUpdate(); 69 // System.out.println(num); 70 71 try 72 { 73 74 con.commit(); 75 System.out.println("登録成功"); 76 77 } 78 catch (SQLException e) 79 { 80 con.rollback(); 81 System.out.println("登録失敗:ロールバック実行"); 82 e.printStackTrace(); 83 } 84 } 85 catch(SQLException e) 86 { 87 throw new ServletException(e); 88 } 89 finally 90 { 91 if(ps != null) 92 { 93 try 94 { 95 ps.close(); 96 } 97 catch(SQLException ignore) 98 {} 99 } 100 if(con != null) 101 { 102 try 103 { 104 con.close(); 105 } 106 catch(SQLException ignore) 107 {} 108 } 109 } 110 session.setAttribute("name", newname); 111 session.setAttribute("pass", newpass); 112 RequestDispatcher dis = request.getRequestDispatcher("/other/upfinish.jsp"); 113 dis.forward(request, response); 114 } 115 public void destory() throws SQLException 116 { 117 ps.close(); 118 con.close(); 119 120 121 } 122}
追記
jspのソースも載せておきます。
java
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5<html> 6<head> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8<title>会員情報変更ページ</title> 9<link rel="stylesheet" type="text/css" href="css/basic.css"> 10</head> 11<body> 12<H1>会員情報を変更します</H1> 13<FORM ACTION="../UpdateDb" method="post"> 14<H3>ユーザーIDの変更</H3> 15<INPUT type="text" name="user"> 16<H3>パスワードの変更</H3> 17<INPUT type="password" name="password" maxlength="8"> 18<H3>電話番号の変更</H3> 19<INPUT type="text" name="denwa"> 20<H3>メールアドレスの変更</H3> 21<INPUT type="text" name="address"> 22<H3>職業の変更</H3> 23 <select name="syokugyo"> 24 <option value="0">--</option> 25 <option value="1">会社経営・自営</option> 26 <option value="2">自営業</option> 27 <option value="3">会社員(役員)</option> 28 <option value="4">会社員(管理職)</option> 29 <option value="5">会社員(一般社員)</option> 30 <option value="6">契約社員・派遣社員</option> 31 <option value="7">専門職(医師・弁護士など)</option> 32 <option value="8">公務員</option> 33 <option value="9">専業主婦・主夫・家事手伝い</option> 34 <option value="10">学生</option> 35 <option value="11">パート・アルバイト</option> 36 <option value="12">その他</option> 37 </select> 38<INPUT type="submit"> 39<INPUT type="reset"> 40</FORM> 41</body> 42</html>
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2016/09/03 00:32
2016/09/03 00:45
2016/09/03 08:20
2016/09/03 08:35
2016/09/03 08:40
2016/09/03 10:21