在显示JSP之前调用servlet的doGet()

时间:2013-08-20 13:17:28

标签: html jsp servlets

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

这是servlet:

    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,而servlet又转发到JSP页面?

2 个答案:

答案 0 :(得分:0)

如果您已经使用Servlet 3.0,请首先使用URL模式放置@WebServlet注释,让servlet监听指定的URL:

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

现在,servlet侦听URL /populateProjectServlet

然后,替换该HTML无效的<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>

必要时使用CSS display:inline以内联方式显示表单。

另一种方法是使用一个链接,其href指向servlet的URL并引入一些CSS来设置它看起来像一个按钮:

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

另见:


对具体问题

无关,我强烈建议将该JSP放在/WEB-INF文件夹中,以使最终用户无法直接打开JSP页面而无需先调用servlet。

答案 1 :(得分:-2)

请尝试doPost功能,当然意味着方法如:

public void doPost(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);

        }
抱歉我的英语不好。我正在学习

相关问题