我有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-&gt; control。中的servlet123
。
我尝试<a href="servlet123">Go to servlet</a>
但是当我按下链接时找不到servlet。
第二次编辑:
我尝试<a href="http://localhost:8080/MyProjectName/servlet123">Go to servlet</a>
并且它有效。
答案 0 :(得分:6)
如果要使用URL将参数发送到servlet,则应以这种方式执行
<a href="goToServlet?param1=value1¶m2=value2">Go to servlet</a>
他们检索请求中可用的值。
关于你的第二个问题。我会说不。您可以在ulr中添加一个参数,例如
<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你的应用程序上下文)。
答案 1 :(得分:1)
<a href="url">urltitle</a>
允许您定义网址。从这里调用servlet与从浏览器调用它一样好,只需像在浏览器中那样给出url来调用servlet,如http://mysite.com?param1=val1¶m2=val2等。