1

私はここで新しく、一晩中これに取り組んでいます。私はこれが単純であることを知っていますが、何かばかげたことを見逃しています。jsp ページとサーブレットがあります (以下のコード)。データベースから顧客を検索しようとしていますが、うまくいきます。ただし、顧客が見つからない場合は、同じ jsp ページにエラー メッセージを投稿して、ユーザーが間違いを犯した場合に電話番号を再入力できるようにします。これを行う方法がわかりません。新しい「顧客」ページに問題なく転送でき、同じページにリダイレクトすることに成功しましたが、そこにメッセージを入れる方法がわかりません。助けてください!

jsp ページ:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isELIgnored="false" %>
    <%@ page import="java.util.*" %>  
    <%@ include file="staticpages/pageHeader.html" %>
        <br />      
            <hr />
            <br />
            <form name="custform" method="POST" action="ChooseCustomer.do" >
            <span class="sectionheader">Look Up Customer by Phone Number:</span>

            <input type="text" name="phone1" size="3" maxlength="3" onKeyUp="checklen(this)" />             
            <input type="text" name="phone2" size="3" maxlength="3" onKeyUp="checklen(this)" />
            <input type="text" name="phone3" size="4" maxlength="4" onKeyUp="checklen(this)" />
            <input type="submit" name="formaction" value="Search" />
            <input type="submit" name="formaction" value="Enter New Customer" />
            </form> 
    <%@ include file="staticpages/pageFooter.html" %>

サーブレット コード:

package pizzapkg;

import java.io.IOException;
import java.sql.ResultSet;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ChooseCustomer
 */
@WebServlet("/ChooseCustomer")
public class ChooseCustomer extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)  */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Customer c = null;
        if (request.getParameter("formaction").equals("Search")) {

                Database db = (Database) getServletContext().getAttribute("db");
            /* Search Database for existing customer */
            String searchPhone = request.getParameter("phone1") 
                    + request.getParameter("phone2") 
                    + request.getParameter("phone3");
            String sql = "SELECT * FROM customers WHERE cust_phone=\"" + searchPhone + "\";";
            ResultSet rs;
            try {
                rs = db.runSqlQuery(sql);
                rs.next();
                c = new Customer(rs.getString("cust_id"), rs.getString("cust_fname"), 
                        rs.getString("cust_lname"), rs.getString("cust_address"), 
                        rs.getString("cust_city"), rs.getString("cust_state"), 
                        rs.getString("cust_zip"), rs.getString("cust_phone"),
                        rs.getString("cust_notes"));
            } catch (Exception e) { e.printStackTrace(); }
            request.setAttribute("customer", c);        
        }
        RequestDispatcher rd = request.getRequestDispatcher("/customer.jsp");
        rd.forward(request, response);
    }
}

PSサーブレットを構築したのはこれが初めてなので、これは私にとってまったく新しいことです。私は例が大好きなので、あなたが与えることができるどんな助けも大歓迎です.

4

1 に答える 1

1

顧客が見つからない場合など、request内のオブジェクトにフラグを設定できます。servlet

          request.setAttribute("customerFound", "No");

JSP で、JSP スクリプトレットを配置してリクエスト属性をチェックし、必要な場所にメッセージを出力します。たとえば、<HR/>then の後にメッセージが必要な場合:

        <hr />
        <% if("No".equals(request.getAttribute("customerFound")) { %>
            <div style="color: red">No customer found</div>
        <% } %>
        <br />

私はあなたの望む結果を達成するための非常に基本的な方法を共有しています.

于 2012-11-09T03:14:38.590 に答える