javascript - 如何使用 ajax 在同一个 servlet 中实现 doPost() 和 doGet() 请求?
问题描述
我正在做一个关于 jsp servlet 的小项目。我想要一个示例来使用相同的 servlet 实现 doGet() 和 doPost() 方法,并通过 jsp 页面中的表单中的 ajax 调用发送和发布。
还要说明为什么不建议在同一个 servlet 中使用 doGet() 和 doPost()。如何使用两个不同的 servlet 实现相同的功能,但在同一个 jsp 页面中工作。
在此先感谢任何帮助将是有益的。
我的jsp代码:-
<form action="/mamababu.do" method="POST">
<select name="command_no">
<c:forEach var="items" items="${scriptItems}">
<option value="${items.command}" name="command">${items.command}</option>
</c:forEach>
</select>
<input type="submit" value="submit"></input>
</form>
我的 servlet 类:-
package com.project.mamabhagne;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
@WebServlet("/mamababu.do")
public class mamababu extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//get the data from database ie the model class
try {
List<Script> scriptitems=modelDBUtil.getScriptList();
// String json = new Gson().toJson(scriptitems);
request.setAttribute("scriptItems", scriptitems);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*String itemsfood[]={"biriyani","rice"};
request.setAttribute("itemsfood",itemsfood)*/;
//redirect to a different page
RequestDispatcher dispatcher =request.getRequestDispatcher("scriptviewer.jsp");
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//TODO Auto-generated method stub
System.out.println("hi");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>Hello World!</TITLE>"+
"</HEAD><BODY>Hello World!</BODY></HTML>");
out.close();
RequestDispatcher dispatcher =request.getRequestDispatcher("scriptviewer.jsp");
dispatcher.forward(request, response);
}
}
发布表单数据时出现此错误:-
HTTP Status 404 - /mamababu.do
type Status report
message /mamababu.do
description The requested resource is not available.
Apache Tomcat/8.0.52
解决方案
我不清楚您的问题,顺便说一句,据我所知,您需要一个 servlet 并响应 GET 和 POST 请求(通过 AJAX)。
@WebServlet(name = "MyServelet", urlPatterns = {"/myservletForm"})
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.getWriter().println("Hello This is GET Response.");
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException{
response.getWriter().println("Hello This is POST Response.");
}
}
如上所述,当您发送“get”请求时转到 doGet,而“post”请求转到 doPost。您可以通过声明特定的 ajax 请求类型来选择是否需要调用 GET 或 POST。
推荐阅读
- android - Google Speech to Text 不返回结果
- css - 材料 11 - 应用 mat-sort-header 时无法右对齐 5 列中的 2 列 mat-header-cell
- q# - Q# Create new project...' 导致错误
- sql - 特定时间的 SQL 移动平均线
- imagemagick - 如何按顺序循环浏览一个文件夹中的图像并与另一个文件夹中的最新图像进行比较
- reactjs - 使用 Material-UI 滑块测试 Formik 表单
- python - 插入多个值 - sqlite3.InterfaceError: Error binding parameter 0 - 可能不支持的类型
- python - 确保 tkinter 按钮仅按特定顺序工作
- javascript - React - 有没有办法在不弄乱组件的情况下获得价值?
- javascript - 在 JavaScript 中从 Class Array 启动随机类