那年学过的web后端笔记

Http协议

** B/S**


Servlet

Servlet编写

案例: 
public class Servlet1 extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter pw = response.getWriter();
        pw.append("<h1>我们的第一个servlet</h1>");
    }
}

xml中配置Servlet

步骤: 
1.  将Servlet 配置到web.xml中, 并起别名
    <servlet>
        <servlet-name>别名</servlet-name>
        <servlet-class>类的全称(包名.类名)</servlet-class>
    </servlet>
2.  使用Servlet别名, 映射一个或多个网址
    <servlet-mapping>
        <servlet-name>别名</servlet-name>
        <url-pattern>/映射地址</url-pattern>
    </servlet-mapping>  
    .....
    <servlet-mapping>
        <servlet-name>别名</servlet-name>
        <url-pattern>/映射地址2</url-pattern>
    </servlet-mapping>  

    映射完毕后, 访问此servlet的方式: 
        http://ip地址:端口号/项目名/映射地址
案例: 
    <servlet>
        <servlet-name>s1</servlet-name>
        <servlet-class>cn.xdl.demo.Servlet1</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>s1</servlet-name>
        <url-pattern>/666.php</url-pattern>
      </servlet-mapping>

Servlet生命周期

生命周期 在Servlet中, 存在三个方法的体现:

  • init方法 : 当此方法被调用时, 表示对象已创建, 且初始化完成! 我们常在此方法中初始化 一些资源 !
  • service方法 : 当被调用时, 表示来了一个客户端的请求, 此方法每次都执行在一个新的线程中 !
  • destroy方法: 当此方法被调用时,表示Servlet即将被销毁 ! 我们常在此方法中 释放资源 !

乱码问题

请求时乱码

方式一:可适用于所有问题 引起的乱码

原理:  将乱码的文字, 重新变为字节数组, 再按照我们支持的编码重新组装 !
步骤1.    将接收到的文字, 按照ISO-8859-1编码打碎成字节数组
    byte[] b = 乱码文字.getBytes("ISO-8859-1");
步骤2.    将打碎后的字节数组, 按照UTF-8组装
    String text = new String(b,"UTF-8");
简化: String text = new String(乱码文字.getBytes("ISO-8859-1"),"UTF-8");

方式二: 只能解决POST乱码问题, 用于在获取数据之前, 设置请求体的编码格式

request.setCharacterEncoding("UTF-8");

响应时乱码

在处理响应时数据时, 无论时get/post请求, 方式都一致 ! 一定要在获取输出流之前!
方式一:

设置网页内容类型 , 并设置网页编码 , 不建议使用
response.setContentType("text/html;charset=utf-8"); 

方式二:

设置文字编码为UTF-8
response.setCharacterEncoding("UTF-8");

请求转发和重定向

Cookie和Session

Cookie

常用方法:

如何将Cookie设置到响应的消息头: 
    response.addCookie(Cookie cookie);
如何从请求的消息头中获取Cookie:
因为服务器可以给浏览器多个Cookie, 所以得到的是一个Cookie数组
Cookie[] cookies = request.getCookies();
Session

常用方法:
(session是JSP四大域对象之一)

  1. 设置属性: setAttribute(String key,Object value);
  2. 获取属性: Object value = getAttribute(String key);
  3. 删除属性: removeAttribute(String key);
  4. 销毁Session: invalidate();
设置Session存活时长:

方式一: 修改所有的session默认时长

修改tomcat目录下的conf文件夹下的 web.xml
<session-config>
    <session-timeout>数字类型:  分钟</session-timeout>
</session-config>

方式二:修改单个session存活时长:

使用session对象, 调用setMaxInactiveInterval(int 秒);

JSP

JSP即是Java Server Pages的简称

JSP三大指令

page指令

用来快速的描述JSP页面的信息, 用来对JSP页面进行配置:
常用属性:

<%@page language=“script language”|--   语言 ,一般为java
    extends=“className”  |--可以指定JSP在生成Java文件时, 文件所继承的Java类
    *import=“importList”  |--导包列表 ,可以在参数中导入多个包, 多个包之间使用逗号隔开
    buffer=“none|kb size”|   --none:不缓冲,默认8k
    session=“true|false” |   --是否可以使用session,默认true
    autoFlush=“true|false”  --缓冲器是否自动清除,默认true
    isThreadSafe=“true|false”|--当前JSP代码执行区是否为线程安全的
    *errorPage=“errorPageUrl” |--指定产生错误后, 处理错误的页面
    *isErrorPage=“true|false” |--表示当前页面是否为处理错误的页面
    contentType=“contentTyepInfo”|--描述网页的内容类型 和 编码格式
%>

导包案例:

<%@page import="java.util.HashMap,java.util.ArrayList" %>

错误页面处理:

