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;
ajax调用的java的方法,实际上是访问服务,不是所有java类的方法都能够使用,最简单的方法是ajax调用servlet.而我看你的描述明显不是这么想的。综上所述,你的想法是不成立的,应该把这个方法封装到servlet中或action中暴露成服务才能用ajax调用。。
ajax调用的java的方法,实际上是访问服务,不是所有java类的方法都能够使用,最简单的方法是ajax调用servlet或者struts的action。
servlet中或action中暴露成服务才能被ajax调用到。servlet就是doPost、doGet方法,action中就是有返回值的那些方法。传过来的参数需要通过request.getParameter来获取,然后调用相应防反再产生返回值。
直接用json格式传入