使用 <a href> 将值从 jsp 传递到 servlet

Posted

技术标签:

【中文标题】使用 <a href> 将值从 jsp 传递到 servlet【英文标题】:pass values from jsp to servlet using <a href> 【发布时间】:2012-08-04 03:50:38 【问题描述】:

我有 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() 

        

我应该在&lt;a href="goToServlet..."&gt;Go to servlet&lt;/a&gt; 中写什么以便将值(例如valueToPass 或者可能将值作为参数添加到servlet123 中)?

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

编辑:

如何在 URL 中调用 servlet?我的页面层次结构如下 -

WebContent
 |-- JSPtest
 |    |-- callServletFromLink.jsp
 |-- WEB-INF
 :    :

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

我试过&lt;a href="servlet123"&gt;Go to servlet&lt;/a&gt;,但是当我点击链接时它没有找到servlet。

第二次编辑:

我试过&lt;a href="http://localhost:8080/MyProjectName/servlet123"&gt;Go to servlet&lt;/a&gt;,它工作。

【问题讨论】:

如果需要记得对值进行编码 【参考方案1】:

如果你想使用 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 绑定到特定的 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,那么它就是您的应用程序上下文)。

【讨论】:

谢谢,所以如果我使用像“goToServlet?param1=value1&param2=value2”这样的 URL,servlet 中的哪个方法会被调用? doGet ? 你应该使用 doGet。看看这个答案:***.com/a/2349741/980472 然后使用 request.getParameter("method") 获取值“methodName”。您应该对任何参数值进行 url 编码,请参阅URL Encoding。如果在 Java 中,您可以使用内置的 URLEncoder 类。 @mrswadge 我知道编码。我不知道如何在 URL 中调用 servlet。 @jddsantaella 我做到了,但链接无效,我再次编辑了帖子。【参考方案2】:

&lt;a href="url"&gt;urltitle&lt;/a&gt; 允许您定义一个 url。从这里调用 servlet 与从浏览器调用一样好,只需提供您在浏览器中提供的 url 即可调用 servlet,如 http://mysite.com?param1=val1&param2=val2 等。

【讨论】:

现在如何在第二个 servlet 中检索 param1 和 param2 的值?

以上是关于使用 <a href> 将值从 jsp 传递到 servlet的主要内容,如果未能解决你的问题,请参考以下文章

将值从 JSP 发送到 servlet

JSP 将值从表传递到表单

如何使用 <c:set> 将值从 <security:authentication/> 设置为参数

使用DAO将值从java类传递给jsp页面

如何将值从javascript传递到iOS UIWebView

在将值从 Servlet 发送到客户端 JSP 时获取 null [重复]