最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Servlet3.0+JS进行Ajax交互

来源:动视网 责编:小采 时间:2020-11-27 19:36:49
文档

Servlet3.0+JS进行Ajax交互

Servlet3.0+JS进行Ajax交互:这次给大家带来Servlet3.0+JS进行Ajax交互,Servlet3.0+JS进行Ajax交互的注意事项有哪些,下面就是实战案例,一起来看一下。虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。Eclipse
推荐度:
导读Servlet3.0+JS进行Ajax交互:这次给大家带来Servlet3.0+JS进行Ajax交互,Servlet3.0+JS进行Ajax交互的注意事项有哪些,下面就是实战案例,一起来看一下。虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。Eclipse


这次给大家带来Servlet3.0+JS进行Ajax交互,Servlet3.0+JS进行Ajax交互的注意事项有哪些,下面就是实战案例,一起来看一下。

虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。

Eclipse for javaee注意把做好的工程挂在Tomcat上,才运行Tomcat。

本工程除了JSP必须的Servlet包以外,无须引入其它东西。其实想直接用一个JSP页面完成这个工程的,但是现在搞JSP的,基本上没有人直接在.jsp文件中写东西了吧?后台动作都扔到.java里面了。

一、基本目标

把前台js.html输入框输入的东西,传递到后台名称为ajaxRequest,地址/ajaxRequest的Servlet.java。Servlet.java后台再返回相应的信息给前台js.html,js.html不刷新无跳转,即时响应。

二、基本思想

由于是Servlet3.0,可以采用注解的方式写Servlet,web.xml不用写任何东西,直接让Eclipse生成

里面只需留下如下内容:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns="http://java.sun.com/xml/ns/javaee" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
 version="3.0"> 
</web-app>

三、制作过程

1、首先写Servlet.java与js.html哪个都没所谓,反正Ajax交互中,这两个是一体的,不可以割裂。

先看js.html,HTML布局部分很简单,甚至表单都没有,仅有两个输入框。

然后创建Ajax对象XMLHttpRequest的时候,注意不要使用XMLHttpRequest这个关键字,作为Ajax对象XMLHttpRequest的命名,否则一些浏览器处理不了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Js</title> 
</head> 
 
<body> 
 <input type="text" id="param1" /> 
 <input type="text" id="param2" /> 
 <button onclick="ajax()">Go!</button> 
</body> 
</html> 
<script> 
 //创建Ajax对象,不同浏览器有不同的创建方法,其实本函数就是一个简单的new语句而已。 
 function createXMLHttpRequest() { 
 var XMLHttpRequest1; 
 if (window.XMLHttpRequest) { 
 XMLHttpRequest1 = new XMLHttpRequest(); 
 } else if (window.ActiveXObject) { 
 try { 
 XMLHttpRequest1 = new ActiveXObject("Msxml2.XMLHTTP"); 
 } catch (e) { 
 XMLHttpRequest1 = new ActiveXObject("Microsoft.XMLHTTP"); 
 } 
 } 
 return XMLHttpRequest1; 
 } 
 function ajax() { 
 //param1与param2就是用户在输入框的两个参数 
 var param1=document.getElementById("param1").value; 
 var param2=document.getElementById("param2").value; 
 var XMLHttpRequest1 = createXMLHttpRequest(); 
 //指明相应页面 
 var url = "./ajaxRequest"; 
 XMLHttpRequest1.open("POST", url, true); 
 //这里没法解释,你所有JavaScript的请求头都这样写就对了,不会乱码 
 XMLHttpRequest1.setRequestHeader("Content-Type", 
 "application/x-www-form-urlencoded"); 
 //对于ajaxRequest,本js.html将会传递param1与param2给你。 
 XMLHttpRequest1.send("param1=" + param1 + "?m2=" + param2); 
 //对于返回结果怎么处理的问题 
 XMLHttpRequest1.onreadystatechange = function() { 
 //这个4代表已经发送完毕之后 
 if (XMLHttpRequest1.readyState == 4) { 
 //200代表正确收到了返回结果 
 if (XMLHttpRequest1.status == 200) { 
 //弹出返回结果 
 alert(XMLHttpRequest1.responseText); 
 } else { 
 //如果不能正常接受结果,你肯定是断网,或者我的服务器关掉了。 
 alert("网络连接中断!"); 
 } 
 } 
 }; 
 } 
</script>

2、之后是Servlet.java,其实doGet与doPost都是在页面上打印东西,但是采取了这种不同的形式。PrintStream是以前JDK的输出流,PrintWriter貌似是JDK1.4之后的输出流。不过这部分太简单了,输入输出流,都是Java的必修课吧?
js.html传param1与param2给此Servlet.java之后,等待这个Servlet.java打印出相应的东西,然后在前台直接通过XMLHttpRequest1.responseText变量读取出来。

package jsServletAjax; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import javax.servlet.annotation.*; 
 
//说明这个Servlet是没有序列号的 
@SuppressWarnings("serial") 
//说明这个Servlet的名称是ajaxRequest,其地址是/ajaxRequest 
//这与在web.xml中设置是一样的 
@WebServlet(name = "ajaxRequest", urlPatterns = { "/ajaxRequest" }) 
public class Servlet extends HttpServlet { 
 //放置用户之间通过直接在浏览器输入地址访问这个servlet 
 protected void doGet(HttpServletRequest request, 
 HttpServletResponse response) throws ServletException, IOException { 
 PrintStream out = new PrintStream(response.getOutputStream()); 
 response.setContentType("text/html;charSet=utf-8"); 
 out.print("请正常打开此页"); 
 } 
 
 protected void doPost(HttpServletRequest request, 
 HttpServletResponse response) throws ServletException, IOException { 
 response.setContentType("text/html; charset=utf-8"); 
 PrintWriter pw = response.getWriter(); 
 request.setCharacterEncoding("utf-8"); 
 String param1=request.getParameter("param1"); 
 String param2=request.getParameter("param2"); 
 pw.print("前台传来了参数:param1="+param1+",param2="+param2); 
 pw.flush(); 
 pw.close(); 
 } 
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

使用vue实现树形菜单栏功能

preload()函数与图片上传使用

文档

Servlet3.0+JS进行Ajax交互

Servlet3.0+JS进行Ajax交互:这次给大家带来Servlet3.0+JS进行Ajax交互,Servlet3.0+JS进行Ajax交互的注意事项有哪些,下面就是实战案例,一起来看一下。虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。Eclipse
推荐度:
标签: js 进行 3.0
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top