- - PR -
DBからセッション格納
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-29 12:09
Java歴4ヶ月の初心者ですが、よろしくお願いします。
データベースから格納している個人のメールアドレスの値を取り出すプログラムを作成しているのですが、上手くセッションに格納できていません。 プログラムは以下の通りです。 package action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; import org.apache.struts.action.DynaActionForm; public class remailAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaActionForm dForm = (DynaActionForm)form; String name = (String)dForm.get("name"); String mail = null; String target = "remail"; mail = getUser(name); HttpSession session = request.getSession(); session.setAttribute("mail", mail); session.setAttribute("mailuser", name); return mapping.findForward(target); } protected String getUser(String mailname){ Connection con = null; Statement st = null; ResultSet rs = null; String s = null; ServletContext context = servlet.getServletContext(); DataSource source = (DataSource)context.getAttribute( org.apache.struts.Globals.DATA_SOURCE_KEY); try{ con = source.getConnection(); st = con.createStatement(); rs = st.executeQuery("SELECT * FROM member WHERE " + "name='" + mailname + "' "); s = rs.getString("mail"); } catch (SQLException e) { System.err.println(e.getMessage()); } finally { if (rs != null) { try { rs.close(); } catch (SQLException sqle) { System.err.println(sqle.getMessage()); } rs = null; } if (st != null) { try { st.close(); } catch (SQLException sqle) { System.err.println(sqle.getMessage()); } st = null; } if (con != null) { try { con.close(); } catch (SQLException sqle) { System.err.println(sqle.getMessage()); } con = null; } } return s; } } sessionのnameは上手く格納できているのですが、mailのほうがダメみたいで、 以下のようなエラーメッセージが出ました。 エラーメッセージは以下の通りです。 javax.servlet.ServletException: Cannot find bean mail in scope session org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758) org.apache.jsp.view.remail_jsp._jspService(remail_jsp.java:73) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069) org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filter.EncodingFileter.doFilter(EncodingFileter.java:30) 小さな助言でも構いませんので、よろしくお願いします。 |
|
投稿日時: 2005-12-29 13:04
"mail"がnullだとか?
|
|
投稿日時: 2005-12-29 13:37
データベースのほうはちゃんと値が入っているのですが、
取り出せてないってことですかね? |
|
投稿日時: 2005-12-29 13:55
SQLExceptionが発生したら変数 s が null のままですね。
|
|
投稿日時: 2005-12-29 14:00
では、SQLExceptionが発生しているということなんでしょうかね?
うーん、どう対処すべきなんでしょう… |
|
投稿日時: 2005-12-29 14:15
自己解決しました。
インギさんのヒントでわかりました。 本当にありがとうございました。 |
1