java:(json,ajax,path)

1.json:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP ‘index.jsp‘ starting page</title>

<script type="text/javascript">

    // JSON: javascript object notation(js的对象诠释)
    // JSON也是一个对象,首先json对象需要被{}包裹,里面的内容键值对对应(key : value),键值对和键值对用逗号(,)隔开,最后一个键值对一定不能加逗号(,)
    var testJson = {
        name : "zhangsan",
        age : 31,
        sex : "male"
    }
    var testJson2 = ‘{"name" : "zhangsan", "age" : 31, "sex" : "female"}‘; // json格式的字符串

    function testFunction() {
        var jsons = testJson;
        var jsons2 = testJson2;
        alert(jsons);
        alert(jsons2);
        alert(jsons.name);  //json也可以通过key来取value   Map转json json转Map

        //例1: 把json格式的字符串转换为json对象
        // 方法一:eval();
        /* eval("var test = "+testJson2);
        alert(test);
        alert(test.age); */
        // 方法二:parse();
        alert(JSON.parse(testJson2)); //如果使用JSON.parse()函数,就必须把单引号写在最外面‘{"name" : "zhangsan", "age" : 31, "sex" : "female"}‘,因为parse()函数遵循json格式,json默认不支持单引号

        //例2:把json对象转换为json格式的字符串
        // JSON.stringify()函数可以把json对象转换为json格式的字符串
        alert(JSON.stringify(testJson2));

    }
</script>

</head>

<body>

    <input type="button" value="触发" onclick="testFunction();" />

</body>
</html>

2.ajax:  

  又称为局部刷新
  Asynchronous Javascript And XML(异步的js和xml文档)
  是一种新的交互式技术
  一般用处:分页,三级联动...

 

  login:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP ‘login.jsp‘ starting page</title>

<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
    $(function() {
        $("#uname").on("blur", function() {
            var username = $("#uname").val();
            if (username != null && username != "") {
                // 获取到了用户输入的username的值

                // 以get的请求方式发送(我乐意!)
                /* $.get("user.sxt", "type=checkUsername&username=" + username, function(data) {
                    // 服务器端返回的数据
                    // data是形式参数,接收的是服务器端(servlet)返回回来的数据
                }); */

                // 以post的请求方式发送
                /* $.post("user.sxt", "type=checkUsername2&username="+username, function(data){

                }); */

                // 无论用post还是get
                /**
                    $.post/get("请求的地址(url)", "需要传递的参数", function(data){
                        // 服务器端向客户端响应的数据(json)
                    });
                */

                // 究极版本的ajax
                // ajax的终极版本,同样遵循json的格式,key : value为一个整体,每个key和value用:隔开,每一个键值对之间用逗号隔开,最后一个键值对不能有逗号
                /* $.ajax({
                    async : true, //(是否异步,默认为true)
                    data : {"type":"checkUsername", "username" : username}, // 客户端向服务器端发送的数据,类型为object
                    method : "get", // 请求方式(get/post)
                    //type和method是一样的,都是选择请求的方式,在jQuery1.9版本之前用type,之后用method
                    url : "user.sxt", // 客户端向服务器端发送数据的地址--->请求地址
                    success : function(data) { // 当成功响应以后,接收到的数据-->服务器端向客户端响应的数据
                        alert(data);// data服务器端向客户端响应的数据
                    }
                }); */

                // function(data)只能接收字符串
                /* $.get("user.sxt", "type=checkUsername&username=" + username, function(data) {
                    // 服务器端返回的数据
                    // data是形式参数,接收的是服务器端(servlet)返回回来的数据
                    alert(data);
                }); */

                // function(data)只能接收json对象
                $.getJSON("user.sxt", "type=checkUsername&username=" + username, function(data){
                    alert(data.username);
                });

            }
        });
    });
</script>

</head>

<body>

    用户名:
    <input type="text" name="username" id="uname" />

</body>
</html>

  

  UserServlet:

package cn.zzsxt.lee.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

import cn.zzsxt.lee.web.entity.User;

@WebServlet("/user.sxt")
public class UserServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        String method = request.getMethod().toLowerCase();
        System.out.println(method);
        String type = request.getParameter("type");
        if ("get".equals(method) && "checkUsername".equals(type)) {
            checkUsername(request, response);
        } else if("post".equals(method) && "checkUsername2".equals(type)) {
            checkUsername2(request, response);
        }

    }

    private void checkUsername2(HttpServletRequest request, HttpServletResponse response) {
        String username = request.getParameter("username");
        System.out.println("------------------------------"+username);
        // 从数据库中查询是否存在zhangsan这个用户名
    }

    private void checkUsername(HttpServletRequest request, HttpServletResponse response) throws IOException {

        String username = request.getParameter("username");
        System.out.println("------------------------------"+username);
        // 从数据库中查询是否存在zhangsan这个用户名
        User user = new User();
        user.setUsername(username);
        //response.getWriter().print(username+":天青色等烟雨,而我在等你");// 服务器向客户端响应的数据
        // 把user对象拆开,拼成一个json格式的字符串
        Gson gson = new Gson();
        String json = gson.toJson(user);
        response.getWriter().print(json);

        // response.getWriter().print(new Gson().toJson(user));
    }

}

