使用 <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()
我应该在<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。
第二次编辑:
我试过<a href="http://localhost:8080/MyProjectName/servlet123">Go to servlet</a>
,它工作。
【问题讨论】:
如果需要记得对值进行编码 【参考方案1】:如果你想使用 URL 向 servlet 发送参数,你应该这样做
<a href="goToServlet?param1=value1¶m2=value2">Go to servlet</a>
然后检索将在请求中可用的值。
关于你的第二个问题。我会说不。您可以在 URL 中添加一个参数,例如
<a href="goToServlet?method=methodName¶m1=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¶m2=value2”这样的 URL,servlet 中的哪个方法会被调用? doGet ? 你应该使用 doGet。看看这个答案:***.com/a/2349741/980472 然后使用 request.getParameter("method") 获取值“methodName”。您应该对任何参数值进行 url 编码,请参阅URL Encoding。如果在 Java 中,您可以使用内置的 URLEncoder 类。 @mrswadge 我知道编码。我不知道如何在 URL 中调用 servlet。 @jddsantaella 我做到了,但链接无效,我再次编辑了帖子。【参考方案2】:<a href="url">urltitle</a>
允许您定义一个 url。从这里调用 servlet 与从浏览器调用一样好,只需提供您在浏览器中提供的 url 即可调用 servlet,如 http://mysite.com?param1=val1¶m2=val2 等。
【讨论】:
现在如何在第二个 servlet 中检索 param1 和 param2 的值?以上是关于使用 <a href> 将值从 jsp 传递到 servlet的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 <c:set> 将值从 <security:authentication/> 设置为参数