‘壹’ ajax和java的结合使用:看了很多例子都是前台通过ajax发送请求,后台处理后返回的都是一个字符串变量
$.post("/myAjax/LoginServlet",{status:"checkCype",ctype:ctype},function(data) {
//循环数组
$(data.rows).each(function (i, n) {
//i是数组的下标,n是数组元素
}
‘贰’ 如何在java端写ajax
因为要获取xmlHttpRequest对象,只存在于浏览器容器,ajax只能写在jsp或者jsp引用的js里面。
不想把ajax请求的url暴露给客户端,就把ajax过程写在js文件里,然后用jsp调用。
‘叁’ java怎么处理ajax
ajax是一种用来改善用户体验的技术,其实质是利用浏览器内置的一个特殊的对象
(XMLHttpRequest对象,一般称之为ajax对象)异步地(当ajax对象发请求时,浏览
器不会销毁当前页面,用户任然可以对当前页面做其他操作)向服务器发送请求,
服务器送回部分数据(并不是一个完整的页面),利用这些数据更新当前页面。整
个过程,页面无刷新,不打断用户的操作
编程步骤:
step1,获得ajax对象
比如:
var xhr=getXhr();
step2,发请求:
方式一:get请求
xhr.open('get','check_username.do?username=zs',true);
请求参数、请求资源路径、是否异步
注意:
a,get请求必须将请求参数添加到请求资源路径的后面。
b,true表示异步请求、false表示同步请求。
异步请求:发请求时,浏览器不会销毁当前页面,用户可以对当前页面做
其他操作。
同步请求:发送请求时,浏览器不会销毁当前页面,用户不可以对当前页面
做其他操作。
xhr.onreadystatechange=f1;
xhr.send(null);
方式二:post请求
xhr.open('post','','')
step3,编写服务器端的处理程序,一般服务器只需要返回部分的数据。
step4,编写事件处理函数。
function f1(){
if(xhr.readyState==4){
var txt=xhr.responseText;
使用txt更新当前页面...
}
}
java服务器端处理ajax发送的请求,和处理其他请求是一样的,只是在客户端页面表现的不同,比如:执行页面发送删除请求,服务器端在执行删除后,页面是需要刷新的。
ajax最经典的用法是验证码,注册页面如果因为验证码输入错误要刷新,之前的信息重填,估计用户会崩溃,采用ajax异步发送请求,就不会影响之前填写的信息
‘肆’ ajax调用java后台的一个方法
ajax调用java后台的方法,其实是通过url链接来访问,示例如下:
packagecom.xxxx.xxxx.servlet;
importjava.io.IOException;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.sql.DataSource;
{
=1L;
privatestaticConnectionconn=null;
=null;
publicoaLoginLimitedServlet(){
super();
}
publicvoiddestroy(){
super.destroy();
}
publicstaticStringgetCount(Stringuserid)
{
Stringv_sql=".....";
Stringv_count="";
try{
pstmt=conn.prepareStatement(v_sql);
pstmt.setString(1,userid);
ResultSetrs=pstmt.executeQuery();
while(rs.next()){
v_count=rs.getString(1);
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
pstmt.close();
conn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
returnv_count;
}
(){
Contextctx=null;
try{
ctx=newInitialContext();
DataSourceds=(DataSource)ctx.lookup("jndiname");
conn=ds.getConnection();
}catch(Exceptione){
e.printStackTrace();
}
returnconn;
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringv_userid=request.getParameter("userid");
System.out.println(v_userid);
getConnection();
Stringv_count=getCount(v_userid);
response.setCharacterEncoding("UTF-8");
response.getWriter().write(v_count);
response.flushBuffer();
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
}
如果要前端能够访问到该servlet,需要将该servlet注册到web.xml文件中。需要在web.xml文件中添加以下内容
[html]viewplain
<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]viewplain
varmsg=$.ajax({
type:"post",
url:....+'/oaLoginLimitedServlet?userid='+$('#act').val(),
async:false
}).responseText;
‘伍’ java 使用ajax实现分页
用ajax分页,那么你的重点就不是Java了,
你需要掌握非常好的javascript,或者是js的类库(jquery,dojo)
后台的Java代码是和平常的分页逻辑是一样的
只是页面的代码不一样
以Jquery为例
假如这个是按下的连接
<a href="#" onclick="subpage(${xxx})">xxx</a>
//${}可以使EL表达式,或者是JSTL、OGNL,使用这个来动态确定分页的页码
function subpage(pagenum){
$.ajax({
url:"分页链接地址",
type:"POST",
data:"pagenum="+pagenum;
success:function(data){ //data是分页后的数据,推荐json形式
...这里是数据返回后对页面的响应代码
...也就是你页面的变动,在这个需要的是你的js功底来控制表格
...的变动,
}
});
}
‘陆’ JSP按钮用Ajax怎么调用Java方法
ajax是调用http请求的,不能直接调用java类中的某个方法,你需要先把这个方法通过servlet或struts发布成http服务,然后再用ajax来调用
‘柒’ 如何使用ajax调用java类
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 plain
<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 plain
var msg = $.ajax({
type: "post",
url: ....+'/oaLoginLimitedServlet?userid='+ $('#act').val(),
async:false
}).responseText;
https://..com/question/2201763852265627548.html
‘捌’ JAVA的ajax方法
先痛过jQuery 把所有要取的值获取到,这个应该懂吧。ajax 传值格式如下
$. ajax ({
type:提交方式
url :提交路劲,一般是对应的servlet
data:数据,字典形式(也就是你通过jq获取到的值,自己取健名)
dataType:‘json‘格式。
成功回调函数
错误回调函数。
})
‘玖’ 利用ajax获得用户输入值在java中计算并返回结果到页面
如果是简单的JSP页面,那必须要返回一次服务器,然后在由服务器处理了,反馈到页面上。
不知道你用的是什么,Jquery,或者是其他的模板;不太好给你发例子,还是网络就可以了;
AJAX教程,第一个例子就是
‘拾’ 如何在Java项目中使用Ajax
上面都太麻烦了只要写一个函数就可以
<body>
<SCRIPT LANGUAGE="JavaScript">
function check(){
var stuId = document.regForm.stuId.value;
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
xmlHttp.open("GET", "check.do?stuId="+stuId, true);
xmlHttp.onreadystatechange=function() {
if (xmlHttp.readyState==4) {
checkResult.innerHTML = xmlHttp.responseText;
}
else{
checkResult.innerHTML = "正在检测...";
}
}
xmlHttp.send();
}
</SCRIPT>
<form name="regForm">
请您输入学生学号:<input type="text" name="stuId" onblur="check()">
<div id="checkResult"></div><BR>
请您输入学生姓名:<input type="text" name="stuName"><BR>
<input type="button" value="提交按钮">
</form>
当stuId输入框失去焦点时执行javascript函数check()通过xmlHttp.open("GET", "check.do?stuId="+stuId, true);以get方式发送给check.do的servlet在servlet里用request获取传过去的stuId参数接下去就和一般的一样连数据库根据id,返回的结果checkResult.innerHTML = xmlHttp.responseText;会显示在div上,很简单