3

有没有办法直接从 JSP 页面中的按钮调用 servlet?然而,这不是 POST 表单提交按钮。它只是一个按钮,应该调用doGet()方法来获取一些值并转发到另一个 JSP。

这是小服务程序:

    public class PopulateProjectServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


public PopulateProjectServlet() {
    super();

}


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    try {

        List<Project> projects = PopulateProject.getProjects();
        request.setAttribute("projects", projects); 
        request.getRequestDispatcher("/UserHome/Projects.jsp").forward(request, response);

    } 

这是带有按钮的 JSP 页面:

    </head>
    <body>

     <input type="button" value="Update" onclick="<%MyServletName.Update(request, response);%>"></input>  **<--- I FOUND SOMETHING LIKE THAT BUT DIDNT WORK**
     <a href="/EmployeeLeaveForm/UserHome/Projects.jsp"> <button type=submit action="com.eteration.leavesystem.service.PopulateProjectServlet">Projeler</button></a> 
     <a href="/EmployeeLeaveForm/SharedByAll/Leave.jsp"> <button type=submit>Izin al</button></a> 
     <a href="/EmployeeLeaveForm/SharedByAll/LeaveCancelUpdate.jsp"> <button type=submit>Guncelle/Iptal et</button></a> 
     <a href="/EmployeeLeaveForm/SharedByAll/History.jsp"> <button type=submit>Gecmis</button></a> 
     <a href="/nextpage.jsp"> <button type=submit>cikis</button></a> 


     </body>
   </html>

如何使按钮首先到达 servlet,然后再转发到 JSP 页面?

4

1 回答 1

0

假设您已经在 Servlet 3.0 上,首先将@WebServlet注释与 URL 模式一起放置,让 servlet 侦听指定的 URL:

@WebServlet("/populateProjectServlet")
public class PopulateProjectServlet extends HttpServlet {}

现在,servlet 监听 URL /populateProjectServlet

然后,替换那个 HTML-invalid<a><button>

<a href="/EmployeeLeaveForm/UserHome/Projects.jsp"><button type=submit action="com.eteration.leavesystem.service.PopulateProjectServlet">Projeler</button></a> 

通过 HTML 有效 <form><button>,其中<form action>指向 servlet 的 URL(请注意,该<form>方法已经默认为 GET!):

<form action="${pageContext.request.contextPath}/populateProjectServlet"><button type="submit">Projeler</button></form>

如有必要,使用 CSSdisplay:inline内联显示表单。

另一种方法是使用指向hrefservlet 的 URL 的链接,并添加一些 CSS 以使其看起来像一个按钮:

<a href="${pageContext.request.contextPath}/populateProjectServlet" class="button">Projeler</a> 

也可以看看:


与具体问题无关,我强烈建议将该 JSP 放在/WEB-INF文件夹中,以使最终用户在不先调用 servlet 的情况下无法直接打开 JSP 页面。

于 2013-08-20T13:24:39.287 回答