сервлет не вызывает при вызове метода from - PullRequest
1 голос
/ 06 апреля 2010

Мой web.xml похож на

    <web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>sample</display-name>
    <servlet>
        <servlet-name>Sampleclass</servlet-name>
        <servlet-class>sample.SampleClass</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Sampleclass</servlet-name>
        <url-pattern>/SampleClass</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>/page/form.jsp</welcome-file>
    </welcome-file-list>
</web-app>

и form.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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>A simple web application</h1>
        <form method="POST" name="Sampleclass" action="SampleClass">
            <label for="name">Enter your name </label>
            <input type="text" id="name" name="name"/><br><br>
            <input type="submit" value="Submit Form"/>
            <input type="reset" value="Reset Form"/>
        </form>
</body>
</html>

и SampleClass.java -

public class SampleClass extends HttpServlet {
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
                throws ServletException, IOException {
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        PrintWriter out = response.getWriter();
        out.write("<html>Hello Your name is "+name +", and your age is "+age+"</html>");
    }
    public void destroy() {

    }


}

, но я получаю сообщение об ошибке при вводе кнопки отправки формы. и ошибка

type Status report

message HTTP method POST is not supported by this URL

description The specified HTTP method is not allowed for the requested resource (HTTP method POST is not supported by this URL).

Я не понимаю, в чем именно проблема? Пожалуйста, помогите ..

Ответы [ 2 ]

3 голосов
/ 06 апреля 2010

Ваши web.xml и <form> все в порядке. Сервлет должен быть отображен на /servleturl, а действие формы должно указывать на servleturl.

Сообщение об ошибке также доказывает, что сервлет отлично найден:

message HTTP method POST is not supported by this URL

В противном случае вы получили бы 404 Page Not Found (сервлет не найден) или, что еще хуже, 500 Internal Server Error (сервлет не удалось выполнить).

Ошибка, которую вы получили, в основном означает, что метода doPost() нет. Тем не менее, ваш пример кода содержит его. Это может иметь только одну причину: вы не используете версию класса сервлетов, которую, как вы думаете, вы используете. В развернутом в настоящее время методе doPost() нет. Очистите все, перекомпилируйте / пересоберите все, заново разверните веб-приложение, перезапустите сервер и попробуйте снова.

1 голос
/ 06 апреля 2010

Я думаю, что проблема в том, что вы используете относительный URL для действия формы. Поскольку путь jsp - это page / form.jsp, вы вызываете / page / SampleClass вместо /SampleClass.

.

Использование:

<form method="POST" name="Sampleclass" action="/SampleClass">
...