1

私は JSP とサーブレットを初めて使用します。 update、delete、search などの複数のアクションを 1 つのサーブレットに入れる必要があります。ここに My jsp と Servlet を追加しました。jquery 検証も使用しています。誰でも私を助けてください。私の質問が明確でない場合は、コメントしてください。

<

form id="form-sign-up" class="styled" action="DepartmentServlet" method="post">
                <fieldset>
                    <h3>Department </h3>
                    <ol>
                        <li class="form-row"><label>Department Id:</label>
                            <input type="text" name="departmentId" id="departmentId" class="text-input required"/><span id="errmsg"></span>
                        </li>
                        <li class="form-row"><label>Department Name:</label>
                            <input type="text" name="departmentName" id="departmentName" class="text-input required"/>
                        </li>
                        <li class="form-row"><label>Department Head:</label>
                            <select name="departmentHead" class="text-input required" id="myDropdown"style="width: 158px"> <option value="">Select Department Head</option>
                                <%

                                    String val = "";
                                    Department dp = new Department();
                                    ResultSet rs = dp.getHeadOfDepartment();
                                    while (rs.next()) {
                                        val = rs.getString(2);
                                %>

                                <option value="<%= val%>"><%= val%></option>
                                <%
                                    }

                                %>


                            </select>
                        </li>
                        <li class="form-row"><label>Appointed Date:</label>
                            <input id="demo1" name="appointedDate"type="text" maxlength="25" size="25" class="text-input required"><a href="javascript:NewCal('demo1','ddmmmyyyy',true,24)"><img src="images/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>
                                <span class="descriptions">pick a date..</span>
                        </li>

                        <li class="button-row">
                            <input type="submit" value="ADD" id="add"class="btn-submit img-swap"/>
                            <input type="submit" value="Delete"  class="btn-delete img-swap"/>
                            <input type="submit" value="Update" class="btn-update img-swap"/>
                            <input type="submit" value="Search" class="btn-search img-swap"/>
                        </li>
                    </ol>
                </fieldset>
            </form>

