如何将其定向到正确的位置?

时间:2019-02-16 22:26:30

标签: java html xml http servlets

我一般对HTTP和编码还是比较陌生的,因此遇到了以下问题。对于在问这个问题时遇到的任何错误,我深表歉意。但是,我感谢您的反馈。

我的老师(我们叫他)在Eclipse中创建了一个Maven项目,以演示servlet的行为。在src / main / java中,我有以下课程。

public class MyServlet extends HttpServlet {

@Override
public void init() {
    System.out.println("My servlet initializing");
}

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws 
ServletException, IOException {
    System.out.println("Request received");
    super.service(request, response);
}

@Override
protected void doPost(HttpServletRequest request, 
HttpServletResponse response) throws IOException, ServletException {
    System.out.println("Post received");

    String parameter = request.getParameter("name");
    System.out.println(parameter);

    System.out.println(request.getReader().readLine());

    // We call our service
    response.getWriter().write("Hi there!");
    response.getWriter().write("Hi there again!");
    response.sendRedirect("http://google.com");
}

@Override
protected void doGet(HttpServletRequest request, 
HttpServletResponse response) throws IOException, ServletException {
    System.out.println("Get received");
}

在与此项目相对应的web.xml文件中,我将servlet名称设置为myservlet。然后将url模式设置为/myservlet。现在,我一直在尝试尝试理解HTTP的工作方式。使用Postman,我已经获得了用来响应GET和POST请求的TOMCAT服务器。但是,此问题出现在我创建的以下html文档中,名为form.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<form method="post" action="./details">
    <input name="name" type="text" placeholder="enter your name">
    <input type="submit">
</form>

</body>
</html>

当我在Firefox中打开它时,表单加载正常。我随机输入内容并提交查询。由于据我所知这是一个POST请求,因此我认为action="./details"位将引用我在上面定义的servlet,尤其是doPost()方法,该方法应将我重定向到Google。但是,这给我一个错误,说“ Firefox无法在...src/main/webapp/details上找到文件”。有什么问题吗?

此外,在上述doPost()方法中,response.getWriter().write(...)调用会发生什么?我以form.html文件的形式提交内容后,在任何地方都看不到这些内容。无论如何,我完全感到困惑。朝着正确方向的观点将不胜感激。如果需要任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

在您的示例中,./details被解释为相对于您保存form.html文档的位置。当您说您在Firefox中打开它时,我假设您的意思是您从本地文件夹中打开了HTML文件。您需要通过Tomcat导航到表单。如果表单保存在src/main/webapp/form.html中,那么很可能会在http://localhost:8080/form.html

中看到该表单

另外,如果sevlet的url模式设置为/myservlet,则表单的操作也需要设为/myservlet才能访问servlet方法。