package web.filter;
import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;
public class CommentServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
public CommentServlet(){System.out.println("CommentServlet,constractor...");}public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//super.service(request, response);-----> 这句话一定要屏蔽.System.out.println("CommentServlet,service begin...");
request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();
String content = request.getParameter("content");
out.print("<h1>你的评论是"+content+"</h1>");System.out.println("CommentServlet,service end...");}public void destroy() {super.destroy();System.out.println("CommentServlet,destroy...");}public void init() throws ServletException {super.init();System.out.println("CommentServlet,init...");}}
访问时,一直报错:
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).
经过上网查询,原因如下:
1,继承自HttpServlet的Servlet没有重写对于请求和响应的处理方法:service方法;默认调用父类的service方法;
2,父类HttpServlet的service方法覆盖了你重写的service方法;
父类HttpServlet的service方法默认实现是返回状态代码为405的HTTP错误表示
对于指定资源的请求方法不被允许。
解决方法:
1,子类重写service等方法;
2,在你扩展的Servlert中重写service方法来处理请求和响应时 不要调用父类HttpServlet的
service方法,即去掉super.service(request, response);