myAjax(隐藏帧技术)

这里写图片描述

ajax属于浏览器的点上通讯,即它不是浏览器的整个页面与服务器通讯,而是浏览器页面的一部分。它能达到整个页面原来的信息不被冲掉,而且能及时的增加提示信息。这一点在实际项目中有应用,如注册信息的实时提示等。今天主要是用底层方式模拟ajax。

index.jsp中的主要代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>演示jsp技术</title>
    <script type="text/javascript">
        function copyVal(obj){
            if(obj.name=="name"){
                valName.value=obj.value;
                valName.name = name2;
            }else if(obj.name=="pwd"){
                valPwd = obj.value;
                valName.name = pwd2;
            }
            form2.submit();
        }

        function info(str){
            msgName.innerHTML=str;
        }
    </script>
  </head>

  <body>
    <h3>演示myAjax技术</h3>
    <!-- 真正的表单数据,label标签用于最后在组件后增加消息提示 -->
    <form action="/jspDemo2/servlet/LoginServlet" method="post">
        账号:<input type="text" name="name" onblur="copyVal(this)" />
        <label id="msgName"></label><br/>
        密码:<input type="password" name="pwd" onblur="copyVal(this)" />
        <label id="msgPwd"></label><br/>
        <input type="submit" value="登录"/>
    </form>

    <!-- iframe子页面,servlet信息真正反馈的地方。隐藏iframe -->
    <iframe name="dataFrame" style="display: none"></iframe>

    <!-- 因为form组件一提交,原来没填完的数据会被冲掉,所以得弄一个拷贝表单,保证验证的同时原来组件内容不懂
        值得一提的是,拷贝表单需指定一个target属性,告诉浏览器将内容填充到子页面
      -->
    <form action="/jspDemo2/servlet/LoginServlet" method="post" id="form2" target="dataFrame">
        <input type="hidden" id="valName"/>
    </form>

  </body>
</html>

servlet的主要代码:

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        String singleName = request.getParameter("name2");
        String singlePwd = request.getParameter("pwd2");

        验证.............
        request.setAttribute("msg", str);
        request.getRequestDispatcher("/jsps/regResult.jsp").forward(request, response);

        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

regResult.jsp的主要代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>结果页面</title>
  </head>

  <body>
    <h3>这是结果页面</h3>
    ${msg }

    <script type="text/javascript">
        var info = '<%=request.getAttribute("msg") %>';
        parent.info(info);
    </script>
  </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值