您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Servlet3.0与JS通过Ajax交互实例详解

2025/2/11 9:05:06发布31次查看
这次给大家带来servlet3.0与js通过ajax交互实例详解,servlet3.0与js通过ajax交互的注意事项有哪些,下面就是实战案例,一起来看一下。
对于很多人来说应该很简单。不过还是写写,方便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();    }   }
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
nodejs+express实现文件上传案例详解
webpack.config.js参数使用案例
以上就是servlet3.0与js通过ajax交互实例详解的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product