如何在调用Java方法的JSP文件中创建按钮

时间:2015-05-27 16:00:24

标签: jsp servlets

我正在构建一个Java EE应用程序(仍在学习),我不知道如何简单地将一个按钮与一个按照良好实践的功能相关联。

我正在使用MVC设计,应用程序搜索ldap(AD)并返回属于组成员的用户。

我使用GET表单将用户名发送到我的servlet,然后将其发送到表单进行搜索,然后将信息返回给我的vue。 (我选择GET而不是POST,因为有些用户喜欢直接在URL中填写?userName =。

我创建了一个将结果导出到excel文件的函数,我想将一个按钮与该函数相关联。据我所知,到目前为止我所做的是:

JSP:

<!-- Send the userName input to the servlet to perform the search-->
<form method="get" action="<c:url value="/GroupVerification"/>">    
        <table>
            <tr>
                <td><label for="userCip">Search by CIP : </label></td>
                <td><input type="text" id="userCip" name="userCip"  /></td>
                <td><input type="submit" value="Search"  /></td>
            </tr>

        </table>
</form>

...<!-- html code for displaying results -->

<!-- Button to create Excel file with results-->
<form method="post" action="<c:url value="/GroupVerification"/>">
     <input type="submit" name="excelExport" value="Export in Excel" />                                   
</form>

Servlet:

public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {

    if (request.getParameter("excelExport") != null) {
        GroupVerificationForm.excelExport(user.getGroupList());            
    }

    this.getServletContext().getRequestDispatcher( VUE ).forward( request, response );


public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
     ...
    <!-- Code to send the userName to the form to perform search and setAttributes -->

    this.getServletContext().getRequestDispatcher( VUE ).forward( request, response );

我不确定这是不好的做法,但用户是我的servlet中的私有全局变量,当进行搜索时,该变量与doGet()方法中的User关联...

无论如何,当我点击“导出到excel”按钮时,会调用doPost()并将我的结果导出到excel,但是,由于URL不再包含?userName = foo,我的搜索会消失。我的问题是我希望保持同一页面。有没有办法只使用按钮调用方法而不调用doPost所以我不会丢失我的URL?或者我应该在doPost中复制doGet代码,以便重新进行搜索并重新显示?

1 个答案:

答案 0 :(得分:2)

  

如何在调用Java方法的JSP文件中创建按钮

使用ajax。另请参阅How to use Servlets and Ajax?

  

但是,我的搜索消失了,因为网址不再包含?userName = foo

只需将表单提交到所需的网址即可。

<c:url value="/GroupVerification" var="groupVerificationURL">
    <c:param name="userName" value="${param.userName}" />
</c:url>
...
<form method="post" action="${groupVerificationURL}">