ajax调用java后台的一个方法

2025-01-05 14:47:23
推荐回答(4个)
回答(1):

   ajax调用java后台的方法,其实是通过url链接来访问,示例如下:

package com.xxxx.xxxx.servlet;  
  
import java.io.IOException;  
import java.sql.Connection;  
import java.sql.PreparedStatement;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
  
import javax.naming.Context;  
import javax.naming.InitialContext;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.sql.DataSource;  
  
public class oaLoginLimitedServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  
    private static Connection conn=null;  
    private static PreparedStatement pstmt=null;  
      
      public oaLoginLimitedServlet() {  
            super();  
        }  
  
      public void destroy() {  
            super.destroy();   
        }  
      
      
    public static String getCount(String userid)   
    {  
        String v_sql=".....";  
        String v_count="";  
          
        try {  
            pstmt = conn.prepareStatement(v_sql);  
            pstmt.setString(1, userid);  
            ResultSet rs = pstmt.executeQuery();  
            while(rs.next()){  
                v_count = rs.getString(1);  
            }  
        } catch (SQLException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }finally{  
            try {  
                pstmt.close();  
                conn.close();  
            } catch (SQLException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
        return v_count;  
    }  
      
     public static Connection getConnection(){        
            Context ctx = null;      
            try {      
                ctx = new InitialContext();      
                DataSource ds = (DataSource)ctx.lookup("jndiname");      
                conn = ds.getConnection();      
            } catch (Exception e) {      
                e.printStackTrace();      
            }                
            return conn;                  
        }     
       
        public void doPost(HttpServletRequest request, HttpServletResponse response)  
                throws ServletException, IOException {  
            String v_userid=request.getParameter("userid");  
            System.out.println(v_userid);  
            getConnection();  
            String v_count=getCount(v_userid);  
            response.setCharacterEncoding("UTF-8");   
            response.getWriter().write(v_count);      
          response.flushBuffer();  
        }  
          
        public void doGet(HttpServletRequest request, HttpServletResponse response)  
                throws ServletException, IOException {  
            doPost(request,response);  
        }  
  
  
}  

如果要前端能够访问到该servlet,需要将该servlet注册到 web.xml文件中。需要在web.xml文件中添加以下内容
[html] view plaincopy
  
    oaLoginLimitedServlet  
    com.xxxx.xxxx.servlet.oaLoginLimitedServlet  
  
  
    oaLoginLimitedServlet  
    /oaLoginLimitedServlet  
  

重启相关服务。
通过ajax就可以调用了。

[html] view plaincopy
 var msg = $.ajax({  
     type: "post",  
     url: ....+'/oaLoginLimitedServlet?userid='+ $('#act').val(),  
     async:false  
 }).responseText;

回答(2):

ajax调用的java的方法,实际上是访问服务,不是所有java类的方法都能够使用,最简单的方法是ajax调用servlet.而我看你的描述明显不是这么想的。综上所述,你的想法是不成立的,应该把这个方法封装到servlet中或action中暴露成服务才能用ajax调用。。

回答(3):

ajax调用的java的方法,实际上是访问服务,不是所有java类的方法都能够使用,最简单的方法是ajax调用servlet或者struts的action。

servlet中或action中暴露成服务才能被ajax调用到。servlet就是doPost、doGet方法,action中就是有返回值的那些方法。传过来的参数需要通过request.getParameter来获取,然后调用相应防反再产生返回值。

回答(4):

直接用json格式传入