通过 Ajax 处理请求的 Servlet 流

Posted

技术标签:

【中文标题】通过 Ajax 处理请求的 Servlet 流【英文标题】:Servlet Flow on a Request via Ajax 【发布时间】:2011-04-26 20:52:57 【问题描述】:
Ext.Ajax.request(url:'DeleteAction',success: doneFunction,failure: errorFunction,params:name:rname);

上面的代码是我发送给 DeleteAction Servelet 的 Ajax 请求。谁能告诉我下面的代码接下来会发生什么。

    调用此文件时,首先调用的是什么。 doGet 和 doPost 方法有什么作用? 如何识别这里面的doProcess方法? 是否一定要有构造函数。

    如何将响应发送回 Ajax。

    public class DeleteAction extends HttpServlet implements Servlet 
    
    
    public DeleteAction() 
        super();
    
    
    
    protected void process(HttpServletRequest request, HttpServletResponse response) 
    
    
    
    try 
        ServletOutputStream sos = response.getOutputStream();
        response.setHeader("Cache-Control", "no-store");
        response.setHeader("Pragma", "no-cache");
        response.setContentType("text/plain");
    
    
        String name = request.getParameter("name");
    
    
        System.out.println("Name: " + name);
    
    
        String query = "DELETE from CRUD_DATA where name='" + name + "'";
        System.out.println("Query:" + query);
    
    
        OracleDataSource ods = new OracleDataSource();
        ods.setUser("abdel");
        ods.setPassword("password");
        ods.setURL("jdbc:oracle:thin:@//127.0.0.1/XE");
    
    
        Connection conn = ods.getConnection();
        Statement statement = conn.createStatement();
    
    
        statement.executeUpdate(query);
        conn.commit();
        conn.close();
    
    
        sos.print("success:true");
        sos.close();
     catch (IOException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
     catch (SQLException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException process(request, response); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException process(request, response);

【问题讨论】:

【参考方案1】:

1.调用此文件时,首先调用的是什么。 松散地说,service() 方法,假设 servlet 已经加载。否则,init() 方法。

2。 doGet 和 doPost 方法有什么作用? 它们可以通过service() 方法调用。 service() 方法检查request-methodPOSTGETPUT 或....,然后调用各自的方法。查看docs。

3.它如何识别其中的doProcess方法? 你自己在doGet()doPost() 中调用了它。

4.是不是一定要有构造函数。 不,Servlet 容器为我们实例化了 servlet。如果我们打算在创建时初始化一些东西,我们可以在init() 方法中做到这一点。这仅仅是为了类似的目的。所以,我们可以覆盖那个。

5.响应是如何发送回 Ajax 的。 它是一个JSON 字符串。

【讨论】:

以上是关于通过 Ajax 处理请求的 Servlet 流的主要内容,如果未能解决你的问题,请参考以下文章

servlet在处理form请求和ajax请求有何区别?

Servlet里面request处理外部POST请求的输入流的工具类

Servlet笔记

我无法捕获通过 ajax 请求发送到 servlet 的数据 [重复]

Java Servlet:服务器小程序

Servlet