我有JSP页面-

<html>
<head>
</head>
<body>
         <%
               String valueToPass = "Hello" ;
         %>
    <a href="goToServlet...">Go to servlet</a>
</body>
</html>

和servlet-
    @WebServlet(name="/servlet123",
             urlPatterns={"/servlet123"})
    public class servlet123 extends HttpServlet {

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

        }

        public void foo() {

        }
}

为了向<a href="goToServlet...">Go to servlet</a>传递值(例如valueToPass或将值添加为),我应该在servlet123中写些什么?

我可以使用JSP中的链接调用servlet123中的特定方法(例如foo())吗?

编辑:

如何在URL中调用servlet?我的页面层次结构如下所示-
WebContent
 |-- JSPtest
 |    |-- callServletFromLink.jsp
 |-- WEB-INF
 :    :

我想在文件夹src-> control中调用servlet123

我尝试了<a href="servlet123">Go to servlet</a>,但是当我按链接时它没有找到servlet。

第2次编辑:

我尝试了<a href="http://localhost:8080/MyProjectName/servlet123">Go to servlet</a>,它可以工作。

最佳答案

如果要使用URL将参数发送到servlet,则应采用这种方式

<a href="goToServlet?param1=value1&param2=value2">Go to servlet</a>

然后检索将在请求中可用的值。

关于第二个问题。我会说不。您可以在URL中添加一个参数,例如
<a href="goToServlet?method=methodName&param1=value1">Go to servlet</a>

并使用该信息来调用特定的方法。

顺便说一句,如果您使用Struts之类的框架,这将更加容易,因为在Struts中,您可以将URL绑定(bind)到特定的Action方法(比如说“servlet”)

编辑后的:

您已经通过以下方式定义了servlet:
@WebServlet("/servlet123")

您,您的servlet将在/servlet123上可用。参见doc

我已经测试过您的代码,并且可以正常工作:
@WebServlet(name = "/servlet123", urlPatterns = { "/servlet123" })
public class Servlet123 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.write("<h2>Hello Friends! Welcome to the world of servlet annotation </h2>");
        out.write("<br/>");
        out.close();
    }
}

然后,我在http://localhost:8080/myApp/servlet123中调用了servlet(如果使用myApp,则将其作为应用程序上下文)。

关于java - 使用<a href>将值从jsp传递到servlet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11840751/

10-10 05:08