【JavaWeb】2.JSP+JSON+Ajax

专栏目录

JSP

1. 脚本

1.1 声明脚本—写在 <%! ... %>

1.1.1 声明属性
<%!
	private Integer id;
	private String name;
	private static Map<String,Object> map;
%>
1.1.2 声明静态代码块
<%!
	static{
		map=new HashMap<String,Object>();
		map.put("key1","value1");
	}
%>
1.1.3 声明方法
<%!
	public int abc(){
		return 12;
	}
%>

1.1.4 声明内部类
<%!
	public static class A{
		private int id;
		private String name;
	}
%>

1.2 表达式脚本—写在 <%= ...%>中,不能以’;'结束

1.2.1 输出整型\浮点型\字符串\对象
<%= 12 %>
<%= 11.1 %>
<%= "Hello" %>
<%= map %>

1.3 代码脚本—写在 <% ... %>

1.3.1 if语句
<%
    int i=12;
    if(i==12){
        System.out.println("True");
    }else{
        System.out.println("False");
    }
%>
1.3.2 for语句
<%
    for(int j=0;j<10;j++){
        System.out.println(j);
    }
%>
1.3.3 jspService方法
<%
    String username = request.getParameter("username");
    System.out.println("Username 参数: " + username);
%>

2. 注释

2.1 html

<!-- html注释 -->

会被翻译到java源代码中,在_jspService()方法中以outwrite输出到客户端

2.2 Java

<%
    //单行java注释
    /*
    多行Java注释
    */
%>

会被翻译到Java源代码中

2.3 jsp注释

<%-- 这是jsp注释 --%>

可以注释掉jsp中所有代码

3. 九大内置对象

对象说明范围
application域对象,ServletContext对象,web工程范围有效最大
session域对象,会话对象,一次会话有效第二
request域对象,一次请求内disan第三
pageContext域对象,jsp上下文对象,在当前jsp页面范围内有效最小
response响应对象
configServletConfig对象
outjsp输出流对象
page当前jsp对象
exception显示异常信息

4. 常用标签

4.1 静态包含

<%@include file="" %>标签

不会翻译被包含的jsp页面

把被包含的jsp页面的代码拷贝到包含的位置进行输出

4.2 动态包含

<jsp:include page=""></jsp:include>标签

会把被包含的jsp页面翻译

**还可以传递参数

<jsp:include page="">   
    <jsp:param name="username" value="bbj"/>
</jsp:include>

4.3 标签-转发

<jsp:forward page=""></jsp:forward>

5. Listener监听器–三大组件之一

5.1 ServletContextListener

监听ServletContext对象的创建和销毁

创建:contextInitialized()

销毁:contextDestroyed()

  1. 编写监听器类
  2. 重写两个方法
  3. 在web.xml中部署
    <listener>
        <listener-clss>uri</listener-class>
    </listener>
    

6. 文件上传

  1. form标签,method为post
  2. form标签的encType必须为multiparty/form-data
  3. form必须用input type=file上传
  4. 在服务器编写接受处理代码(Servlet)

和数据IO流相关Stream

可以使用已封装的jar包

要有buffer[]缓冲区

重点要设置响应头,Content-Disposition,attachment(附件),filename(文件名)----[URLencode编码]\

** 通过User-Agent请求头来获取所使用的浏览器是什么,火狐用base64,否则用URLencode

7. Cookie

服务器通知客户端保存键值对

7.1 创建

  1. Cookie对象类,构造(key,value)
  2. 通过response通知客户端,response.addCookie

7.2 获取

  1. 使用request.getCookies
  2. 查找单个只能遍历

7.3 修改

  1. 新建值—setCookie会修改

7.4 生命控制

setMaxAge

  • 正数-设置Cookie最大生存时间
  • 负数-不保存,退出即清除
  • 0-立即清除

7.5 有效路径

path属性可有效过滤哪些Cookie可以发送给服务器,哪些不发

8. Session—会话

接口(HTTPSession) 维护客户端和服务器之间关联的技术

保存在服务器端

8.1 创建 && 获取

request.getSession

  • 第一次调用是创建
  • 第二次是获取

isNew — 是否新建

getID — 得到Session唯一识别号

8.2 存取

request.getSession.set/get_Attribute(key,value)

8.3 生命周期

  • setMaxInactiveInterval — 设置Session超时时间,超过时常就销毁
    • 默认超时时长: 1800秒 / 30分钟
    • 客户端发送服务器两次间隔的时长
    • 正数—超时时长,负数—永不超时
  • getMaxInactiveInterval — 获取超时时间
  • invalidate() 使对象会话无效

9. Google验证码

  1. 导入jar包
  2. 在web.xml配置类[kaptcha.jpg]
  3. 使用img导入验证码图片
  4. request.getSession().getAttribute(“[KAPTCHA_SESSION_KEY]”);
  5. 删除验证码—request.getSession().removeAttribute(“[KAPTCHA_SESSION_KEY]”);
  6. 获取表单项,进行比较操作等等

