Java 405此url不支持http方法get
我已经编写了一个用于批准叶子的servlet。在这个servlet中,我还编写了发送邮件的代码。因此,它显示HTTP 405错误。如果我删除了发送邮件的代码,那么它不会显示错误,但我需要邮件代码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
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
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