3.path:

  UserServlet:

package cn.zzsxt.lee.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/user.sxt")
public class UserServlet extends HttpServlet {
    /**
     * 所有的servlet,凡是以/开头的路径,都定位到项目的根目录localhost:8080/项目名
     */
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("我是来处理用户请求的servlet,我被访问了");
        // 开始处理请求
        // 请求处理完毕,需要重定向
        response.sendRedirect(request.getContextPath()+"/b/bb/bb3.jsp");
    }

}

  Index:

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP ‘index.jsp‘ starting page</title>

</head>

<body>

    <a href="a/a.jsp">跳转a</a>
    <a href="a/aa/aa.jsp">跳转aa</a>

    <pre>
        web工程的WebRoot文件夹:称之为项目的根目录
        http://localhost:8080/zzsxt--->项目的根目录
        Java代码中src资源文件夹也称之为项目的根目录
        ../向上跳出一层

        相对路径:怕文件名发生改变
            以当前页面作为中心,向目标路径进行跳转

        绝对定位:怕项目名发生改变
            直接会定位到服务器的根目录
                localhost:8080就称之为服务器根目录
            每一次跳转都以服务器的根目录作为了中心:localhost:8080
            如果部署名发生了改变,就以服务器(tomcat)的webapps文件夹下的项目名为准

        以后在实际开发中,所有的路径跳转都需要使用绝对定位

   而且servelt跳转jsp页面的时候
            如果是重定向:response.sendRedirect(request.getContextPath+"/index.jsp");就以这个路径跳转
            如果是请求转发的情况下:request.getRequestDispatcher("/index.jsp").forward(request, response);就以这个路径开始跳转
    </pre>

</body>
</html>

4.Demo:

  

时间: 2024-10-28 15:36:30

java:(json,ajax,path)的相关文章

[Java 泥水匠] Java Components 之一:Java String (肯定有你不懂的)

作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 1.1 前言 说起String,大家最熟悉不过了.我也是那么说过,但是仿佛这熟悉的里面也有很多细节,或者是我们没掌握的东西.往往有很多旧东西里面爆出很多光点.比如,作者泥瓦匠近期在冬天的牛仔裤里面搜出了一张100现金(不宜乐乎).回到正题,我们下面以下几点讲下String.分两个部分: 基础部分:(JDK源码 文档) 1.2 你好 Str

深入了解三种针对文件(JSON、XML与INI)的配置源

深入了解三种针对文件(JSON.XML与INI)的配置源 物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigurationSource和IniConfigurationSource. [ 本文已经同步到<ASP.NET Core框架揭秘>之中] 目录一.FileConfigurationSource  & FileConfigurationPr

Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)

Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: ? json模块 : ? 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串.(比如Python的一个列表[1, 2, 3]利用json转化成特殊的字符串,然后在编码成bytes发送给php的开发者,php的开发者就可以解码成特殊的字符串,然后在反解成原数组(列表): [1, 2, 3]) ? json序列化只支持部分Python数据结构:dict,l

解决 sqlalchemy 报错:(1193, &quot;Unknown system variable &#39;tx_isolation&#39;&quot;)

1出现此报错的原因是使用的mysql8.0 以前用的是:tx_isolation 现在用是: transaction_isolation a.通过升级 sqlalchemy 的方法可以解决此问题, pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade sqlalchemy --ignore-installed(亲测有效————) b.通过降低,mysql 版本来解决这个问题. 解决 sqlalchemy 报错:(119

黄聪:说说JSON和JSONP,也许你会豁然开朗(转)

前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过HTML5的WebSocket也可以实现与服务器的通讯和服务端推功能,但这两种方式都有其局限性,前者需要PhoneGap支持,后者要求用户设备必须支持WebSocket,因此都不能算是ST2的原生解决方案,原生的只有AJAX. 说到AJAX就会不可避免的面临两个问题

java:(九大内置对象,计算服务器访问次数,filter过滤器)

1.九大内置对象: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page isErrorPage="true" %><!-- 默认是隐藏的false --> <%@ page session="true" %><!-- session默认是显示的true

json和jsonp(json是目的,jsonp是手段)

自己理解:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议.我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的"暗号",而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式. ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本. 本文转载自IoveC的博客 链接地址如下:http://www.cn

还在用Json完成Ajax,改用Beetl吧(上)

浏览器通过AJAX,服务器返回json数据,无刷新的更新视图的这种模式在WEB开发中我已经用了很长时间了,记得最早是08年的时候用的,当时传递JSON数据让我眼前一亮.这种方式是只需要采用工具包将模型序列化成json格式就行,js UI库总能识别这种格式,轻易的生成新的视图片段. 然而时过境迁.这种传递AJAX JSON方式渐渐有了新的问题. JSON序列化库无法完美的序列化模型对象.序列化库总期望输入一个Object,但实际上前端有可能需要多个Object,这样,你不得不再创建一个序列化专用的

Java:反射的常用用法,

常用反射方法: package reflection; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; public class testReflection { public static void main(String[] args) throws ClassNotFoun