Java 405此url不支持http方法get

Java 405此url不支持http方法get,java,servlets,jakarta-ee,Java,Servlets,Jakarta Ee,我已经编写了一个用于批准叶子的servlet。在这个servlet中,我还编写了发送邮件的代码。因此,它显示HTTP 405错误。如果我删除了发送邮件的代码,那么它不会显示错误,但我需要邮件代码 package mis; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; i

我已经编写了一个用于批准叶子的servlet。在这个servlet中,我还编写了发送邮件的代码。因此,它显示HTTP 405错误。如果我删除了发送邮件的代码,那么它不会显示错误,但我需要邮件代码

package mis;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.jdo.PersistenceManager;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import javax.jdo.Query;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class approve extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws IOException {

        try{



             HttpSession session = req.getSession(true);        

            PersistenceManager pm1 = PMF.get().getPersistenceManager();
         Query query1 = pm1.newQuery(Leave_bal.class);
         query1.setFilter("emp_Id == emp");
         query1.declareParameters("String emp");
         List<Leave_bal> results1 = (List<Leave_bal>)query1.execute(session.getAttribute("emp_Id").toString());

         String plan="";
         String unplan="";

         String planleave_result="" ;
         String unplanleave_result="";


         for (Leave_bal e : results1) 
         {
          plan=e.getplan_leave();
          resp.getWriter().println("Planned_Leave"+plan);

          unplan=e.getunplan_leave();
          resp.getWriter().println("Unplanned:"+unplan);
         }

        int plan_leave=Integer.parseInt(plan);
         int unplan_leave=Integer.parseInt(unplan);


       String ID=req.getParameter("id");
        resp.getWriter().println(ID);
        PersistenceManager pm = PMF.get().getPersistenceManager();
        Query query = pm.newQuery(Leave_detail.class);
     query.setFilter("id == ID");
     query.declareParameters("String ID");       
     List<Leave_detail> results = (List<Leave_detail>)query.execute(ID);

     String plan_detail="";


     String duration="";
     for (Leave_detail e : results) 
     {
     plan_detail=e.getLeave_Type();
     duration=e.getdurtn();
     //f=e.getfrom();
    //t=e.getto();
     }

     resp.getWriter().println("duration "+duration);
     resp.getWriter().println("Planned_selected "+plan_detail);


         int duration_integer=Integer.parseInt(duration);
         resp.getWriter().println("duration "+duration_integer);


        //String duration=req.getParameter("date");
       // resp.getWriter().println("diffrence:"+duration);
        //int workingdays=Integer.parseInt(duration);                                            

        //String Leave = req.getParameter("a"); 
       // resp.getWriter().println("planned:"+Leave);

        if(plan_detail.equals("UNPLAN"))
        {                           
            unplan_leave=unplan_leave-duration_integer;
            unplanleave_result=String.valueOf(unplan_leave);
            planleave_result=plan;
        resp.getWriter().println("Planned After Change"+unplanleave_result);
            //st="Applied";

        }
        if(plan_detail.equals("PLAN"))
        {
            plan_leave= plan_leave-duration_integer;
            planleave_result=String.valueOf(plan_leave);
         resp.getWriter().println("Planned After Change"+planleave_result);
             unplanleave_result=unplan;

        }

        if(plan_detail.equals("LWP"))
        {
            plan_leave= plan_leave-duration_integer;
            planleave_result=String.valueOf(plan_leave);
             resp.getWriter().println("Planned After Change"+planleave_result);
             unplanleave_result=unplan;

        }

        if(plan_detail.equals("Onduty"))
        {
            planleave_result=plan;
             unplanleave_result=unplan;

        }




        Leave_detail status_update = pm.getObjectById(Leave_detail.class,ID);
        status_update.setstatus("Approved");
        pm.makePersistent(status_update); 

         Leave_bal ed1=new Leave_bal(session.getAttribute("emp_Id").toString(),planleave_result,unplanleave_result);

         pm.makePersistent(ed1);



//code for mail

        RequestDispatcher dispatcher = getServletConfig ( ) .getServletContext ().getRequestDispatcher("/MailServiceapply");         
         dispatcher.forward (req, resp) ;   

    pm.close();
    }
          catch(Exception a )
            {
                 resp.getWriter().println(a .getMessage());
            } finally{

            }
            resp.sendRedirect("hr.jsp#LMS");        
        }
}
packagemis;
导入java.io.IOException;
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入java.util.List;
导入java.util.Properties;
导入javax.jdo.PersistenceManager;
导入javax.mail.Message;
导入javax.mail.Session;
导入javax.mail.Transport;
导入javax.mail.internet.InternetAddress;
导入javax.mail.internet.mimessage;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入javax.servlet.http.HttpSession;
导入javax.jdo.Query;
导入com.google.appengine.api.users.UserService;
导入com.google.appengine.api.users.UserServiceFactory;
公共类批准扩展HttpServlet{
私有静态最终长serialVersionUID=1L;
公共无效数据集(HttpServletRequest请求、HttpServletResponse响应)
抛出IOException{
试一试{
HttpSession session=req.getSession(true);
PersistenceManager pm1=PMF.get().getPersistenceManager();
查询query1=pm1.newQuery(Leave_bal.class);
query1.setFilter(“emp_Id==emp”);
问题1.申报参数(“字符串emp”);
List results1=(List)query1.execute(session.getAttribute(“emp_Id”).toString());
字符串计划=”;
字符串unplan=“”;
字符串planleef_result=“”;
字符串unplave_result=“”;
对于(离开平衡:结果1)
{
计划=e.获取计划离开();
分别为getWriter()println(“计划休假”+计划);
unplan=e.getunplan_leave();
resp.getWriter().println(“未计划:+unplan”);
}
int plan_leave=Integer.parseInt(plan);
int unplan_leave=Integer.parseInt(unplan);
字符串ID=req.getParameter(“ID”);
resp.getWriter().println(ID);
PersistenceManager pm=PMF.get().getPersistenceManager();
Query Query=pm.newQuery(Leave\u detail.class);
setFilter(“id==id”);
查询.申报参数(“字符串ID”);
List results=(List)query.execute(ID);
字符串plan_detail=“”;
字符串持续时间=”;
对于(留下详细信息e:结果)
{
计划详情=e.getLeave类型();
持续时间=e.getdurtn();
//f=e.getfrom();
//t=e.getto();
}
resp.getWriter().println(“持续时间”+持续时间);
resp.getWriter().println(“已选择计划”+计划详情);
int duration_integer=integer.parseInt(duration);
resp.getWriter().println(“持续时间”+持续时间\u整数);
//字符串持续时间=req.getParameter(“日期”);
//resp.getWriter()println(“差异:+持续时间);
//int workingdays=Integer.parseInt(持续时间);
//字符串Leave=req.getParameter(“a”);
//resp.getWriter().println(“计划:+离开”);
if(计划详情等于(“计划外”))
{                           
计划外休假=计划外休假-持续时间整数;
unplan\u result=String.valueOf(unplan\u leave);
planleave_结果=计划;
resp.getWriter().println(“变更后计划”+计划外结果);
//st=“已应用”;
}
如果(计划详情等于(“计划”))
{
计划休假=计划休假-持续时间整数;
计划休假结果=String.valueOf(计划休假);
resp.getWriter().println(“变更后计划”+计划休假结果);
unplave_result=计划外;
}
if(平面详图等于(“LWP”))
{
计划休假=计划休假-持续时间整数;
计划休假结果=String.valueOf(计划休假);
resp.getWriter().println(“变更后计划”+计划休假结果);
unplave_result=计划外;
}
if(平面图详图等于(“Onduty”))
{
planleave_结果=计划;
unplave_result=计划外;
}
Leave_detail status_update=pm.getObjectById(Leave_detail.class,ID);
状态更新设置状态(“批准”);
pm.makePersistent(状态更新);
Leave_bal ed1=新的Leave_bal(session.getAttribute(“emp_Id”).toString(),planleave_结果,unpanleave_结果);
pm.makePersistent(ed1);
//邮政编码
RequestDispatcher dispatcher=getServletConfig().getServletContext().getRequestDispatcher(“/MailServiceapply”);
dispatcher.forward(请求、响应);
pm.close();
}
捕获(例外a)
{
resp.getWriter().println(a.getMessage());
}最后{
}
分别发送重定向(“hr.jsp#LMS”);
}
}
在Java论坛上提供了一些关于此错误的提示,如

  • HTML表单调用POST操作,servlet不实现
    doPost
    ()
  • 初始HTML表单未在
    web.xml
    文件中声明(或拼写错误)()

在此servlet底部,您将请求转发到另一个servlet:

RequestDispatcher dispatcher = getServletConfig().getServletContext().getRequestDispatcher("/MailServiceapply");
dispatcher.forward(req, resp);
这不仅是一种糟糕的方法,当然是因为您以前在servlet中已将数据写入HTTP响应,因此可能会出现
IllegalStateException
(写入响应应在JSP中进行),但这样做还要求所讨论的servlet还实现
doGet()
。您面临的错误表明此邮件服务servlet仅实现了
doPost()

您需要向邮件服务servlet添加
doGet()
方法,并使用
RequestDispatcher\include()
调用它

dispatcher.include(req, resp);
不用说,这仍然是一个糟糕的方法。您更愿意重构m