在产生错误的页面中加入page指令, errorPage属性中指定错误处理页面 
在错误处理的jsp文件中, 指定isErrorPage为true , 可以直接操作一个叫做exception的对象

在操作exception时, 注意有可能为null(当用户直接访问错误页面时)
处理项目中的错误码

使用上述的page指令, 无法处理404错误, 只有当程序出现BUG时, 才可以处理异常 !
想要处理404异常, 需要告知tomcat , 当在本项目中用户访问出现404以后, 跳转到指定页面:

**在项目的web.xml中添加如下节点: **

<error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
</error-page>
include指令

用来在一个JSP文件中, 引入另一个JSP程序 或 HTML文件 !
格式:

<%@include file="文件路径" %>

JSP文件 在引擎转换时, 会将引入的文件代码复制粘贴到include指令的位置, 然后统一进行转换与编译操作(转换为一个Java文件)!

include动作

用于在一个JSP文件中, 引入另一个JSP程序 或 HTML文件 !
格式:

<jsp:include page="文件地址" flush="true"/>

include动作引入的JSP文件 , 在转换为.java的时候, 是单独转换的 ,只有在代码执行到include动作时, 才会编译被引入的文件, 动态载入!

taglib指令

JSP内置对象

隐含对象类型作用
outJSPWriter用来向客户端进行字符的响应
requestHttpServletRequest请求对象, 包含Http协议中请求数据
responseHttpServletResponse响应对象
sessionHttpSession会话对象, 用来在一次会话中对单个用户 进行数据的共享与会话的跟踪
applicationServletContextServlet上下文 , 每个应用在启动时会创建且只创建一个对象, 在应用关闭时,对象被释放. 用来在当前项目中Servlet之间进行数据的共享与通信
pageContextPageContext页面的上下文, 用于在当前页面进行数据的共享 , 在设计9大内置对象时, 将所有其他内置对象封装在了PageContext中
configServletConfig配置对象
pageObject当前页面本身
exceptionThrowable当page指令中 isErrorPage为true时 才会产生此对象 , 用于收集其他页面产生的异常信息

四大域对象

EL和JSTL

Filter&Listener组件


在web.xml文件中配置Filter组件和Servlet配置基本一致
不使用注解在web.xml中配置Listener

<listener >
     <listener-class>包名 + 类名</listener-class>
</listener>

AJAX

AJAX优点

作用:(1)异步请求和响应处理(2)页面局部刷新处理
优点:

  • 减少页面整体刷新,提升用户体验(局部刷新)
  • 减少交互的数据量,提升程序性能
  • 以异步模式处理请求,较少用户操作等待时间,增 强了用户的操作连续性(异步交互)

AJAX技术应用步骤

  • 创建XMLHttpRequest对象

  • 调用open方法,创建请求

  • 设定onreadystatechange事件函数,用于 响应处理

  • 调用send方法发送请求

      // 发送请求之前的准备 
      对象.open(请求方式,请求路径,是否异步)  如    xhr.open('get','getDate.do',true);
      // 注册请求处理函数 
      xhr.onreadystatechange=function(){
      // 请求响应完成  并且  http 状态 是 200
      	if(xhr.readyState == 4 && xhr.status==200){
      // 获取请求响应的数据
      		var text = xhr.responseText;
      	} 
      };  
      // 发送请求 
      xhr.send(null); 
    

AJAX+Json应用

Json
  • JSON (JavaScript Object Notation)是 JavaScript语言中的一种对象类型。
  • JSON的好处是易于阅读和JavaScript解析
  • 当客户端和服务器端交互大量数据时,使用JSON 格式传输可以简化客户端和服务器端的编程

Jquery和AJAX

jQuery对ajax请求的创建、发送和响应都进 行了相应的封装,同时也考虑 了浏览器的兼容性问题

$.ajax()函数
$.ajax({     
	url :请求 地址,     
	type :请求 方式,     
	async :默认 true  false 表示同步 请求,     
	data :请求 参数,     
	dataType :服务器返回的 数据类型,      
	success : 服务器 正常 处理时执行的 回调函 数,     
	error : 服务器处理出错时执行的 回调函 数, 
}); 
$.get()函数
$.get(url,data,function,datatype)  
	url:请求地址  
	data:请求参数  
	dataType:服务器返回的数据类型  
	function:服务器正常处理时执行的回调函数 
$.post()函数
$.post(url,data,function,datatype)  
 	url:请求地址  
 	data:请求参数  
 	dataType:服务器返回的数据类型  
 	function:服务器正常处理时执行的回调函数 
$.getJSON函数
$.getJSON(url,data,function)  
	url:请求地址  
	data:请求参数  
	function:服务器正常处理时执行的回调函数 
load()函数
$obj.load(url,data,function)  
url:请求地址  
data:请求参数  
function:ajax请求处理完毕后执行的回调函数 功能:利用ajax发送一个url请求,将返回结果填充到$obj元素中 (常用于页面引入)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值