ajax调用java后台的一个方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax调用java后台的一个方法相关的知识,希望对你有一定的参考价值。
想问一下那个url参数怎么传啊 xmlHttp.open("GET",url,true);假如我的java类名是aa.java,方法名是bb
那么这个url怎么写
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
<servlet>
<servlet-name>oaLoginLimitedServlet</servlet-name>
<servlet-class>com.xxxx.xxxx.servlet.oaLoginLimitedServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>oaLoginLimitedServlet</servlet-name>
<url-pattern>/oaLoginLimitedServlet</url-pattern>
</servlet-mapping>
重启相关服务。
通过ajax就可以调用了。
[html] view plaincopy
var msg = $.ajax(
type: "post",
url: ....+\'/oaLoginLimitedServlet?userid=\'+ $(\'#act\').val(),
async:false
).responseText; 参考技术A ajax调用的java的方法,实际上是访问服务,不是所有java类的方法都能够使用,最简单的方法是ajax调用servlet.而我看你的描述明显不是这么想的。综上所述,你的想法是不成立的,应该把这个方法封装到servlet中或action中暴露成服务才能用ajax调用。。 参考技术B ajax调用的java的方法,实际上是访问服务,不是所有java类的方法都能够使用,最简单的方法是ajax调用servlet或者struts的action。
servlet中或action中暴露成服务才能被ajax调用到。servlet就是doPost、doGet方法,action中就是有返回值的那些方法。传过来的参数需要通过request.getParameter来获取,然后调用相应防反再产生返回值。追问
function aa() xmlHttp = new XMLHttpRequest();url='/ddservlet?kk=1'; xmlHttp.open("GET",url,true); xmlHttp.onreadystatechange=nn; xmlHttp.send(null);
那你的意思是这样
没错,你这样调用的就是servlet,这样你把ddservlet的doPost、doGet方法完善一下就行了。
本回答被提问者和网友采纳 参考技术C 直接用json格式传入追问我是问路径怎么写 不是参数怎么传
比如说是不是 base/aa/bb?+参数
这种形式
你试试,应该可以
Jquery ajax调用后台aspx后台文件方法(不是ashx)
在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下。
(1)通过aspx.cs的静态方法+WebMethod进行处理
简单的介绍下WebMethod方法的用法
1.修饰符主要用public static修饰
2.方法前面加上[WebMethod]属性表明这是WebMethod方法
3.前台html页面(Client端)访问时要使用post方法,和后台.cs文件进行数据交互,否则会返回整个html页面。
4.当后台页面返回数据后,前台html页面需要用data.d接收返回的json字符串。
5.访问url:http://abc.com/abc.aspx/ajax方法
aspx.cs代码:
using System.Web.Services; [WebMethod] public static string SayHello() { return "Hello Ajax!"; }
前台jquery代码:
$(function() { $("#btn").click(function() { $.ajax({ type: "post", //要用post方式 url: "Demo.aspx/SayHello",//方法所在页面和方法名 contentType: "application/json; charset=utf-8", dataType: "json", success: function(data) { alert(data.d);//返回的数据用data.d获取内容 }, error: function(err) { alert(err); } }); }); });
html代码:
<form id="form1" runat="server">
<div>
<asp:Button ID="btn" runat="server" Text="验证用户" />
</div>
</form>
(2)通过一般处理程序ashx进行处理;
Jquery代码:
$.ajax({ type: "POST", url: "S_CBFBM.ashx", data: { ZBM: p_zdm }, beforeSend: function() { //$("#div_load").visible = "true; }, success: function(msg) { //$("#div_load").visible = false; $("#ds").html("<p>" + msg + "</p>"); $("#CBFBM").val(msg); } });
ashx.cs代码:
<%@ WebHandler Language="C#" Class="AjaxHandler" %> using System; using System.Web; public class AjaxHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; if (context.Request["name"].ToString() == "admin" && context.Request["pass"].ToString() == "admin") { context.Response.Write("Y"); } else { context.Response.Write("N"); } } public bool IsReusable { get { return false; } } }
以上是关于ajax调用java后台的一个方法的主要内容,如果未能解决你的问题,请参考以下文章
现在通过前台一个按钮用ajax 调用后台的java timer 类 执行一个 定时任务,每10秒执