如何将其指向正确的位置?

问题描述 投票:0回答:1

我对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,我得到了我正在使用的TOMCAT服务器,以满足GET和POST请求的预期行为。但是,问题出现在我创建的以下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文件的形式提交内容后,我没有看到任何地方。无论如何,我完全糊涂了。正确方向的一点将非常感激。如果需要任何其他信息,请告诉我。

java html xml http servlets
1个回答
0
投票

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

另外,如果sevlet的url模式设置为/myservlet,那么表单的动作也需要是/myservlet来命中你的servlet方法。

© www.soinside.com 2019 - 2024. All rights reserved.