- PR -

DBからセッション格納

1
投稿者投稿内容
miushinozaki
会議室デビュー日: 2005/12/27
投稿数: 8
お住まい・勤務地: 千葉
投稿日時: 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)

小さな助言でも構いませんので、よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-29 13:04
"mail"がnullだとか?
miushinozaki
会議室デビュー日: 2005/12/27
投稿数: 8
お住まい・勤務地: 千葉
投稿日時: 2005-12-29 13:37
データベースのほうはちゃんと値が入っているのですが、
取り出せてないってことですかね?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-29 13:55
SQLExceptionが発生したら変数 s が null のままですね。
miushinozaki
会議室デビュー日: 2005/12/27
投稿数: 8
お住まい・勤務地: 千葉
投稿日時: 2005-12-29 14:00
では、SQLExceptionが発生しているということなんでしょうかね?
うーん、どう対処すべきなんでしょう…
miushinozaki
会議室デビュー日: 2005/12/27
投稿数: 8
お住まい・勤務地: 千葉
投稿日時: 2005-12-29 14:15
自己解決しました。
インギさんのヒントでわかりました。
本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)