天天看點

J2EE中HTTP method GET/Post is not supported by this URL

原因:

1,繼承自httpservlet的servlet沒有重寫對于請求和響應的處理方法:doget或dopost等方法;預設調用父類的doget或dopost等方法;

2,父類httpservlet的doget或dopost等方法覆寫了你重寫的doget或dopost等方法;

不管是1或2,父類httpservlet的doget或dopost等方法的預設實作是傳回狀态代碼為405的http錯誤表示對于指定資源的請求方法不被允許。

解決方法:

1,子類重寫doget或dopost等方法;

2,在你擴充的servlert中重寫doget或dopost等方法來處理請求和響應時不要調用父類httpservlet的doget或dopost等方法,即去掉super.doget(request, response)和super.dopost(request, response);

值得注意的是

轉發到另一個action并不會改變轉發方式,也就是說,我在這個action裡面的dopost方法轉發給另一個action,另一個action必須在它的dopost方法裡面接收

package com.xy.action;

import java.io.ioexception;

import java.text.simpledateformat;

import javax.servlet.requestdispatcher;

import javax.servlet.servletexception;

import javax.servlet.http.httpservlet;

import javax.servlet.http.httpservletrequest;

import javax.servlet.http.httpservletresponse;

import com.xy.dao.itopicdao;

import com.xy.dao.impl.topicdaoimpl;

import com.xy.entity.topic;

public class postaction extends httpservlet

{

 protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception

 {

  itopicdao itd = new topicdaoimpl();

  string title = request.getparameter("title");

  string content = request.getparameter("content");

  string pt = new simpledateformat("yyyy-mm-dd hh:mm:ss").format(new java.util.date());

  string mt = new simpledateformat("yyyy-mm-dd hh:mm:ss").format(new java.util.date());

  int bid = integer.valueof(request.getparameter("boardid"));

  int uid = integer.valueof(request.getparameter("uid"));

  topic t = new topic();

  t.settitle(title);

  t.setboardid(bid);

  t.setcontent(content);

  t.setpublishtime(pt);

  t.setmodifytime(mt);

  t.setuid(uid);

  itd.addtopic(t);

  requestdispatcher dis = request.getrequestdispatcher("tolistaction");

  dis.forward(request, response);

 }

}

也就是說:相應在tolistaction這個action裡面,必須重寫dopost方法。

繼續閱讀