10. Filter—过滤器

拦截请求,过滤响应

应用场景:权限检查,日记操作,事务管理 …

创建类实现Filter接口(javax)

doFilter 方法,用于拦截请求

  • Servletrequest -->
  • Servletresponse -->
  • filterCharn --> .doFilter(request,response) !!! 程序继续执行

XML

<filter>
  <filter-name>别名</filter-name>
  <filter-class>filter全-类名</filter-class>
</filter>
<filter-mapping>
  <filter-name>为哪个filter使用</filter-name>
  <url-pattern>拦截路径</url-pattern>
</filter-mapping>

10.1 生命周期

  1. 构造方法
  2. init初始化方法

web服务器启动时执行

  1. doFilter过滤方法

拦截到请求执行

  1. destroy销毁方法

停止web工程时执行

10.2 FilterConfig

配置文件类,Tomcat每次创建Filter都会同时创建FilterConfig类

作用:

  1. 获取Filter的名称 filter-name
  2. 获取Filter中配置的init-param参数
  3. 获取ServletContext对象

10.3 多Filter

成回环状

Filter1.前置->doFilter->Filter1.前置->doFilter->Sources->Filter1.后置->Filter1.后置

在同一线程内,公用同一个request对象

顺序按web.xml配置上下顺序

10.4 拦截路径

  1. 精确匹配—精确到文件,即 http://ip:port/projectPath/file.fileType
  2. 目录匹配—到目标目录,即 http://ip:port/projectPath/directory/*
  3. 后缀名匹配—对于同一种文件,即 *.fileType

10.5 ThreadLocal< T >

解决多线程数据安全问题

为当前线程关联数据,且只能一对一关联

定义时通常为静态static

10.6 Connection连接数据库TreadLocal实现事务管理

  • setAutoCommit()手动管理事务
  • commitAndClose()提交并关闭
  • rollbackAndClose()回滚并关闭

11. Json

JavaScript Object Notation,轻量级(xml)数据交换格式(C/S)

11.1 JavaScript

定义: 由键值对组成,并且由 {} 包围,每个键由 ‘’ ,键值对用 : ,多组键值对用 , 分割

var jsonObj={
	key1:value1
}

访问: Object.keyName

方法:

对象—操作数据域

字符串—客户端和服务器交互

  1. JSON.stringify() json对象转化为字符串
  2. JSON.parse() json字符串转化为对象

11.2 Java

  1. JavaBean和json

Google提供的gson.jar

—> Gson类的toJson

—> Gson类的fromJson(json字符串,bean对象.class)

  1. List和json

Google提供的gson.jar

—> Gson类的toJson

—> Gson类的fromJson(json字符串,{TypeToken< T >})

===> typeToken用于json字符串转换成具体的类

  1. map和json

Google提供的gson.jar

—> Gson类的toJson

—> Gson类的fromJson(json字符串,new TypeToken< ObjectType >(){}.getType())

===> 使用匿名类

12. Ajax

Asysnchronous JavaScrip And XML

异步请求

12.1 原生请求举例

  //1. 创建XMLHttpRequest
  var xmlhttp = new XMLHttpRequest();
  readState{
    0:请求未初始化
    1:服务器连接已建立
    2:请求已接收
    3:请求处理中
    4:请求已完成且响应已就绪
  }
  status{
    200:"OK"
    404:未找到页面
  }
  //1. 调用open方法设置请求参数
  xmlhttp.open("GET","url",true/false[是否异步]);
  //4. 获取相应
  xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
    var text=JSON.parse(xmlhttp.responseText); //将响应的String转为对象
  }
  //3. 调用send方法发送
  xmlhttp.send();

12.2 特点

  1. 局部更新HTML —> 浏览器地址栏没有变化 // 不会舍弃浏览器原本内容

  2. 异步

12.3 jQuery-Ajax

12.3.1 $.Ajax方法
  • url 请求地址
  • type 请求类型
  • data 发送给服务器的数据
    • name=value&key=value
    • {key:value}
  • success 请求成功,响应回调
  • dataType 服务器返回类型
    • text 纯文本
    • xml xml数据
    • json json对象
  $.ajax({
    url:"",
    type:"GET",
    data:"action=jQueryAjax",
    success:function(msg){

    } ,
    dataType:"text/xml/json"
    })
12.3.2 $.get && $.post
  • url 请求地址
  • data 发送给服务器的数据
    • name=value&key=value
    • {key:value}
  • callback 回调函数
  • type 服务器返回类型
    • text 纯文本
    • xml xml数据
    • json json对象
  $.get/post("url","data:action=jQueryAjax",callback.function(msg){

    } ,"text/xml/json")
12.3.3 $.getJson

Get请求返回Json数据

  • url 请求地址
  • data 发送给服务器的数据
    • name=value&key=value
    • {key:value}
  • callback 回调函数
  $.getJson("url","data:action=jQueryAjax",callback.function(msg){

    })
  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值