public class DepartmentServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //Getting the Value from the viewer
        String sdepartmentId=request.getParameter("departmentId");
        String departmentName=request.getParameter("departmentName");
        String departmentHead=request.getParameter("departmentHead");
        String dateTime=request.getParameter("appointedDate");




        //Converting to the String department id to integer
        Integer departmentId=Integer.parseInt(sdepartmentId);

        Department dp=new Department();
        dp.setAppDate(dateTime);
        dp.setDepartHead(departmentHead);
        dp.setDepartId(departmentId);
        dp.setDepartName(departmentName);
        try {
            new Department().insertDepartment(dp);
        } catch (SQLException ex) {
            Logger.getLogger(DepartmentServlet.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}

$(document).ready(function() { 
    $("#departmentId").keypress(function (e)  
    { 
        //if the letter is not digit then display error and don't type anything
        if( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57))
        {
            //display error message
            $("#errmsg").html("Digits Only").show().fadeOut("slow"); 
            return false;
        }   
    });


    $('.btn-delete').click(function(e){

        // Declare the function variables:
        // Parent form, form URL, email regex and the error HTML
        var $formId = $(this).parents('form');
        var formAction = $formId.attr('action');
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        var $error = $('<span class="error"></span>');

        // Prepare the form for validation - remove previous errors
        $('li',$formId).removeClass('error');

        $('span.error').remove();

        // Validate all inputs with the class "required"
        $('.required',$formId).each(function(){
            var inputVal = $("#departmentId").val();
            var $parentTag = $("#departmentId").parent();
            if(inputVal == ''){
                $parentTag.addClass('error').append($error.clone().text('Required Field'));
            }






            // Run the email validation using the regex for those input items also having class "email"


            // Check passwords match for inputs with class "password"


        });

        // All validation complete - Check if any errors exist
        // If has errors



        if ($('span.error').length > 0) {

            $('span.error').each(function(){

                // Set the distance for the error animation
                var distance = 5;

                // Get the error dimensions
                var width = $(this).outerWidth();

                // Calculate starting position
                var start = width + distance;

                // Set the initial CSS
                $(this).show().css({
                    display: 'block',
                    opacity: 0,
                    right: -start+'px'
                })
                // Animate the error message
                .animate({
                    right: -width+'px',
                    opacity: 1
                }, 'slow');

            });
        } else {
            $formId.submit();
        }
        // Prevent form submission
        e.preventDefault();


    });

    // Fade out error message when input field gains focus
    $('.required').focus(function(){
        var $parent = $(this).parent();
        $parent.removeClass('error');
        $('span.error',$parent).fadeOut();
    });

    $('.btn-submit').click(function(e){

        // Declare the function variables:
        // Parent form, form URL, email regex and the error HTML
        var $formId = $(this).parents('form');
        var formAction = $formId.attr('action');
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        var $error = $('<span class="error"></span>');

        // Prepare the form for validation - remove previous errors
        $('li',$formId).removeClass('error');

        $('span.error').remove();

        // Validate all inputs with the class "required"
        $('.required',$formId).each(function(){
            var inputVal = $(this).val();
            var $parentTag = $(this).parent();
            if(inputVal == ''){
                $parentTag.addClass('error').append($error.clone().text('Required Field'));
            }






            // Run the email validation using the regex for those input items also having class "email"
            if($(this).hasClass('email') == true){
                if(!emailReg.test(inputVal)){
                    $parentTag.addClass('error').append($error.clone().text('Enter valid email'));
                }
            }

            // Check passwords match for inputs with class "password"
            if($(this).hasClass('password') == true){
                var password1 = $('#password-1').val();
                var password2 = $('#password-2').val();
                if(password1 != password2){
                    $parentTag.addClass('error').append($error.clone().text('Passwords must match'));
                }
            }

        });

        // All validation complete - Check if any errors exist
        // If has errors



        if ($('span.error').length > 0) {

            $('span.error').each(function(){

                // Set the distance for the error animation
                var distance = 5;

                // Get the error dimensions
                var width = $(this).outerWidth();

                // Calculate starting position
                var start = width + distance;

                // Set the initial CSS
                $(this).show().css({
                    display: 'block',
                    opacity: 0,
                    right: -start+'px'
                })
                // Animate the error message
                .animate({
                    right: -width+'px',
                    opacity: 1
                }, 'slow');

            });
        } else {
            $formId.submit();
        }
        // Prevent form submission
        e.preventDefault();


    });

    // Fade out error message when input field gains focus
    $('.required').focus(function(){
        var $parent = $(this).parent();
        $parent.removeClass('error');
        $('span.error',$parent).fadeOut();
    });



});
4

2 に答える 2

1

たとえば、javascriptでサーブレットメソッドを呼び出すだけです。

送信ボタンでは、名前属性を使用します

<li class="button-row">
                            <input type="submit" value="ADD" id="add"class="btn-submit img-swap" name="add" />
                            <input type="submit" value="Delete"  class="btn-delete img-swap" name="delete" />
                            <input type="submit" value="Update" class="btn-update img-swap" name="update" />
                            <input type="submit" value="Search" class="btn-search img-swap" name="search" />
                        </li>

次のようにタグ名を送信することで、JavaScriptで複数のメソッドを使用して単一のサーブレットを呼び出すことができます

       <script type="text/javascript">
    var frm = document.forms[0];

    if (request.getParameter("add") != null) {

        var pageName = "/DepartmentServlet?method=add"
        frm.action = pageName;
        frm.submit();

}
else if (request.getParameter("delete") != null) {
    //likewise you can call your other method from DepartmentServlet
    //Even you can pass parameter by onClick event
    // Invoke action 2.
}
else if (request.getParameter("update") != null) {
    // Invoke action 3.
}

</script>
于 2012-08-13T08:37:54.200 に答える
0

単一のサーブレットを使用して複数の操作を実行する場合、簡単な方法の 1 つは、操作ごとに異なるメソッドを作成し、用途に合わせてそれらを呼び出すことです。このメソッドを呼び出す if ステートメント

<input type="hidden" name="operation" id="operId" value="insert" />

他のフィールドにアクセスするのと同じ方法でこれにアクセスでき、ここで指定された値を取得し、挿入として値を取得します

サーブレットでは、次を使用してアクセスできます

 String operation=request.getParameter("operation");
于 2012-08-13T08:25:05.903 に答える