zoukankan      html  css  js  c++  java
  • 前后台数据交换的几种方式:

    前后台数据交换的几种方式:

    1.利用cookie对象

    Cookie是服务器保存在客户端中的一小段数据信息。使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置。一般不赞成使用Cookie。

    (1)后台代码

    Cookie cookie=new Cookie("name", "hello");

    response.addCookie(cookie);

    (2)前台代码

    Cookie[] cookies=request.getCookies();

    for(int i=0;i<cookies.length;i++){

    if(cookies[i].getName().toString().equals("name")){

    out.print(cookies[i].getValue());

    }

    }

    2.利用session对象

    session对象表示特定会话session的用户数据。客户第一次访问支持session的JSP网页,服务器会创建一个session对象记录客户的信息。当客户访问同一网站的不同网页时,仍处于同一个session中。

    (1)后台代码

    request.getSession().setAttribute("name", name);

    request.getSession().setMaxInactiveInterval(2);

    response.sendRedirect("welcome.jsp");

    (2)前台代码(jsp页面)

    Object user=request.getSession().getAttribute("name");

    3.利用request重定向,设置setAttribute

    (1)后台代码

    request.setAttribute("name", "cute");

    request.getRequestDispatcher("welcome.jsp").forward(request, response); //网址不会改变

    PS:如果后台使用的转发代码为 response.sendRedirect("welcome.jsp"); //网址变为welcome.jsp

    则request设置的参数无效,因为已经切换到另一个请求了,request参数的有效期为本次请求。

    (2)前台代码

    String name=request.getAttribute("name").toString();

    4.利用Ajax进行异步数据请求(得到的数据可以以json或xml格式返回,便于处理)

    (1)后台代码案例(运用servlet传输数据)

    public class TestServlet extends HttpServlet {

    public TestServlet() {

    super();

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    doPost(request, response);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    String data="[{"name":"apple","price":23},

    {"name":"banana","price":12},

    {"name":"orange","price":8}]";

    out.write(data);

    out.flush();

    out.close();

    }

    public void init() throws ServletException {

    // Put your code here

    }

    }

    (2).前台js请求处理数据代码

    function createXMLHttpRequest(){

    var xmlrequest;

    if(window.XMLHttpRequest){

    xmlrequest=new XMLHttpRequest();

    }else if(window.ActiveXObject){

    try{

    xmlrequest=new ActiveXObject("Msxm12.XMLHTTP");

    }catch(e){

    try{

    xmlrequest=new ActiveXObject("Microsoft.XMLHTTP");

    }catch(e){

    xmlrequest="";

    }

    }

    }

    return xmlrequest;

    }

    //获取数据的函数

    function change(){

    var xmlrequest=createXMLHttpRequest();

    xmlrequest.open("POST","TestServlet",true);

    xmlrequest.onreadystatechange=function(){

    if(xmlrequest.readyState==4&&xmlrequest.status==200){

    var data=JSON.parse(xmlrequest.responseText);

    var content="<table border=1>";

    for(var i=0;i<data.length;i++){

    content+="<tr>";

    for(o in data[i]){

    content+="<td>"+data[i][o]+"</td>";

    }

    content+="</tr>";

    }

    content+="</table>";

    document.getElementById("test").innerHTML=content;

    }

    };

    xmlrequest.send();

    }

    https://www.tongbiao.xyz/
  • 相关阅读:
    Linux 02
    Linux 01
    React 函数式组件的 Ref 和子组件访问(useImperativeHandle)
    排序算法之 Java插入排序算法
    排序算法之 Java选择排序算法
    排序算法之 Java冒泡算法
    类加载的过程---验证和准备
    类加载的过程---加载
    mysql explain 查询处理的结果详解
    springboot整合分布式缓存hazelCast
  • 原文地址:https://www.cnblogs.com/tongbiao/p/6829579.html
Copyright © 2011-2022 走看看