アプリ版:「スタンプのみでお礼する」機能のリリースについて

Java初心者の者です。現在、DBを使ったWEBアプリケーションについて学んでおります。
htmlをスタートページとしてjsp(登録用画面)へ処理を移したいのですが、どのように記述すれば良いか悩んでおります。

現在、htmlの登録ボタンを押すと下記のエラーページへ飛んでしまいます。

The server encountered an internal error () that prevented it from fulfilling this request.
java.lang.IllegalStateException: レスポンスをコミットした後でフォワードできません


以下はソースの一部抜粋です。

HTML

<FIELDSET>
<LEGEND align="center">MENU</LEGEND>
<FORM action="/webapp/control" method="POST">
<INPUT class="button" type="submit" name="button" value="登録">
<INPUT class="button" type="submit" name="button" value="一覧">
</FORM>
</FIELDSET>

・・・・・

JSP

<%@page contentType="text/html;charset=Windows-31J" %>
<%@page import="java.sql.*" %>
<%@page import="XXX.XXX.XXX.bean.Bean" %>
<%@page import="XXX.XXX.XXX.Entry" %>
<%@page import="XXX.XXX.XXX.common.Accsess" %>
<HTML>
<HEAD>
<TITLE>登録画面</TITLE>
<link rel="stylesheet" type="text/css" href="./default.css">
</HEAD>
<BODY>
<DIV class="header">
<B>登録</B>
</DIV>
<BR>

<DIV align="center">

<FIELDSET class="entry">
<FORM action="/webapp/control" method="POST">
<TABLE border="0" cellspacing="0" cellpadding="5">

<TR>
<TD>ID</TD>
<TD><INPUT type="text" name="userid" value="" size="20" maxlength="16"></TD>
</TR>

<TR>
<TD>PASSWORD</TD>
<TD><INPUT type="text" name="password" value="" size="20" maxlength="16"></TD>
</TR>

//省略//

<INPUT class="button" type="submit" name="button" value="INSERT">

・・・・・・

try{
Bean bean=new Bean();
request.setCharacterEncoding("Windows-31J");
String button = request.getParameter("button");

if(button != null && button.equals("登録")){

//ここの記述が分かりません//

}

else if(button != null && button.equals("INSERT")){

//INSERTの呼び出し方も間違っている気がします//

Entry cEntry=new Entry();
CustomerEntry cEntry=new CustomerEntry();
cEntry.entry(bean);
request.setAttribute("ENTRY",cEntry);
}

finally{
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher=context.getRequestDispatcher("/insert.jsp");
dispatcher.forward(request,response);

・・・・・

初歩的な質問で申し訳ありませんが、ご教授お願い致します。

A 回答 (1件)

フォワードは条件によってできないときがあるので、あまりおすすめしません。


>ServletContext context = this.getServletContext();
>RequestDispatcher dispatcher=context.getRequestDispatcher("/insert.jsp");
>dispatcher.forward(request,response);

上記3行を以下のように書き換えてみたらどうでしょう?
response.sendRedirect("/insert.jsp");
    • good
    • 0
この回答へのお礼

>response.sendRedirect("/insert.jsp");
この方法ではないのですが、無事に解決することが出来ました!

ですが、forwardが条件によってできないことを初めて知ることが出来、
大変勉強になりました。
アドバイス有難う御座いました!

お礼日時:2010/12/22 22:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!