如果我们写下如下内容:
<a href="MyServlet">Link</a>
它将调用该servlet的GET方法。我可以点击a
标签发送帖子请求吗?有可能吗?
我知道如何使用Javascript执行此操作,但想知道是否可以在没有JavaScript的情况下完成此操作。
答案 0 :(得分:26)
解决方案是以一种形式包围锚点,该形式具有post方法和您希望执行的操作。在锚点上放一个javascript来提交表单
<form name="submitForm" method="POST" action="/servlet/ServletName">
<input type="hidden" name="param1" value="param1Value">
<A HREF="javascript:document.submitForm.submit()">Click Me</A>
</form>
修改强>
我想我应该提到这不是一个好主意。
链接会将您带到页面,这是用户理解他们要做的事情。要打破用户的假设并导致POST的链接,做一个不可挽回的事情,通常被认为是一个坏主意。
使用按钮,在语义上标记,然后您的用户知道点击此会做某事。
第二次修改
我真的需要强调,这根本不是一个好主意。
打破互联网。
答案 1 :(得分:0)
仅限javascript:创建<form action="MyServlet">
并使用form.submit()
您也可以使用ajax发送POST
(使用jQuery:$.post("MyServlet", {param:param})
)
但想想语义。使用POST
,您应发布数据。链接通常只是获取资源。 (如果你的链接实际上是一个伪装的按钮,这是另一个故事)
答案 2 :(得分:0)
Login.jsp页面的代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Page</title>
</head>
<body>
<form action="LoginServlet" method="post" name="credential">
Please enter userName :
<input type="text" name="un"><br>
Please enter PassWord :
<input type="text" name="pw"><br>
<input type="submit" value="Submit">
</form>
<form action="registerUser" name="registerUserForm" method="post">
If no user name and password then get a new one by <a href="registerUser">clicking</a> here
</form>
</body>
</html>
code for registerUser servlet::
package examplePackage;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/registerUser")
public class registerUser extends HttpServlet {
private static final long serialVersionUID = 1L;
public registerUser() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("registerUser");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}